Vote utilisateur: 0 / 5

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives

With Excel, I had always found that there was a crual leak with functions : no count distinct !

A simple user function could help to fill the gap.

 

Here is the code :

Function NbValUniques(laPlage As Range)
Dim ValeursUniques As New Collection
On Error Resume Next
For Each cell In laPlage
ValeursUniques.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0
NbValUniques = ValeursUniques.Count
End Function

You just have to call the function like any other function from a cell and define the range that you would like to count :

 

Commentaire (0) Clics: 3393

Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives

Les calculs matriciels dans excel permettent de rendre cohérents certains calculs. En effet plutot que de recopier les formules sur plusieurs cellules, les formules matricielles s'appliquent à toute une plage appelées plage matricielle.

Le mécanisme des formules matricielles est différent de celui des formules de base :

  • Les formules matricielles sont caractérisées par les caractères accolades "{}"
  • Le calcul ou rendu des données est affiché par excel après que les touches CTRL+MAJ+ENTREE soient utilisées pour valider le calcul.

Commentaire (0) Clics: 8096

Vote utilisateur: 4 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles inactives

Définition du result_cache

Une nouvelle fonctionnalité de la version 11g d'Oracle est l'introduction du cache de résultat ou "Result Cache". Ce cache est différent du cache de block déja présent ou db_cache/SGA. Il s'agit d'un cache en base de données coté base de données pour les jeux de données renvoyés par les requêtes ou des sous-requêtes.

Le cache de résultat est intégré dans le pool partagé (shared pool), il est utilisé par toutes les sessions sauf s'il est considéré comme invalide. L'invalidité d'un cache de résultat est déclaré lorsqu'un des objets utilisés par la requête est modifié.

Les requêtes qui balayent un grande quantité de blocks et retourne une faible quantité de données sont des bonnes candidates pour le result cache. Les requêtes de type décisionelle correspondent donc bien à cette définition.

Un paramètre d'initialisation : RESULT_CACHE_MODE permet de déterminer le comportement de la base :

  • MANUAL (défaut): il est nécessaire de spécifier le hint "result_cache" pour indiquer que l'on souhaite utiliser le cache de résultat.
  • FORCE : tous les résultats seront stockés en cache (s'ils respectent les limitations)

 

Les paramètres de limitation

Des paramètres d'initialisation permettent de limiter la consommation mémoire :

Commentaire (0) Clics: 6035

Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives

A partir de la version 11g d'Oracle, il est possible d'avoir un cache de fonction PL/SQL inter-session. Ce cache s'appuie sur la fonctionnalité de result_cache décrite dans un autre article. La SGA est utilisée pour stocker le résultat de la fonction PL/SQL.

la clause RESULT_CACHE dans la déclaration de la fonction indique à Oracle que la fonction peut utiliser le cache de résultat. La clause optionnelle RELIES_ON permet de spécifier quelle(s) table(s) influence le cache de résultat de la fonction. Si une ou plus des tables en "relies_on" est modifiée (DML/DDL), le cache est invalidé.

Si le système à besoin de mémoire il peut invalidé les caches les plus anciens.

PL/SQL Cache de Fonction
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE FUNCTION GetChangeRate(i_SrcCurrId, i_TgtCurrId, i_RefDate) 
RETURN NUMBER
RESULT_CACHE RELIES_ON (TransCurrenciesDate)
IS 
  result NUMBER
BEGIN
  SELECT Change_Rate INTO result
  FROM TransCurrenciesDate
  WHERE SrcCurrId = i_SrcCurrId AND TgtCurrId=i_TgtCurrId AND RefDate = i_RefDate;
  RETURN RESULT;
END;
 

 

 Restrictions

Le cache de résultat pour les fonctions PL/SQL ne peut être utilisé dans les cas suivants:

  • La fonction possède des paramètres OUT
  • La fonction possède des paramètres IN de type LOB (CLOB, BLOB,NCLOB) ou REF CURSOR, une collection, objet ou enregistrement
  • La fonction retourne un LOB, un REF CURSOR, une collection, un objet ou enregistrement. 
  • La fonction ne peut donc pas être une fonction "pipelined"

 

Commentaire (0) Clics: 3727

Sous-catégories

Des tutoriaux et cours gratuits sur Oracle

Articles traitant de l'intégration de données

Tutoriaux sur Unix et les shells scripts