Del via


GENERATE

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

Returnerer en tabel med det kartesiske produkt mellem hver række i table1 og den tabel, der er resultatet af evalueringen af table2 i konteksten af den aktuelle række fra table1.

Syntaks

GENERATE(<table1>, <table2>)

Parametre

Udtryk Definition
table1 Ethvert DAX udtryk, der returnerer en tabel.
table2 Ethvert DAX udtryk, der returnerer en tabel.

Returværdi

En tabel med det kartesiske produkt mellem hver række i table1 og den tabel, der er resultatet af evalueringen af table2 i konteksten af den aktuelle række fra table1

Bemærkninger

  • Hvis evalueringen af table2 for den aktuelle række i table1 returnerer en tom tabel, indeholder resultattabellen ikke den aktuelle række fra table1. Dette er forskelligt fra GENERATEALL(), hvor den aktuelle række fra table1 medtages i resultaterne og kolonnerne, der svarer til table2- vil have null-værdier for den pågældende række.

  • Alle kolonnenavne fra table1 og table2- skal være forskellige, eller der returneres en fejl.

  • Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).

Eksempel

I følgende eksempel ønsker brugeren en oversigtstabel over salg efter område og produktkategori for forhandlerkanalen, f.eks. følgende tabel:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Forhandlersalg]
Europa Tilbehør 142.227,27 USD
Europa Cykler 9.970.200,44 USD
Europa Tøj 365.847,63 USD
Europa Komponenter 2.214.440,19 USD
Nordamerika Tilbehør 379.305,15 USD
Nordamerika Cykler 52.403.796,85 USD
Nordamerika Tøj 1.281.193,26 USD
Nordamerika Komponenter 8.882.848,05 USD
Stillehavet Tilbehør 12.769,57 USD
Stillehavet Cykler 710.677,75 USD
Stillehavet Tøj 22.902,38 USD
Stillehavet Komponenter 108.549,71 USD

Følgende formel opretter ovenstående tabel:

GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory 
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
  1. Den første SUMMARIZE sætning, SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup]), opretter en tabel over områdegrupper, hvor hver række er en områdegruppe, som vist nedenfor:

    SalesTerritory[SalesTerritoryGroup]
    Nordamerika
    Europa
    Stillehavet
    NA
  2. Den anden SUMMARIZE sætning, SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])), opretter en tabel over produktkategorigrupper med Forhandlersalg for hver gruppe, som vist nedenfor:

    ProductCategory[ProductCategoryName] [Forhandlersalg]
    Cykler 63.084.675,04 USD
    Komponenter 11.205.837,96 USD
    Tøj 1.669.943,27 USD
    Tilbehør 534.301,99 USD
  3. Men når du tager ovenstående tabel og evaluerer den i konteksten for hver række fra tabellen med områdegrupper, får du forskellige resultater for hvert område.