Condividi tramite


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

  1. 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.

  2. L'oggetto groupBy_columnName deve trovarsi nel parametro table o in una tabella correlata al parametro table.

  3. Ogni nome deve essere racchiuso tra virgolette doppie.

  4. 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