GENERATE
Restituisce una tabella con il prodotto cartesiano tra ogni riga in table1 e la tabella risultante dalla valutazione di table2 nel contesto della riga corrente da table1.
Sintassi
GENERATE(<table1>, <table2>)
Parametri
Termine | Definizione |
---|---|
table1 |
Qualsiasi espressione DAX che restituisce una tabella. |
table2 |
Qualsiasi espressione DAX che restituisce una tabella. |
Valore restituito
Tabella con il prodotto cartesiano tra ogni riga di table1 e la tabella risultante dalla valutazione di table2 nel contesto della riga corrente da table1
Osservazioni
Se la valutazione di table2 per la riga corrente in table1 restituisce una tabella vuota, la tabella dei risultati non conterrà la riga corrente da table1. È diverso da GENERATEALL() in cui la riga corrente da table1 verrà inclusa nei risultati e nelle colonne corrispondenti a table2 avrà valori Null per tale riga.
Tutti i nomi di colonna di table1 e table2 devono essere diversi o viene restituito un errore.
Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.
Esempio
Nell'esempio seguente l'utente vuole una tabella di riepilogo delle vendite per area e categoria di prodotti per il canale Resellers, come nella tabella seguente:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Reseller Sales] |
---|---|---|
Europa | Accessoristica | $ 142.227,27 |
Europa | Biciclette | $ 9.970.200,44 |
Europa | Abbigliamento | $ 365.847,63 |
Europa | Componenti | $ 2.214.440,19 |
Nord America | Accessoristica | $ 379.305,15 |
Nord America | Biciclette | $ 52.403.796,85 |
Nord America | Abbigliamento | $ 1.281.193,26 |
Nord America | Componenti | $ 8.882.848,05 |
Pacifico | Accessoristica | $ 12.769,57 |
Pacifico | Biciclette | $ 710.677,75 |
Pacifico | Abbigliamento | $ 22.902,38 |
Pacifico | Componenti | $ 108.549,71 |
La formula seguente produce la tabella precedente:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
La prima istruzione SUMMARIZE,
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
, produce una tabella di gruppi di territorio, in cui ogni riga è un gruppo di territorio, come illustrato di seguito:SalesTerritory[SalesTerritoryGroup] Nord America Europa Pacifico NA La seconda istruzione SUMMARIZE,
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
, produce una tabella di gruppi di categorie di prodotti con le vendite Reseller per ogni gruppo, come illustrato di seguito:ProductCategory[ProductCategoryName] [Reseller Sales] Biciclette $ 63.084.675,04 Componenti $ 11.205.837.96 Abbigliamento $ 1.669.943,27 Accessoristica $ 534.301,99 Tuttavia, quando si accetta la tabella precedente e la si valuta nel contesto di ogni riga della tabella dei gruppi di territorio, si ottengono risultati diversi per ogni territorio.