Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zwraca tabelę zawierającą iloczyn kartezjański każdego wiersza w tabeli table1 i w tabeli będącej wynikiem obliczenia wyrażenia table2 w kontekście bieżącego wiersza z tabeli table1.
Składnia
GENERATE(<table1>, <table2>)
Parametry
table1
Dowolne wyrażenie języka DAX zwracające tabelę danych.table2
Dowolne wyrażenie języka DAX zwracające tabelę danych.
Wartość zwracana
Tabela zawierająca iloczyn kartezjański każdego wiersza w tabeli table1 i w tabeli będącej wynikiem obliczenia wyrażenia table2 w kontekście bieżącego wiersza z tabeli table1.
Uwagi
Jeśli w wyniku obliczenia wyrażenia table2 dla bieżącego wiersza w tabeli table1 zostanie zwrócona pusta tabela, wynikowa tabela nie będzie zawierać bieżącego wiersza z tabeli table1. Jest to zachowanie odmienne od zachowania funkcji GENERATEALL(), w przypadku której bieżący wiersz z tabeli table1 będzie umieszczony w wynikach, a kolumny odpowiadające tabeli table2 będą miały dla niego wartości null.
Wszystkie nazwy kolumn z tabel table1 i table2 muszą być unikatowe; w przeciwnym razie zostanie zwrócony błąd.
Przykład
W poniższym przykładzie użytkownik chce uzyskać tabelę podsumowania sprzedaży wg regionów i kategorii produktów dla kanału odsprzedawców, która będzie podobna do następującej tabeli:
SalesTerritory[SalesTerritoryGroup] |
ProductCategory[ProductCategoryName] |
[Reseller Sales] |
Europe |
Accessories |
$ 142,227.27 |
Europe |
Bikes |
$ 9,970,200.44 |
Europe |
Clothing |
$ 365,847.63 |
Europe |
Components |
$ 2,214,440.19 |
North America |
Accessories |
$ 379,305.15 |
North America |
Bikes |
$ 52,403,796.85 |
North America |
Clothing |
$ 1,281,193.26 |
North America |
Components |
$ 8,882,848.05 |
Pacific |
Accessories |
$ 12,769.57 |
Pacific |
Bikes |
$ 710,677.75 |
Pacific |
Clothing |
$ 22,902.38 |
Pacific |
Components |
$ 108,549.71 |
Powyższa tabela została utworzona za pomocą następującego kodu:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
Pierwsza instrukcja SUMMARIZE (SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])) tworzy tabelę grup terytoriów, gdzie każdy wiersz jest grupą terytoriów, tak jak pokazano poniżej:
SalesTerritory[SalesTerritoryGroup]
North America
Europe
Pacific
ND
Druga instrukcja SUMMARIZE (SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))) tworzy tabelę grup kategorii produktów ze sprzedażą odsprzedawców dla każdej grupy, tak jak pokazano poniżej:
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
Jednak wykonanie obliczeń na powyższej tabeli w kontekście każdego wiersza z tabeli grup terytoriów spowoduje uzyskanie innych wyników dla każdego terytorium.