Sdílet prostřednictvím


GENEROVAT

Platí pro: Výpočet počítané tabulky Počítaná tabulka Výpočet vizuálu

Vrátí tabulku s kartézským součinem mezi jednotlivými řádky v tabulce1 a tabulkou, která je výsledkem vyhodnocení tabulky2 v kontextu aktuálního řádku z tabulky1.

Syntaxe

GENERATE(<table1>, <table2>)  

Parametry

Pojem definice
tabulka 1 Libovolný výraz DAX, který vrací tabulku.
tabulka 2 Libovolný výraz DAX, který vrací tabulku.

Vrácená hodnota

Tabulka s kartézským součinem mezi jednotlivými řádky v tabulce1 a tabulkou, která je výsledkem vyhodnocení tabulky2 v kontextu aktuálního řádku z tabulky1

Poznámky

  • Pokud vyhodnocení tabulky 2 pro aktuální řádek v tabulce1 vrátí prázdnou tabulku, výsledná tabulka nebude obsahovat aktuální řádek z tabulky1. To se liší od funkce GENERATEALL(), kde bude aktuální řádek z tabulky1 zahrnut do výsledků a sloupce odpovídající tabulce2 budou mít pro tento řádek hodnoty null.

  • Všechny názvy sloupců z tabulky1 a table2 se musí lišit 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]
Evropě Accessories $ 142,227,27
Evropě Bikes $ 9,970,200,44
Evropě Clothing $ 365,847,63
Evropě Komponenty $ 2,214,440,19
Severní Amerika Accessories $ 379,305,15
Severní Amerika Bikes $ 52,403,796,85
Severní Amerika Clothing $ 1,281,193,26
Severní Amerika Komponenty $ 8,882,848,05
Tichomoří Accessories $ 12,769,57
Tichomoří Bikes $ 710,677.75
Tichomoří Clothing $ 22,902,38
Tichomoří Komponenty $ 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])  
)  
)  
  1. První příkaz SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])SUMMARIZE vytvoří tabulku skupin oblastí, kde každý řádek je skupina oblastí, jak je znázorněno níže:

    SalesTerritory[SalesTerritoryGroup]
    Severní Amerika
    Evropě
    Tichomoří
    NA
  2. Druhý příkaz SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))SUMMARIZE vytvoří tabulku skupin Kategorií produktů s prodejem prodejců pro každou skupinu, jak je znázorněno níže:

    ProductCategory[ProductCategoryName] [Reseller Sales]
    Bikes $ 63,084,675,04
    Komponenty $ 11,205,837,96
    Clothing $ 1,669,943,27
    Accessories $ 534,301,99 Kč
  3. 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.