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
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.
groupBy_columnName doit être dans table ou dans une table associée à table.
Chaque nom doit être mis entre des guillemets doubles.
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 |