Функция GENERATEALL (DAX)
Возвращает таблицу с декартовым произведением всех строк в таблице table1 и таблице, являющейся результатом вычисления table2 в контексте текущей строки из table1.
Синтаксис
GENERATEALL(<table1>, <table2>)
Параметры
table1
Любое выражение DAX, возвращающее таблицу.table2
Любое выражение DAX, возвращающее таблицу.
Возвращаемое значение
Таблица с декартовым произведением всех строк в таблице table1 и таблице, являющейся результатом вычисления table2 в контексте текущей строки из table1.
Замечания
Если при оценке table2 для текущей строки в table1 возвращается пустая таблица, то текущая строка table1 будет включена в результаты, а столбцы, соответствующие table2, будут содержать значения null для этой строки. В этом заключается отличие от функции GENERATE(), при использовании которой текущая строка из table1 не будет включена в результаты.
Все имена столбцов из таблиц table1 и table2 должны быть уникальными. В противном случае будет возвращена ошибка.
Пример
В следующем примере пользователю необходима сводная таблица с данными о продажах, отсортированным по региону и категории продукта, включающая продажи через посредников, аналогичная следующей.
SalesTerritory[SalesTerritoryGroup] |
ProductCategory[ProductCategoryName] |
[Reseller Sales] |
---|---|---|
Европа |
Accessories |
$ 142,227.27 |
Европа |
Bikes |
$ 9,970,200.44 |
Европа |
Clothing |
$ 365,847.63 |
Европа |
Components |
$ 2,214,440.19 |
Н/Д |
Accessories |
|
Н/Д |
Bikes |
|
Н/Д |
Clothing |
|
Н/Д |
Components |
|
Северная Америка |
Accessories |
$ 379,305.15 |
Северная Америка |
Bikes |
$ 52,403,796.85 |
Северная Америка |
Clothing |
$ 1,281,193.26 |
Северная Америка |
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 |
В следующем коде создается таблица, описанная выше:
GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
Первая инструкция SUMMARIZE создает таблицу групп территорий, где каждая строка представляет собой группу территорий, как показано ниже.
SalesTerritory[SalesTerritoryGroup]
Северная Америка
Европа
Pacific
Н/Д
Вторая инструкция SUMMARIZE создает таблицу групп категорий продуктов с продажами через посредников для всех групп, как показано ниже.
ProductCategory[ProductCategoryName]
[Reseller Sales]
Bikes
$ 63,084,675.04
Components
$ 11,205,837.96
Clothing
$ 1,669,943.27
Accessories
$ 534,301.99
Однако при использовании таблицы, приведенной выше, и ее оценки в контексте каждой строки в таблице групп территорий будут получены различные результаты для каждой территории.