Функция ALLSELECTED (DAX)
Удаляет фильтры содержимого из столбцов и строк в текущем запросе, сохраняя все остальные фильтры содержимого и явные фильтры.
Функция ALLSELECTED возвращает содержимое, представляющее все строки и столбцы в запросе, сохраняя явные фильтры и фильтры содержимого, не относящиеся к фильтрам строк и столбцов. Эту функцию можно использовать для получения визуальных итогов в запросах.
Синтаксис
ALLSELECTED([<tableName> | <columnName>])
Параметры
tableName
Имя существующей таблицы в стандартном синтаксисе DAX. Этот параметр не может быть выражением. Этот параметр является необязательным.columnName
Имя существующего столбца (обычно полное) в стандартном синтаксисе DAX. Не может быть выражением. Этот параметр является необязательным.
Возвращаемое значение
Содержимое запроса без фильтров строк и столбцов.
Замечания
Эта функция имеет один аргумент или не имеет аргументов. Если аргумент указан, он представляет tableName или columnName.
Эта функция отличается от ALL(), поскольку она сохраняет все фильтры, явно заданные в запросе, и все фильтры содержимого, не относящиеся к строкам и столбцам.
Пример
В следующем примере показано формирование визуальных итогов разных уровней в табличном отчете с помощью выражений DAX. В отчете два (2) предыдущие фильтры были применены к данным Reseller Sales; один по Sales Territory Group = Europe, а другой по Promotion Type = Volume Discount. После применения фильтров визуальные итоги можно вычислить для всего отчета, для всех лет или для всех категорий продуктов. Кроме того, для иллюстрации также подсчитывается общий итог по всем товарооборотам торговых посредников, при этом удаляются все фильтры в отчете. Вычисление следующего выражения DAX дает таблицу со всеми сведениями, необходимыми для построения таблицы с визуальными итогами.
define
measure 'Reseller Sales'[Reseller Sales Amount]=sum('Reseller Sales'[Sales Amount])
measure 'Reseller Sales'[Reseller Grand Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALL('Reseller Sales'))
measure 'Reseller Sales'[Reseller Visual Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED())
measure 'Reseller Sales'[Reseller Visual Total for All of Calendar Year]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Date'[Calendar Year]))
measure 'Reseller Sales'[Reseller Visual Total for All of Product Category Name]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Product Category'[Product Category Name]))
evaluate
CalculateTable(
//CT table expression
summarize(
//summarize table expression
crossjoin(distinct('Product Category'[Product Category Name]), distinct('Date'[Calendar Year]))
//First Group by expression
, 'Product Category'[Product Category Name]
//Second Group by expression
, 'Date'[Calendar Year]
//Summary expressions
, "Reseller Sales Amount", [Reseller Sales Amount]
, "Reseller Grand Total", [Reseller Grand Total]
, "Reseller Visual Total", [Reseller Visual Total]
, "Reseller Visual Total for All of Calendar Year", [Reseller Visual Total for All of Calendar Year]
, "Reseller Visual Total for All of Product Category Name", [Reseller Visual Total for All of Product Category Name]
)
//CT filters
, 'Sales Territory'[Sales Territory Group]="Europe", 'Promotion'[Promotion Type]="Volume Discount"
)
order by [Product Category Name], [Calendar Year]
После выполнения указанного выше выражения в среде SQL Server Management Studio в табличной модели AdventureWorks DW 2012 формируются следующие результаты.
[Имя категории продукта] |
[Календарный год] |
[Товарооборот торгового посредника] |
[Общие продажи торгового посредника] |
[Визуальный итог торгового посредника] |
[Визуальный итог торгового посредника за весь календарный год] |
[Визуальный итог торгового посредника для всего имени категории продукта] |
---|---|---|---|---|---|---|
Accessories |
2000 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2001 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2002 |
625.7933 |
80450596.9823 |
877006.7987 |
38786.018 |
91495.3104 |
Accessories |
2003 |
26037.3132 |
80450596.9823 |
877006.7987 |
38786.018 |
572927.0136 |
Accessories |
2004 |
12122.9115 |
80450596.9823 |
877006.7987 |
38786.018 |
212584.4747 |
Accessories |
2005 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2006 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Bikes |
2000 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2001 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2002 |
73778.938 |
80450596.9823 |
877006.7987 |
689287.7939 |
91495.3104 |
Bikes |
2003 |
439771.4136 |
80450596.9823 |
877006.7987 |
689287.7939 |
572927.0136 |
Bikes |
2004 |
175737.4423 |
80450596.9823 |
877006.7987 |
689287.7939 |
212584.4747 |
Bikes |
2005 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2006 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Clothing |
2000 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2001 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2002 |
12132.4334 |
80450596.9823 |
877006.7987 |
95090.7757 |
91495.3104 |
Clothing |
2003 |
58234.2214 |
80450596.9823 |
877006.7987 |
95090.7757 |
572927.0136 |
Clothing |
2004 |
24724.1209 |
80450596.9823 |
877006.7987 |
95090.7757 |
212584.4747 |
Clothing |
2005 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2006 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Components |
2000 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2001 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2002 |
4958.1457 |
80450596.9823 |
877006.7987 |
53842.2111 |
91495.3104 |
Components |
2003 |
48884.0654 |
80450596.9823 |
877006.7987 |
53842.2111 |
572927.0136 |
Components |
2004 |
80450596.9823 |
877006.7987 |
53842.2111 |
212584.4747 |
|
Components |
2005 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2006 |
80450596.9823 |
877006.7987 |
53842.2111 |
Отчет состоит из следующих столбцов.
Reseller Sales Amount
Фактическое значение товарооборота торгового посредника за год и по категории продуктов. Это значение отображается в ячейке в центре отчета, в точке пересечения года и категории.Визуальный итог торгового посредника за весь календарный год
Общее значение по категории продуктов за все годы. В отчете это значение отображается в конце столбца или строки для данной категории продуктов и по всем годам.Визуальный итог торгового посредника для всего имени категории продукта
Общее значение за год по всем категориям продуктов. В отчете это значение отображается в конце столбца или строки для данного года и по всем категориям продуктов.Визуальный итог торгового посредника
Общее значение по всем годам и категориям продуктов. Обычно это значение отображается в правом нижнем углу таблицы.Общие продажи торгового посредника
Это общий итог по всему товарообороту торгового посредника до применения каких-либо фильтров. Обратите внимание на разницу со значением [Визуальный итог торгового посредника]. Вы, конечно же, помните, что в этом отчете есть два (2) фильтра: один по группе категорий продуктов, а второй по типу продвижения.
В следующем примере показано использование функции ALLSELECTED() без аргументов для описания способов вычисления соотношения с итоговым значением, показанным в таблице, фильтрация которой выполнялась с помощью горизонтальных и вертикальных срезов. В этом примере используется SQL Server 2012, выпуск PowerPivot для Excel и Образец данных PowerPivot (DAX_AdventureWorks).
В списке полей PowerPivot перетащите столбец ResellerSales [SalesAmount_USD] в область Значения.
Перетащите столбец Promotion[PromotionType] в область Вертикальные срезы. Выберите срезы Продукты, снятые с производства, Избыточные запасы и Сезонная скидка.
Перетащите столбец SalesTerritory[SalesTerritoryGroup] в область Горизонтальные срезы. Выберите срез для области Европа.
Значение Sum Of SalesAmount_USD должно быть $ 19 614,37
Перетащите столбец ProductCategory[ProductCategoryName] в область Метки строк, а DateTime[CalendarYear] в область Метки столбцов.
Таблица должна выглядеть следующим образом.
SalesTerritoryGroup
Европа
Северная Америка
Pacific
NA
PromotionType
Неподдерживаемые продукты
Sum of SalesAmount_USD
Column Labels
Избыточные запасы
Метки строк
2006
2007
2008
Grand Total
Новый продукт
Accessories
$1,111.22
$3,414.43
$4,525.66
Без скидки
Bikes
$8,834.94
$6,253.78
$15,088.72
Сезонная скидка
Grand Total
$9,946.16
$3,414.43
$6,253.78
$19,614.37
Оптовая скидка
С помощью карманного калькулятора убедитесь, что сумма $ 3 414,43 (для аксессуаров в 2007 г.) составляет 17,41 % от суммы $ 19 614,37.
С помощью карманного калькулятора проверьте результаты вручную и убедитесь, что сумма $ 6 253,78 (для велосипедов в 2004 г.) составляет 31,88 % от суммы $ 19 614,37.
С помощью карманного калькулятора проверьте результаты вручную и убедитесь, что сумма $ 15 088,72 (для общего итога продаж велосипедов) составляет 76,93 % от суммы $ 19 614,37.
Удалите столбец ResellerSales [SalesAmount_USD] из области Значения.
Создайте меру с именем Соотношение по всем торговым посредникам в таблице ResellerSales с использованием следующей формулы (для результата используйте формат процентов):
=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())
Таблица должна выглядеть следующим образом.
SalesTerritoryGroup |
||||||
Европа |
Северная Америка |
|||||
Pacific |
NA |
|||||
PromotionType |
||||||
Неподдерживаемые продукты |
Соотношение по всем торговым посредникам |
Column Labels |
||||
Избыточные запасы |
Метки строк |
2006 |
2007 |
2008 |
Grand Total |
|
Новый продукт |
Accessories |
5.67 % |
17.41 % |
23.07 % |
||
Без скидки |
Bikes |
45.04 % |
31.88 % |
76.93 % |
||
Сезонная скидка |
Grand Total |
50.71 % |
17.41 % |
31.88 % |
100.00 % |
|
Оптовая скидка |
Сравните результаты, полученные при использовании карманного калькулятора, с результатами в Соотношении по всем торговым посредникам. Результаты должны быть идентичны. Значение знаменателя зафиксировано как значение в нижней части таблицы.
Поскольку формула CALCULATE в знаменателе использует функцию ALLSELECTED, знаменатель представляет общий итог продаж в нижней части таблицы после применения вертикальных и горизонтальных срезов и срезов по страницам, но до применения срезов по строкам и столбцам.
Примечание: При наличии явных фильтров в выражении эти фильтры также применяются к выражению.