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])  
)  
)  
  1. Первый оператор SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])SUMMARIZE создает таблицу групп территорий, где каждая строка является группой территорий, как показано ниже:

    SalesTerritory[SalesTerritoryGroup]
    Северная Америка
    Европа
    Тихоокеанский регион
    Неприменимо
  2. Второй оператор 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 долл. США
  3. Однако при получении приведенной выше таблицы и ее оценке в контексте каждой строки из таблицы групп территорий вы получаете разные результаты для каждой территории.