Condividi tramite


GENERATE

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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])
)
)
  1. 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
  2. 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
  3. 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.