Funzione SUMMARIZE (DAX)
Viene restituita una Tabella Riepilogo per i totali richiesti in un set di gruppi.
Sintassi
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Parametri
table
Qualsiasi espressione DAX che restituisce una tabella di dati.groupBy_columnName
(Facoltativo) Nome completo di una colonna esistente da utilizzare per creare gruppi di riepilogo in base ai relativi valori trovati. Questo parametro non può essere un'espressione.name
Nome assegnato a un totale o a una colonna di riepilogo, racchiuso tra virgolette doppie.expression
Qualsiasi espressione DAX tramite cui viene restituito un singolo valore scalare, dove l'espressione deve essere valutata più volte (per ogni riga/contesto).
Valore restituito
Tabella con le colonne selezionate per gli argomenti groupBy_columnName e le colonne riepilogate progettate in base agli argomenti name.
Osservazioni
Ogni colonna per la quale si definisce un nome deve disporre di un'espressione corrispondente; in caso contrario, viene restituito un errore. Il primo argomento, name, consente di definire il nome della colonna nei risultati. Il secondo argomento, expression, consente di definire il calcolo eseguito per ottenere il valore per ogni riga di tale colonna.
L'oggetto groupBy_columnName deve trovarsi nel parametro table o in una tabella correlata al parametro table.
Ogni nome deve essere racchiuso tra virgolette doppie.
La funzione consente di raggruppare un set selezionato di righe in un set di righe di riepilogo in base ai valori di una o più colonne groupBy_columnName. Per ogni gruppo viene restituita una riga.
Esempio
Nell'esempio seguente viene restituito un riepilogo delle vendite del rivenditore raggruppate per anno solare e per nome della categoria di prodotto. Questa tabella dei risultati consente all'utente di analizzare le vendite del rivenditore per anno e categoria di prodotto.
SUMMARIZE(ResellerSales_USD
, DateTime[CalendarYear]
, ProductCategory[ProductCategoryName]
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
Nella tabella seguente viene mostrata un'anteprima dei dati come ricevuta da qualsiasi funzione che prevede la ricezione di una tabella:
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 |
Opzioni SUMMARIZE avanzate
SUMMARIZE con ROLLUP
L'aggiunta della sintassi ROLLUP() consente di modificare il comportamento della funzione SUMMARIZE aggiungendo righe di rollup al risultato nelle colonne groupBy_columnName.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Parametri ROLLUP
- groupBy_columnName
Nome qualificato di una colonna esistente da utilizzare per creare gruppi di riepilogo in base ai relativi valori trovati. Questo parametro non può essere un'espressione.
Nota: tutti gli altri parametri SUMMARIZE sono stati spiegati in precedenza e non vengono ripetuti per brevità.
Osservazioni
- Non è possibile fare riferimento alle colonne indicate nell'espressione ROLLUP come parte di colonne groupBy_columnName.
Esempio
Nell'esempio seguente vengono aggiunte righe di rollup alle colonne Group-By della chiamata di funzione SUMMARIZE.
SUMMARIZE(ResellerSales_USD
, ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
Nella tabella seguente viene mostrata un'anteprima dei dati come ricevuta da qualsiasi funzione che prevede la ricezione di una tabella:
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() può essere utilizzato per calcolare gruppi di subtotali. Se utilizzato al posto di ROLLUP, ROLLUPGROUP restituirà lo stesso risultato aggiungendo righe di roll-up al risultato nelle colonne groupBy_columnName. Tuttavia, l'aggiunta di ROLLUPGROUP() all'interno della sintassi di ROLLUP può essere utilizzata per evitare subtotali parziali nelle righe di rollup.
Nell'esempio seguente viene illustrato solo il totale complessivo di tutti gli anni e di tutte le categorie senza il subtotale di ogni anno con tutte le categorie:
SUMMARIZE(ResellerSales_USD
, ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
, "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
, "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)
Nella tabella seguente viene mostrata un'anteprima dei dati come ricevuta da qualsiasi funzione che prevede la ricezione di una tabella:
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 con ISSUBTOTAL
Consente all'utente di creare un'altra colonna, nella funzione Summarize, tramite cui viene restituito True se nella riga sono contenuti valori subtotali per la colonna specificata come argomento di ISSUBTOTAL; in caso contrario, viene restituito False.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)
Parametri ISSUBTOTAL
- columnName
Nome di qualsiasi colonna nella tabella della funzione SUMMARIZE o di qualsiasi colonna in una tabella correlata a tabella.
Valore restituito
Valore True se nella riga è contenuto un valore subtotale per la colonna specificata come argomento; in caso contrario, viene restituito False.
Osservazioni
ISSUBTOTAL può essere utilizzato solo nella parte di espressione di una funzione SUMMARIZE.
ISSUBTOTAL deve essere preceduto da una colonna name corrispondente.
Esempio
Nell'esempio seguente viene generata una colonna ISSUBTOTAL() per ognuna delle colonne ROLLUP() nella chiamata di funzione SUMMARIZE() specificata.
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])
)
Nella tabella seguente viene mostrata un'anteprima dei dati come ricevuta da qualsiasi funzione che prevede la ricezione di una tabella:
[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 |