Partager via


Fonction SUMMARIZE (DAX)

Retourne une table de synthèse pour les totaux demandés sur un ensemble de groupes.

Syntaxe

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)

Paramètres

  • table
    Toute expression DAX qui retourne une table de données.

  • groupBy_columnName
    (Facultatif) Nom qualifié d'une colonne existante à utiliser pour créer des groupes de synthèse en fonction des valeurs qui s'y trouvent. Ce paramètre ne peut pas être une expression.

  • name
    Nom donné à une colonne de total ou de synthèse, placé entre guillemets.

  • expression
    Toute expression DAX qui retourne une valeur scalaire unique, où l'expression doit être évaluée plusieurs fois (pour chaque ligne/contexte).

Valeur de retour

Table avec les colonnes sélectionnées pour les arguments groupBy_columnName et les colonnes de synthèse conçues par les arguments name.

Notes

  1. Chaque colonne pour laquelle vous définissez un nom doit avoir une expression correspondante ; sinon, une erreur est retournée. Le premier argument, name, définit le nom de la colonne dans les résultats. Le deuxième argument, expression, définit le calcul effectué pour obtenir la valeur de chaque ligne de cette colonne.

  2. groupBy_columnName doit être dans table ou dans une table associée à table.

  3. Chaque nom doit être mis entre des guillemets doubles.

  4. La fonction regroupe un ensemble sélectionné de lignes en un ensemble de lignes de synthèse selon les valeurs d'une ou de plusieurs colonnes groupBy_columnName. Une ligne est retournée pour chaque groupe.

Exemple

L'exemple suivant retourne une synthèse des ventes du revendeur regroupées selon l'année civile et le nom de la catégorie de produit ; cette table de résultats vous permet d'effectuer une analyse des ventes du revendeur par année et par catégorie de produit.

SUMMARIZE(ResellerSales_USD
      , DateTime[CalendarYear]
      , ProductCategory[ProductCategoryName]
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
      )

Le tableau suivant montre un aperçu des données telles qu'elles sont reçues par une fonction qui attend de recevoir une table :

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Bikes

12968255.42

36167.6592

2005

Bikes

6958251.043

4231.1621

2006

Bikes

18901351.08

178175.8399

2007

Bikes

24256817.5

276065.992

2008

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

5195315.216

4226.0444

2008

Clothing

366507.844

4151.1235

2005

Clothing

31851.1628

90.9593

2006

Clothing

455730.9729

4233.039

2007

Clothing

815853.2868

12489.3835

2008

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

Options avancées de SUMMARIZE

SUMMARIZE avec ROLLUP

L'ajout de la syntaxe ROLLUP() modifie le comportement de la fonction SUMMARIZE en entraînant l'ajout de lignes de cumul au résultat des colonnes groupBy_columnName.

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)

Paramètres de ROLLUP

  • groupBy_columnName
    Nom qualifié d'une colonne existante à utiliser pour créer des groupes de synthèse en fonction des valeurs qui s'y trouvent. Ce paramètre ne peut pas être une expression.

Remarque : dans la mesure où tous les autres paramètres de SUMMARIZE ont été expliqués auparavant, ils ne sont pas répétés ici pour des raisons de concision.

Notes

  • Les colonnes indiquées dans l'expression ROLLUP ne peuvent pas être référencées dans le cadre d'une colonne groupBy_columnName.

Exemple

L'exemple suivant ajoute des lignes de cumul aux colonnes GROUP BY de l'appel de fonction SUMMARIZE.

SUMMARIZE(ResellerSales_USD
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

Le tableau suivant montre un aperçu des données telles qu'elles sont reçues par une fonction qui attend de recevoir une table :

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Bikes

12968255.42

36167.6592

2005

Bikes

6958251.043

4231.1621

2006

Bikes

18901351.08

178175.8399

2007

Bikes

24256817.5

276065.992

2008

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

5195315.216

4226.0444

2008

Clothing

366507.844

4151.1235

2005

Clothing

31851.1628

90.9593

2006

Clothing

455730.9729

4233.039

2007

Clothing

815853.2868

12489.3835

2008

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

2008

15496115.89

41224.3038

2005

7582953.67

4326.4144

2006

22871907.85

184419.1335

2007

30543780.84

297538.0745

76494758.25

527507.9262

ROLLUPGROUP

ROLLUPGROUP() permet de calculer des groupes de sous-totaux. En cas d'utilisation à la place de ROLLUP, ROLLUPGROUP génère le même résultat en entraînant l'ajout de lignes de cumul au résultat des colonnes groupBy_columnName. Cependant, l'ajout de ROLLUPGROUP() dans la syntaxe ROLLUP peut être utilisé pour empêcher des sous-totaux partiels dans des lignes de cumul.

L'exemple suivant illustre uniquement le total général de toutes les années et catégories sans le sous-total de chaque année avec toutes les catégories :

SUMMARIZE(ResellerSales_USD
      , ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

Le tableau suivant montre un aperçu des données telles qu'elles sont reçues par une fonction qui attend de recevoir une table :

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Bikes

12968255.42

36167.6592

2005

Bikes

6958251.043

4231.1621

2006

Bikes

18901351.08

178175.8399

2007

Bikes

24256817.5

276065.992

2008

Components

2008052.706

39.9266

2005

Components

574256.9865

0

2006

Components

3428213.05

948.7674

2007

Components

5195315.216

4226.0444

2008

Clothing

366507.844

4151.1235

2005

Clothing

31851.1628

90.9593

2006

Clothing

455730.9729

4233.039

2007

Clothing

815853.2868

12489.3835

2008

Accessories

153299.924

865.5945

2005

Accessories

18594.4782

4.293

2006

Accessories

86612.7463

1061.4872

2007

Accessories

275794.8403

4756.6546

76494758.25

527507.9262

SUMMARIZE avec ISSUBTOTAL

Permet à l'utilisateur de créer une autre colonne, dans la fonction Summarize, qui retourne True si la ligne contient des valeurs de sous-total pour la colonne fournie comme argument à ISSUBTOTAL, sinon retourne False.

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)

Paramètres de ISSUBTOTAL

  • columnName
    Nom d'une colonne de table de la fonction SUMMARIZE, ou d'une colonne d'une table associée à la table.

Valeur de retour

Valeur True si la ligne contient une valeur de sous-total pour la colonne fournie comme argument ; sinon, retourne False.

Notes

  • ISSUBTOTAL ne peut être utilisé que dans la partie expression d'une fonction SUMMARIZE.

  • ISSUBTOTAL doit être précédé d'une colonne name correspondante.

Exemple

L'exemple suivant génère une colonne ISSUBTOTAL() pour chacune des colonnes ROLLUP() de l'appel de fonction SUMMARIZE() donné.

SUMMARIZE(ResellerSales_USD
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
      , "Is Sub Total for DateTimeCalendarYear", ISSUBTOTAL(DateTime[CalendarYear])
      , "Is Sub Total for ProductCategoryName", ISSUBTOTAL(ProductCategory[ProductCategoryName])
)

Le tableau suivant montre un aperçu des données telles qu'elles sont reçues par une fonction qui attend de recevoir une table :

[Is Sub Total for DateTimeCalendarYear]

[Is Sub Total for ProductCategoryName]

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

FALSE

FALSE

FALSE

FALSE

2008

Bikes

12968255.42

36167.6592

FALSE

FALSE

2005

Bikes

6958251.043

4231.1621

FALSE

FALSE

2006

Bikes

18901351.08

178175.8399

FALSE

FALSE

2007

Bikes

24256817.5

276065.992

FALSE

FALSE

2008

Components

2008052.706

39.9266

FALSE

FALSE

2005

Components

574256.9865

0

FALSE

FALSE

2006

Components

3428213.05

948.7674

FALSE

FALSE

2007

Components

5195315.216

4226.0444

FALSE

FALSE

2008

Clothing

366507.844

4151.1235

FALSE

FALSE

2005

Clothing

31851.1628

90.9593

FALSE

FALSE

2006

Clothing

455730.9729

4233.039

FALSE

FALSE

2007

Clothing

815853.2868

12489.3835

FALSE

FALSE

2008

Accessories

153299.924

865.5945

FALSE

FALSE

2005

Accessories

18594.4782

4.293

FALSE

FALSE

2006

Accessories

86612.7463

1061.4872

FALSE

FALSE

2007

Accessories

275794.8403

4756.6546

FALSE

TRUE

FALSE

TRUE

2008

15496115.89

41224.3038

FALSE

TRUE

2005

7582953.67

4326.4144

FALSE

TRUE

2006

22871907.85

184419.1335

FALSE

TRUE

2007

30543780.84

297538.0745

TRUE

TRUE

76494758.25

527507.9262