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


Функция SUMMARIZE (DAX)

Возвращает сводную таблицу с запрошенными итогами для набора групп.

Синтаксис

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)

Параметры

  • table
    Любое выражение DAX, возвращающее таблицу данных.

  • groupBy_columnName
    (Необязательно) Полное имя существующего столбца, которое используется для создания суммарных групп на основе находящихся в нем значений. Этот параметр не может быть выражением.

  • name
    Имя, присвоенное столбцу итогов или сводки, заключенное в двойные кавычки.

  • expression
    Любое выражение DAX, возвращающее одно скалярное значение, в котором выражение вычисляется несколько раз (для каждой строки или контекста).

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

Таблица с выбранными столбцами в качестве аргументов groupBy_columnName и столбцами итогов, созданными с использованием аргументов name.

Замечания

  1. Каждому столбцу, для которого определяется имя, должно соответствовать выражение, в противном случае возвращается ошибка. Первый аргумент (name) определяет имя столбца в результатах. Второй аргумент (expression) определяет вычисления, выполняемые для получения значения для всех строк в этом столбце.

  2. Столбец groupBy_columnName должен существовать в таблице table или в таблице, связанной с таблицей table.

  3. Все имена должны заключаться в двойные кавычки ("").

  4. Функция группирует выбранные наборы строк в набор строк итогов, используя значения одного или нескольких столбцов groupBy_columnName. Возвращается одна строка для каждой группы.

Пример

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

SUMMARIZE(ResellerSales_USD
      , DateTime[CalendarYear]
      , ProductCategory[ProductCategoryName]
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
      )

Следующая таблица содержит данные в виде, в котором они будут получены любой функцией, ожидающей получения таблицы.

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Велосипеды

12968255.42

36167.6592

2005

Велосипеды

6958251.043

4231.1621

2006

Велосипеды

18901351.08

178175.8399

2007

Велосипеды

24256817.5

276065.992

2008

Запчасти

2008052.706

39.9266

2005

Запчасти

574256.9865

0

2006

Запчасти

3428213.05

948.7674

2007

Запчасти

5195315.216

4226.0444

2008

Одежда

366507.844

4151.1235

2005

Одежда

31851.1628

90.9593

2006

Одежда

455730.9729

4233.039

2007

Одежда

815853.2868

12489.3835

2008

Принадлежности

153299.924

865.5945

2005

Принадлежности

18594.4782

4.293

2006

Принадлежности

86612.7463

1061.4872

2007

Принадлежности

275794.8403

4756.6546

Дополнительные параметры SUMMARIZE

SUMMARIZE с ROLLUP

Добавление синтаксиса ROLLUP() изменяет поведение функции SUMMARIZE путем добавления строк свертки к результату в столбцах groupBy_columnName.

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)

Параметры ROLLUP

  • groupBy_columnName
    Полное имя существующего столбца, который будет использоваться для создания групп на основе найденных в нем значений. Этот параметр не может быть выражением.

Примечание: Все остальные параметры SUMMARIZE описываются выше, и их описание не приводится в этом разделе для краткости.

Замечания

  • На столбцы, указанные в выражении ROLLUP, нельзя ссылаться как на часть столбцов groupBy_columnName.

Пример

В следующем примере строки свертки добавляются к столбцам Group-By вызова функции SUMMARIZE.

SUMMARIZE(ResellerSales_USD
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

Следующая таблица содержит данные в виде, в котором они будут получены любой функцией, ожидающей получения таблицы.

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Велосипеды

12968255.42

36167.6592

2005

Велосипеды

6958251.043

4231.1621

2006

Велосипеды

18901351.08

178175.8399

2007

Велосипеды

24256817.5

276065.992

2008

Запчасти

2008052.706

39.9266

2005

Запчасти

574256.9865

0

2006

Запчасти

3428213.05

948.7674

2007

Запчасти

5195315.216

4226.0444

2008

Одежда

366507.844

4151.1235

2005

Одежда

31851.1628

90.9593

2006

Одежда

455730.9729

4233.039

2007

Одежда

815853.2868

12489.3835

2008

Принадлежности

153299.924

865.5945

2005

Принадлежности

18594.4782

4.293

2006

Принадлежности

86612.7463

1061.4872

2007

Принадлежности

275794.8403

4756.6546

2008

15496115.89

41224.3038

2005

7582953.67

4326.4144

2006

22871907.85

184419.1335

2007

30543780.84

297538.0745

76494758.25

527507.9262

ROLLUPGROUP

Функция ROLLUPGROUP() может использоваться для вычисления групп подытогов. При использовании вместо ROLLUP функция ROLLUPGROUP возвращает тот же результат путем добавления строк свертки к результатам в столбцах groupBy_columnName. Но для предотвращения появления частичных подытогов в строках свертки можно дополнительно вводить ROLLUPGROUP() в конструкции ROLLUP.

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

SUMMARIZE(ResellerSales_USD
      , ROLLUP(ROLLUPGROUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName]))
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
)

Следующая таблица содержит данные в виде, в котором они будут получены любой функцией, ожидающей получения таблицы.

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

2008

Велосипеды

12968255.42

36167.6592

2005

Велосипеды

6958251.043

4231.1621

2006

Велосипеды

18901351.08

178175.8399

2007

Велосипеды

24256817.5

276065.992

2008

Запчасти

2008052.706

39.9266

2005

Запчасти

574256.9865

0

2006

Запчасти

3428213.05

948.7674

2007

Запчасти

5195315.216

4226.0444

2008

Одежда

366507.844

4151.1235

2005

Одежда

31851.1628

90.9593

2006

Одежда

455730.9729

4233.039

2007

Одежда

815853.2868

12489.3835

2008

Принадлежности

153299.924

865.5945

2005

Принадлежности

18594.4782

4.293

2006

Принадлежности

86612.7463

1061.4872

2007

Принадлежности

275794.8403

4756.6546

76494758.25

527507.9262

SUMMARIZE с ISSUBTOTAL

Позволяет пользователю создавать дополнительный столбец в функции Summarize, возвращающий значение True, если строка содержит значение подытогов для столбца, заданного в качестве аргумента для ISSUBTOTAL. В противном случае возвращается значение False.

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, {<expression>|ISSUBTOTAL(<columnName>)}]…)

Параметры ISSUBTOTAL

  • columnName
    Имя любого столбца в таблице функции SUMMARIZE или любого столбца в связанной таблице.

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

Значение True, если строка содержит значение подытогов для столбца, заданного в качестве аргумента, в противном случае — значение False

Замечания

  • ISSUBTOTAL может использоваться только в части выражения функции SUMMARIZE.

  • Инструкции ISSUBTOTAL должен предшествовать соответствующий столбец name.

Пример

В следующем образце создается столбец ISSUBTOTAL() для каждого из столбцов ROLLUP() в вызове функции SUMMARIZE().

SUMMARIZE(ResellerSales_USD
      , ROLLUP( DateTime[CalendarYear], ProductCategory[ProductCategoryName])
      , "Sales Amount (USD)", SUM(ResellerSales_USD[SalesAmount_USD])
      , "Discount Amount (USD)", SUM(ResellerSales_USD[DiscountAmount])
      , "Is Sub Total for DateTimeCalendarYear", ISSUBTOTAL(DateTime[CalendarYear])
      , "Is Sub Total for ProductCategoryName", ISSUBTOTAL(ProductCategory[ProductCategoryName])
)

Следующая таблица содержит данные в виде, в котором они будут получены любой функцией, ожидающей получения таблицы.

[Is Sub Total for DateTimeCalendarYear]

[Is Sub Total for ProductCategoryName]

DateTime[CalendarYear]

ProductCategory[ProductCategoryName]

[Sales Amount (USD)]

[Discount Amount (USD)]

FALSE

FALSE

FALSE

FALSE

2008

Велосипеды

12968255.42

36167.6592

FALSE

FALSE

2005

Велосипеды

6958251.043

4231.1621

FALSE

FALSE

2006

Велосипеды

18901351.08

178175.8399

FALSE

FALSE

2007

Велосипеды

24256817.5

276065.992

FALSE

FALSE

2008

Запчасти

2008052.706

39.9266

FALSE

FALSE

2005

Запчасти

574256.9865

0

FALSE

FALSE

2006

Запчасти

3428213.05

948.7674

FALSE

FALSE

2007

Запчасти

5195315.216

4226.0444

FALSE

FALSE

2008

Одежда

366507.844

4151.1235

FALSE

FALSE

2005

Одежда

31851.1628

90.9593

FALSE

FALSE

2006

Одежда

455730.9729

4233.039

FALSE

FALSE

2007

Одежда

815853.2868

12489.3835

FALSE

FALSE

2008

Принадлежности

153299.924

865.5945

FALSE

FALSE

2005

Принадлежности

18594.4782

4.293

FALSE

FALSE

2006

Принадлежности

86612.7463

1061.4872

FALSE

FALSE

2007

Принадлежности

275794.8403

4756.6546

FALSE

TRUE

FALSE

TRUE

2008

15496115.89

41224.3038

FALSE

TRUE

2005

7582953.67

4326.4144

FALSE

TRUE

2006

22871907.85

184419.1335

FALSE

TRUE

2007

30543780.84

297538.0745

TRUE

TRUE

76494758.25

527507.9262