SUMMARIZECOLUMNS
Si applica a:Calcolo visivo misuratabella calcolata colonnacalcolata
Restituisce una tabella di riepilogo su un set di gruppi.
Sintassi
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Parametri
Termine | Definizione |
---|---|
groupBy_columnName | Riferimento di colonna completo (Table[Column]) a una tabella di base per cui i valori distinti sono inclusi nella tabella restituita. Ogni colonna groupBy_columnName viene unita con un cross join (tabelle diverse) o viene sottoposta ad Auto Exist (stessa tabella) con le colonne successive specificate. |
filterTable | Espressione di tabella che viene aggiunta al contesto di filtro di tutte le colonne specificate come argomenti groupBy_columnName. I valori presenti nella tabella di filtro vengono usati per filtrare prima dell'esecuzione di un cross join o di Auto Exist. |
name | Stringa che rappresenta il nome della colonna da usare per l'espressione successiva specificata. |
expression | Qualsiasi espressione DAX che restituisce un singolo valore (non una tabella). |
Valore restituito
Tabella che include combinazioni di valori dalle colonne specificate, in base al raggruppamento specificato. Nella tabella restituita vengono incluse solo le righe per le quali almeno una delle espressioni specificate restituisce un valore non vuoto. Se tutte le espressioni restituiscono BLANK/NULL per una riga, tale riga non verrà inclusa nella tabella restituita.
Osservazioni:
Questa funzione non garantisce alcun ordinamento per i risultati.
Una colonna non può essere specificata più di una volta nel parametro groupBy_columnName. La formula seguente, ad esempio, non è valida.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Questa funzione non è supportata per l'uso nella modalità DirectQuery se usata in colonne calcolate o nelle regole di sicurezza a livello di riga.
Contesto di filtro
Si consideri la query seguente:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
In questa query senza una misura le colonne groupBy non contengono colonne dell'espressione FILTER (ad esempio, della tabella Customer). Il filtro non viene applicato alle colonne groupBy. Le tabelle Sales Territory e Customer possono essere indirettamente correlate tramite la tabella dei fatti Reseller sales. Poiché non sono correlate direttamente, l'espressione filtro non prevede alcuna operazione e le colonne groupBy non sono interessate.
Tuttavia con questa query:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
Le colonne groupBy contengono una colonna interessata dal filtro e tale filtro viene applicato ai risultati di groupBy.
Con IGNORE
La sintassi IGNORE può essere usata per modificare il comportamento della funzione SUMMARIZECOLUMNS omettendo espressioni specifiche dalla valutazione BLANK/NULL. Le righe per le quali tutte le espressioni che non usano IGNORE restituiscono BLANK/NULL verranno escluse, indipendentemente dal fatto che le espressioni che usano IGNORE restituiscano o meno BLANK/NULL. La funzione IGNORE può essere usata solo all'interno di un'espressione SUMMARIZECOLUMNS.
Esempio
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Esegue il rollup della colonna Sales[CustomerId], creando un subtotale per tutti i clienti nel raggruppamento specificato. Senza IGNORE, il risultato è:
Customerid | Quantità totale | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
B | 3 | 3 |
C | 3 | 3 |
Con IGNORE,
Customerid | Quantità totale | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
C | 3 | 3 |
Tutte le espressioni ignorate,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Anche se entrambe le espressioni restituiscono BLANK per alcune righe, vengono incluse perché non sono presenti espressioni non ignorate che restituiscono BLANK.
Customerid | Spazio vuoto | BlankIfTotalQtyIsNot5 |
---|---|---|
Un | 5 | |
B | ||
A |
Con NONVISUAL
La funzione NONVISUAL indica che un filtro di valore nella funzione SUMMARIZECOLUMNS non influisce sui valori di misura, ma si applica solo alle colonne groupBy. La funzione NONVISUAL può essere usata solo all'interno di un'espressione SUMMARIZECOLUMNS.
Esempio
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
NONVISUAL(TREATAS({2007, 2008}, DimDate[CalendarYear])),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Restituisce il risultato in cui [Visual Total Sales] è il totale per tutti gli anni:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
Al contrario, la stessa query senza la funzione NONVISUAL:
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
TREATAS({2007, 2008}, DimDate[CalendarYear]),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Restituisce il risultato in cui [Visual Total Sales] è il totale per i due anni selezionati:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
Con ROLLUPADDISSUBTOTAL
L'aggiunta della sintassi ROLLUPADDISSUBTOTAL modifica il comportamento della funzione SUMMARIZECOLUMNS aggiungendo righe di rollup/subtotali al risultato in base alle colonne groupBy_columnName. La funzione ROLLUPADDISSUBTOTAL può essere usata solo all'interno di un'espressione SUMMARIZECOLUMNS.
Esempio con singolo subtotale
DEFINE
VAR vCategoryFilter =
TREATAS({"Accessories", "Clothing"}, Product[Category])
VAR vSubcategoryFilter =
TREATAS({"Bike Racks", "Mountain Bikes"}, Product[Subcategory])
EVALUATE
SUMMARIZECOLUMNS
(
ROLLUPADDISSUBTOTAL
(
Product[Category], "IsCategorySubtotal", vCategoryFilter,
Product[Subcategory], "IsSubcategorySubtotal", vSubcategoryFilter
),
"Total Qty", SUM(Sales[Qty])
)
ORDER BY
[IsCategorySubtotal] DESC, [Category],
[IsSubcategorySubtotal] DESC, [Subcategory]
Restituisce la tabella seguente:
Categoria | Sottocategoria | IsCategorySubtotal | IsSubcategorySubtotal | Quantità totale |
---|---|---|---|---|
Vero | Vero | 60398 | ||
Accessori | False | Vero | 36092 | |
Accessori | Bike Racks | False | False | 328 |
Bikes | Mountain Bikes | False | False | 4970 |
Clothing | False | Vero | 9101 |
Esempio con più subtotali
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Le vendite vengono raggruppate per stato, per cliente, per data, con subtotali per 1. Vendite per stato, per data 2. Vendite per stato, per cliente 3. Il rollup viene eseguito sia per cliente che per data, ottenendo le vendite per stato.
Restituisce la tabella seguente:
IDCliente | IsCustomerSubtotal | Provincia | Quantità totale | Data | IsDateSubtotal |
---|---|---|---|---|---|
A | FALSE | WA | 5 | 10/7/2014 | |
B | FALSE | WA | 1 | 10/7/2014 | |
B | FALSE | WA | 2 | 7/11/2014 | |
A | FALSE | OPPURE | 2 | 10/7/2014 | |
A | FALSE | OPPURE | 1 | 7/11/2014 | |
TRUE | WA | 6 | 10/7/2014 | ||
TRUE | WA | 2 | 7/11/2014 | ||
TRUE | OPPURE | 2 | 10/7/2014 | ||
TRUE | OPPURE | 1 | 7/11/2014 | ||
A | FALSE | WA | 5 | TRUE | |
B | FALSE | WA | 3 | TRUE | |
A | FALSE | OPPURE | 3 | TRUE | |
TRUE | WA | 8 | TRUE | ||
TRUE | OPPURE | 3 | TRUE |
Con ROLLUPGROUP
Analogamente alla funzione SUMMARIZE, è possibile usare ROLLUPGROUP con ROLLUPADDISSUBTOTAL per specificare quali gruppi di riepilogo/granularità (subtotali) includere (riducendo il numero di righe di subtotale restituite). La funzione ROLLUPGROUP può essere usata solo all'interno di un'espressione SUMMARIZECOLUMNS o SUMMARIZE.
Esempio con più subtotali
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
Ancora raggruppati per città e stato, ma sommati insieme quando si indica un subtotale, viene restituita la tabella seguente.
Provincia | Customerid | IsCustomerSubtotal | Quantità totale | City | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | FALSE | 2 | Bellevue | FALSE |
WA | B | FALSE | 2 | Bellevue | FALSE |
WA | A | FALSE | 3 | Milano | FALSE |
WA | B | FALSE | 1 | Milano | FALSE |
OPPURE | A | FALSE | 3 | Portland | FALSE |
WA | TRUE | 4 | Bellevue | FALSE | |
WA | TRUE | 4 | Milano | FALSE | |
OPPURE | TRUE | 3 | Portland | FALSE | |
A | FALSE | 5 | FALSE | ||
B | FALSE | 3 | TRUE | ||
A | FALSE | 3 | TRUE | ||
TRUE | 11 | TRUE |
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per