Partager via


Utilisation des fonctions d'agrégation

Cette rubrique contient des exemples d'utilisation des fonctions d'agrégation (Sum, Min, Max, Count et Distinct Count) dans des mesures. Les exemples de la requête utilisent les mêmes cellules de cube que les exemples suivants afin que vous puissiez voir l'effet d'un changement de fonction.

Le cube qu'utilisent ces exemples possède une seule mesure, Sales, fondée sur la colonne Sales_Amount de la table de faits Sales. Le cube a trois dimensions :

  • Customers, reposant sur la table Customers et contenant ces niveaux, du plus élevé au plus bas :

    • (Tous) ;

    • Customer, avec Customer_Name comme colonne des noms de membre et Customer_ID comme colonne des clés de membre.

  • Retail Stores, d'après la table Retail_Stores et contenant ces niveaux, du plus élevé au plus bas :

    • (Tous) ;

    • Retail Store avec Retail_Store_Name comme colonne des noms de membre et Retail_Store_ID comme colonne des clés de membre.

  • Products, d'après la table Products et contenant ces niveaux, du plus élevé au plus bas :

    • (Tous) ;

    • Product Category avec Product_Category comme colonne des noms de membre et colonne des clés de membres ;

    • Product avec Product_Name comme colonne des noms de membre et Product_ID comme colonne des clés de membre.

Pour plus d'informations sur les dimensions et les niveaux, consultez Dimensions et niveaux

Le schéma du cube est présenté ici.

La table de faits du cube, Sales, est présentée ici.

Transaction_ID

Customer_ID

Product_ID

Retail_Store_ID

Sales_

Amount

1

1

1

1

300

2

1

1

1

250

3

1

1

1

250

4

1

2

1

100

5

1

4

1

700

6

2

1

2

290

7

2

2

2

90

8

2

3

3

510

9

3

1

4

350

10

3

2

3

110

11

4

3

4

550

12

4

4

4

750

L'une des tables de dimensions du cube, Customers, est présentée ici.

Customer_ID

Customer_Name

Customer_Address_

Line_1

Customer_Address_

Line_2

1

A

1 A Street

Aville, AA 55555

2

B

2 B Street

Bville, BB 55555

3

C

3 C Street

Cville, CC 55555

4

D

4 D Street

Dville, DD 55555

Une autre table des dimensions du cube, Retail_Stores, est présentée ici.

Retail_

Store_ID

Retail_Store_

Name

Retail_Store_

Address_Line_1

Retail_Store_

Address_Line_2

1

A

1 A Avenue

Atown, AA 55555

2

B

2 B Avenue

Btown, BB 55555

3

C

3 C Avenue

Ctown, CC 55555

4

D

4 D Avenue

Dtown, DD 55555

La table des dimensions finale du cube, Products, est présentée ici.

Product_ID

Product_Name

Product_Description

Product_Category

1

A

aaaa aaaa aaaa

AB

2

B

bbbb bbbb bbbb

AB

3

C

cccc cccc cccc

CD

4

D

dddd dddd dddd

CD

SUM

Si la propriété Aggregate Function d'une mesure a la valeur Sum, la valeur de mesure d'une cellule du cube est calculée en additionnant les valeurs de la colonne source de la mesure uniquement à partir des lignes de la combinaison de membres qui définit la cellule et les descendants de ces membres.

Exemples

Les exemples suivants renvoient des valeurs représentant des ventes cumulées.

A : interrogation d'une cellule de cube atomique

Une requête dans la mesure Sales pour le client A, le magasin de détail A et le produit A renvoie 800.

B : interrogation d'une cellule de cube non atomique

Une requête sur la mesure Sales pour le client A, le magasin de détail A et la catégorie de produits AB renvoie 900.

C : interrogation de plusieurs cellules de cube

Une requête sur la mesure Sales place chaque magasin de détail sur l'axe X, imbrique les produits par catégorie sur l'axe Y et effectue un découpage sur tous les clients. Elle renvoie le dataset suivant.

Tous les magasins de détail

A

B

C

D

Tous les produits

4250

1600

380

620

1650

AB

1740

900

380

110

350

A

1440

800

290

350

B

300

100

90

110

CD

2510

700

510

1300

C

1060

510

550

D

1450

700

750

Min

Si la propriété Aggregate Function d'une mesure a la valeur Min, la valeur de mesure d'une cellule du cube est calculée en prenant la valeur la plus faible dans la colonne source de la mesure uniquement à partir des lignes de la combinaison de membres qui définit la cellule et les descendants de ces membres.

Exemples

Les exemples suivants renvoient des valeurs qui représentent le prix de vente le plus bas.

A : interrogation d'une cellule de cube atomique

Une requête dans la mesure Sales pour le client A, le magasin de détail A et le produit A renvoie 250.

B : interrogation d'une cellule de cube non atomique

Une requête sur la mesure Sales pour le client A, le magasin de détail A et la catégorie de produits AB renvoie 100.

C : interrogation de plusieurs cellules de cube

Une requête sur la mesure Sales place chaque magasin de détail sur l'axe X, imbrique les produits par catégorie sur l'axe Y et effectue un découpage sur tous les clients. Elle renvoie le dataset suivant.

Tous les magasins de détail

A

B

C

D

Tous les produits

90

100

90

110

350

AB

90

100

90

110

350

A

250

250

290

350

B

90

100

90

110

CD

510

700

510

550

C

510

510

550

D

700

700

750

Max

Si la propriété Aggregate Function d'une mesure a la valeur Max, la valeur de mesure d'une cellule du cube est calculée en prenant la valeur la plus élevée dans la colonne source de la mesure uniquement à partir des lignes de la combinaison de membres qui définit la cellule et les descendants de ces membres.

Exemples

Les exemples suivants renvoient des valeurs représentant le prix de vente le plus élevé.

A : interrogation d'une cellule de cube atomique

Une requête dans la mesure Sales pour le client A, le magasin de détail A et le produit A renvoie 300.

B : interrogation d'une cellule de cube non atomique

Une requête sur la mesure Sales pour le client A, le magasin de détail A et la catégorie de produits AB renvoie 300.

C : interrogation de plusieurs cellules de cube

Une requête sur la mesure Sales place chaque magasin de détail sur l'axe X, imbrique les produits par catégorie sur l'axe Y et effectue un découpage sur tous les clients. Elle renvoie le dataset suivant.

Tous les magasins de détail

A

B

C

D

Tous les produits

750

700

290

510

750

AB

350

300

290

110

350

A

350

300

290

350

B

110

100

90

110

CD

750

700

510

750

C

550

510

550

D

750

700

750

Count

Si la propriété Aggregate Function d'une mesure a la valeur Count, la valeur de mesure d'une cellule du cube est calculée en additionnant le nombre de valeurs dans la colonne source de la mesure uniquement à partir des lignes de la combinaison de membres qui définit la cellule et les descendants de ces membres.

Exemples

Les exemples suivants renvoient des valeurs représentant le nombre de transactions Sales.

A : interrogation d'une cellule de cube atomique

Une requête dans la mesure Sales pour le client A, le magasin de détail A et le produit A renvoie 3.

B : interrogation d'une cellule de cube non atomique

Une requête sur la mesure Sales pour le client A, le magasin de détail A et la catégorie de produits AB renvoie 4.

C : interrogation de plusieurs cellules de cube

Une requête sur la mesure Sales place chaque magasin de détail sur l'axe X, imbrique les produits par catégorie sur l'axe Y et effectue un découpage sur tous les clients. Elle renvoie le dataset suivant.

Tous les magasins de détail

A

B

C

D

Tous les produits

12

5

2

2

3

AB

8

4

2

1

1

A

5

3

1

1

B

3

1

1

1

CD

4

1

1

2

C

2

1

1

D

2

1

1

Distinct Count

Si la propriété Aggregate Function d'une mesure a la valeur Distinct Count, la valeur de mesure d'une cellule du cube est calculée en additionnant le nombre de valeurs uniques dans la colonne source de la mesure uniquement à partir des lignes de la combinaison de membres qui définit la cellule et les descendants de ces membres.

Une mesure dont la propriété Aggregate Function a la valeur Distinct Count est qualifiée de mesure de comptage distincte. Une mesure de comptage distincte peut être utilisée pour compter les occurrences des membres du niveau le plus bas d'une dimension dans la table de faits. Avec ce type de comptage, si un membre apparaît plusieurs fois, il n'est compté qu'une seule fois.

Les mesures de comptage distinctes s'utilisent généralement pour déterminer pour chaque membre d'une dimension combien de membres distincts du niveau le plus bas d'une autre dimension possèdent des lignes identiques à celles de la table de faits. Par exemple, dans un cube Sales, pour chaque client et groupe de clients, combien de produits différents ont été achetés ? C'est-à-dire, pour chaque membre de la dimension Customers, combien de membres différents du niveau le plus bas de la dimension Products ont en commun des lignes avec la table de faits ? Ou, par exemple, dans un cube de visites d'un site Internet, pour chaque visiteur et chaque groupe de visiteurs, combien de pages distinctes ont été consultées sur le site Internet ? C'est-à-dire, pour chaque membre de la dimension Site Visitors, combien de membres différents du niveau le plus bas de la dimension Pages ont en commun des lignes avec la table de faits ? Dans chacun de ces exemples, les membres du niveau le plus bas de la deuxième dimension sont comptés par une mesure de comptage distincte.

Ce type d'analyse ne se limite pas forcément à deux dimensions. En fait, une mesure de comptage distincte peut être séparée et découpée selon n'importe quelle combinaison de dimensions du cube, y compris la dimension qui contient les membres comptés.

Une mesure de comptage distincte qui compte les membres repose sur une colonne de clé étrangère de la table de faits. C'est-à-dire que la propriété Source Column de la mesure identifie cette colonne. Cette colonne est jointe à la colonne de table de dimensions qui identifie les membres comptés par la mesure de comptage distincte.

L'utilisation de mesures de comptage distinctes est limitée dans les cubes réguliers. Une seule mesure de comptage distincte est autorisée dans un cube régulier et ce, uniquement si le cube régulier ne contient pas une dimension avec des opérateurs de cumul personnalisés ou des formules de cumul personnalisées. Ces restrictions ne s'appliquent pas aux cubes virtuels. Un cube virtuel peut utiliser plusieurs mesures de comptage distinctes, ainsi que des opérateurs de cumul personnalisés et des formules de cumul personnalisées avec les mesures de comptage distinctes.

Puisque les mesures de comptage distinctes sont non additives, la présence d’une mesure de comptage distincte restreint notablement les possibilités de préagrégation du cube par Microsoft® SQL Server™ 2000 Analysis Services. Pour cette raison, il est recommandé de placer chaque comptage distinct dans son propre cube, sans aucune autre mesure. Les cubes avec des mesures de comptage distinctes peuvent être joints avec d’autres cubes dans un cube virtuel qui gère efficacement toutes les mesures.

[!REMARQUE]

Si un cube utilise une mesure de comptage distincte, la totalité du cube est traitée comme étant non additive. Les cubes non additifs ne prennent pas en charge les membres créés dynamiquement ; les fonctions MDX, telles que VisualTotals, qui créent dynamiquement des membres renvoient donc une erreur si elles sont utilisées sur un cube non additif. Cette limite affecte d'autres fonctionnalités telles que l'activation des valeurs visibles dans la sécurité des dimensions qui suppose des membres créés dynamiquement.

Exemples

Les exemples suivants renvoient des valeurs qui représentent le nombre de transactions de ventes ayant un prix de vente unique.

A : interrogation d'une cellule de cube atomique

Une requête dans la mesure Sales pour le client A, le magasin de détail A et le produit A renvoie 2.

B : interrogation d'une cellule de cube non atomique

Une requête sur la mesure Sales pour le client A, le magasin de détail A et la catégorie de produits AB renvoie 3.

C : interrogation de plusieurs cellules de cube

Une requête sur la mesure Sales place chaque magasin de détail sur l'axe X, imbrique les produits par catégorie sur l'axe Y et effectue un découpage sur tous les clients. Elle renvoie le dataset suivant.

Tous les magasins de détail

A

B

C

D

Tous les produits

11

4

2

2

3

AB

7

3

2

1

1

A

4

2

1

1

B

3

1

1

1

CD

4

1

1

2

C

2

1

1

D

2

1

1