GENERATE
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Возвращает таблицу с декартовским продуктом между каждой строкой в таблице1 и таблицей, которая приводит к оценке таблицы2 в контексте текущей строки из таблицы1.
GENERATE(<table1>, <table2>)
Термин | Определение |
---|---|
таблица1 | Любое выражение DAX, возвращающее таблицу. |
table2 | Любое выражение DAX, возвращающее таблицу. |
Таблица с декартовским продуктом между каждой строкой в таблице1 и таблицей, которая приводит к оценке таблицы2 в контексте текущей строки из таблицы1
Если оценка таблицы 2 для текущей строки в таблице1 возвращает пустую таблицу, результирующий таблица не будет содержать текущую строку из таблицы1. Это отличается от GENERATEALL(), где текущая строка из таблицы1 будет включена в результаты и столбцы, соответствующие таблице2 , будут иметь значения NULL для этой строки.
Все имена столбцов из таблицы1 и таблицы2 должны отличаться или возвращается ошибка.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
В следующем примере пользователь хочет сводную таблицу продаж по регионам и категории продуктов для канала торговых посредников, например следующую таблицу:
SalesTerritory[SalesTerritoryGroup] | ProductCategory[ProductCategoryName] | [Продажи торговых посредников] |
---|---|---|
Европа | Аксессуары | 142 227,27 долл. США |
Европа | Велосипеды | 9 970 200,44 долл. США |
Европа | Clothing | 365 847,63 долл. США |
Европа | Компоненты | 2 214 440,19 долл. США |
Северная Америка | Аксессуары | 379 305,15 долл. США |
Северная Америка | Велосипеды | 52 403 796,85 долл. США |
Северная Америка | Clothing | 1 281 193,26 долл. США |
Северная Америка | Компоненты | 8 882 848,05 долл. США |
Тихоокеанский регион | Аксессуары | 12 769,57 долл. США |
Тихоокеанский регион | Велосипеды | 710 677,75 долл. США |
Тихоокеанский регион | Clothing | 22 902,38 долл. США |
Тихоокеанский регион | Компоненты | 108 549,71 долл. США |
Следующая формула создает приведенную выше таблицу:
GENERATE(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
Первый оператор
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
SUMMARIZE создает таблицу групп территорий, где каждая строка является группой территорий, как показано ниже:SalesTerritory[SalesTerritoryGroup] Северная Америка Европа Тихоокеанский регион Неприменимо Второй оператор
SUMMARIZE(ProductCategory, [ProductCategoryName], "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD]))
SUMMARIZE создает таблицу групп категорий продуктов с продажами торгового посредника для каждой группы, как показано ниже:ProductCategory[ProductCategoryName] [Продажи торговых посредников] Велосипеды 63 084 675,04 долл. США Компоненты 11 205 837,96 долл. США Clothing 1 669 943,27 долл. США Аксессуары 534 301,99 долл. США Однако при получении приведенной выше таблицы и ее оценке в контексте каждой строки из таблицы групп территорий вы получаете разные результаты для каждой территории.