GENERATE

Si applica a:Calcolo visivo misuratabella calcolata colonnacalcolata

Restituisce una tabella con il prodotto cartesiano tra ogni riga nel parametro table1 e la tabella risultante dalla valutazione del parametro table2 nel contesto della riga corrente dal parametro 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 nel parametro table1 e la tabella risultante dalla valutazione del parametro table2 nel contesto della riga corrente dal parametro table1.

Osservazioni:

  • Se la valutazione del parametro table2 per la riga corrente nel parametro table1 restituisce una tabella vuota, la tabella dei risultati non conterrà la riga corrente dal parametro table1. Questo comportamento è diverso da GENERATEALL(), in cui la riga corrente da table1 sarà inclusa nei risultati e le colonne corrispondenti a table2 conterranno valori Null per questa riga.

  • Tutti i nomi di colonna di table1 e table2 devono essere diversi, altrimenti viene restituito un errore.

  • Questa funzione non è supportata per l'uso nella modalità DirectQuery se usata in 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 geografica e categoria prodotto per il canale dei rivenditori, come la tabella seguente:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Reseller Sales]
Europa Accessori $ 142.227,27
Europa Bikes $ 9.970.200,44
Europa Clothing $ 365.847,63
Europa Componenti $ 2.214.440,19
America del Nord Accessori $ 379.305,15
America del Nord Bikes $ 52.403.796,85
America del Nord Clothing $ 1.281.193,26
America del Nord Componenti $ 8.882.848,05
Pacifico Accessori $ 12.769,57
Pacifico Bikes $ 710.677,75
Pacifico Clothing $ 22.902,38
Pacifico Componenti $ 108.549,71

La formula seguente produce la tabella riportata sopra:

GENERATE(  
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])  
,SUMMARIZE(ProductCategory   
, [ProductCategoryName]  
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])  
)  
)  
  1. La prima istruzione SUMMARIZE, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), produce una tabella di gruppi territorio in cui ogni riga è un gruppo territorio, come illustrato di seguito:

    SalesTerritory[SalesTerritoryGroup]
    America del Nord
    Europa
    Pacifico
    N/D
  2. La seconda istruzione SUMMARIZE, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), produce una tabella di gruppi di categoria prodotto con le vendite del rivenditore per ogni gruppo, come illustrato di seguito:

    ProductCategory[ProductCategoryName] [Reseller Sales]
    Bikes $ 63.084.675,04
    Componenti $ 11.205.837,96
    Clothing $ 1.669.943,27
    Accessori $ 534.301,99
  3. Tuttavia, quando si prende la tabella precedente e la si valuta nel contesto di ogni riga derivante dalla tabella gruppi territorio, si ottengono risultati diversi per ogni territorio.