Поделиться через


GENERATEALL

применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления

Возвращает таблицу с декартовским продуктом между каждой строкой в таблице1 и таблицей, которая приводит к оценке таблицы 2 в контексте текущей строки из таблицы 1.

Синтаксис

GENERATEALL(<table1>, <table2>)

Параметры

Срок Определение
table1 Любое выражение DAX, возвращающее таблицу.
table2 Любое выражение DAX, возвращающее таблицу.

Возвращаемое значение

Таблица с декартовским продуктом между каждой строкой в таблице1 и таблицей, которая приводит к оценке таблицы 2 в контексте текущей строки из таблицы 1

Замечания

  • Если оценка таблицы 2 для текущей строки в таблице1 возвращает пустую таблицу, то текущая строка из таблицы 1 будет включена в результаты и столбцы, соответствующие таблице 2 будут иметь значения NULL для этой строки. Это отличается от GENERATE(), где текущая строка из таблицы 1 будет не быть включена в результаты.

  • Все имена столбцов из таблицы 1 и таблицы 2 должны отличаться или возвращается ошибка.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

В следующем примере пользователь хочет сводную таблицу продаж по регионам и категории продуктов для канала торговых посредников, например следующую таблицу:

SalesTerritory[SalesTerritoryGroup] ProductCategory[ProductCategoryName] [Продажи торговых посредников]
Европа Принадлежности $ 142,227,27
Европа Велосипеды $ 9,970,200,44
Европа Одежда $ 365,847,63
Европа Компоненты $ 2,214,440,19
NA Принадлежности
NA Велосипеды
NA Одежда
NA Компоненты
Северная Америка Принадлежности $ 379,305,15
Северная Америка Велосипеды $ 52,403,796,85
Северная Америка Одежда $ 1,281,193,26
Северная Америка Компоненты $ 8,882,848,05
Тихоокеанский Принадлежности $ 12,769,57
Тихоокеанский Велосипеды $ 710,677,75
Тихоокеанский Одежда $ 22,902,38
Тихоокеанский Компоненты $ 108,549,71

Следующая формула создает приведенную выше таблицу:

GENERATEALL(
SUMMARIZE(SalesTerritory, SalesTerritory[SalesTerritoryGroup])
,SUMMARIZE(ProductCategory
, [ProductCategoryName]
, "Reseller Sales", SUMX(RELATEDTABLE(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
)
)
  1. Первая SUMMARIZE создает таблицу групп территорий, где каждая строка — это группа территорий, например перечисленные ниже:

    SalesTerritory[SalesTerritoryGroup]
    Северная Америка
    Европа
    Тихоокеанский
    NA
  2. Второй SUMMARIZE создает таблицу групп категорий продуктов с продажами торгового посредника для каждой группы, как показано ниже:

    ProductCategory[ProductCategoryName] [Продажи торговых посредников]
    Велосипеды $ 63,084,675,04
    Компоненты $ 11,205,837,96
    Одежда $ 1,669,943,27
    Принадлежности $ 534,301,99
  3. Однако при получении приведенной выше таблицы и оценке таблицы в контексте каждой строки из таблицы групп территорий вы получите разные результаты для каждой территории.