GENERATE
platí pro:Počítaný sloupec
Počítaná tabulka
míra
vizuální
Vrátí tabulku s kartézským součinem mezi jednotlivými řádky v tabulka1 a tabulkou, která je výsledkem vyhodnocení tabulky2 v kontextu aktuálního řádku z tabulky1.
Syntax
GENERATE(<table1>, <table2>)
Parametry
Semestr | Definice |
---|---|
table1 |
Libovolný DAX výraz, který vrací tabulku. |
table2 |
Libovolný DAX výraz, který vrací tabulku. |
Návratová hodnota
Tabulka s kartézským součinem mezi jednotlivými řádky v tabulka1 a tabulkou, která je výsledkem vyhodnocení tabulky2 v kontextu aktuálního řádku z tabulky1
Poznámky
Pokud vyhodnocení tabulky2 pro aktuální řádek v tabulka1 vrátí prázdnou tabulku, výsledná tabulka nebude obsahovat aktuální řádek z tabulky tabulka1. To se liší od GENERATEALL(), kde bude aktuální řádek z tabulky tabulka1 zahrnut do výsledků a sloupců odpovídajících tabulce2 budou mít pro tento řádek hodnoty null.
Všechny názvy sloupců z tabulky1 a tabulka 2 musí být jiné nebo se vrátí chyba.
Tato funkce není podporována pro použití v režimu DirectQuery při použití v počítaných sloupcích nebo pravidlech zabezpečení na úrovni řádků (RLS).
Příklad
V následujícím příkladu chce uživatel souhrnnou tabulku prodeje podle oblastí a kategorie produktů pro kanál prodejců, například následující tabulka:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Reseller Sales] |
---|---|---|
Evropa | Příslušenství | $ 142,227,27 |
Evropa | Kola | $ 9,970,200,44 |
Evropa | Oděv | $ 365,847,63 |
Evropa | Součásti | $ 2,214,440,19 |
Severní Amerika | Příslušenství | $ 379,305,15 |
Severní Amerika | Kola | $ 52,403,796,85 |
Severní Amerika | Oděv | $ 1,281,193,26 |
Severní Amerika | Součásti | $ 8,882,848,05 |
Mírumilovný | Příslušenství | $ 12,769,57 |
Mírumilovný | Kola | $ 710,677.75 |
Mírumilovný | Oděv | $ 22,902,38 |
Mírumilovný | Součásti | $ 108,549,71 |
Následující vzorec vytvoří výše uvedenou tabulku:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
První příkaz SUMMARIZE,
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
, vytvoří tabulku skupin oblastí, kde každý řádek je skupina oblastí, jak je znázorněno níže:SalesTerritory[SalesTerritoryGroup] Severní Amerika Evropa Mírumilovný SODÍK Druhý příkaz SUMMARIZE,
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
, vytvoří tabulku skupin Product Category se skupinami Reseller sales pro každou skupinu, jak je znázorněno níže:ProductCategory[ProductCategoryName] [Reseller Sales] Kola $ 63,084,675,04 Součásti $ 11,205,837,96 Oděv $ 1,669,943,27 Příslušenství $ 534,301,99 Kč Když ale vezmete výše uvedenou tabulku a vyhodnotíte ji v kontextu každého řádku z tabulky skupin oblastí, získáte pro každou oblast jiné výsledky.