Функция ALL

Возвращает все строки в таблице или все значения в столбце, не учитывая применяемые фильтры. Эта функция полезна для очистки фильтров и создания вычислений по всем строкам таблицы.

Синтаксис

ALL( {<table> | <column>[, <column>[, <column>[,…]]]} )

Параметры

Элемент

Определение

table

Таблица, для которой нужно очистить фильтры.

column

Столбец, для которого нужно очистить фильтры.

Аргументом функции ALL должна быть ссылка на базовую таблицу или на базовый столбец. С функцией ALL нельзя использовать табличные выражения и выражения столбцов.

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

Таблица или столбец с удаленными фильтрами.

Замечания

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

<Состояние раздела. Некоторые сведения в этом разделе являются частью предварительной документации и могут измениться в следующих выпусках. Предварительная документация описывает новые компоненты или изменения существующих компонентов Microsoft SQL Server 2014 (CTP-версия 1).В случае, если столбец [Column] отмечен как столбец Date с использованием окна «Пометить как таблицу дат»

Как описано в следующей таблице, функции ALL и ALLEXCEPT можно использовать в различных сценариях.

Функция и использование

Описание

ALL(таблица)

Удаляет все фильтры из указанной таблицы. Функция ALL(таблица) фактически возвращает все значения в таблице, удаляя все фильтры из контекста, которые применялись бы в противном случае.

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

ALL (Column[, Column[, …]])

Удаляет все фильтры из указанных столбцов в таблице. Все остальные фильтры в таблице, применяемые к другим столбцам, продолжают действовать. Все аргументы-столбцы должны принадлежать одной таблице.

Вариант ALL(столбец) удобно использовать, если нужно удалить фильтры контекста для одного или нескольких заданных столбцов и сохранить все остальные фильтры контекста.

Этот сценарий показан во втором и третьем примерах.

ALLEXCEPT(Table, Column1 [,Column2]...)

Удаляет все фильтры контекста в таблице, кроме фильтров, примененных к указанным столбцам.

Это удобно в ситуациях, когда нужно удалить фильтры из многих, но не всех столбцов в таблице.

Пример. Вычисление отношения отдельной категории продаж к общему объему продаж

Описание

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

В следующей таблице показаны результаты для случая, когда создается новая мера с именем All Reseller Sales Ratio с использованием формулы, показанной в поле кода. Чтобы увидеть работу образца, добавьте поле CalendarYear в область Метки строк сводной таблицы, а поле ProductCategoryName — в область Метки столбцов. Затем перетащите меру «Отношение продаж по всем торговым посредникам» в область Значения сводной таблицы. Для просмотра результатов в виде процентного соотношения используйте функции форматирования Excel, чтобы применить к ячейкам, содержащим меру, формат процентов.

All Reseller Sales

Column Labels

 

 

 

 

Row Labels

Accessories

Bikes

Clothing

Components

Grand Total

2005

0.02%

9.10%

0.04%

0.75%

9.91%

2006

0.11%

24.71%

0.60%

4.48%

29.90%

2007

0.36%

31.71%

1.07%

6.79%

39.93%

2008

0.20%

16.95%

0.48%

2.63%

20.26%

Grand Total

0.70%

82.47%

2.18%

14.65%

100.00%

Код

=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])

Комментарии

Формула составляется следующим образом.

  1. Числитель, SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]), представляет сумму значений в столбце ResellerSales_USD[SalesAmount_USD] для текущей ячейки в сводной таблице с учетом фильтров контекста, примененных к столбцам CalendarYear и ProductCategoryName.

  2. Для знаменателя сначала указывается таблица ResellerSales_USD и используется функция ALL для удаления всех фильтров контекста в таблице.

  3. Затем вызывается функция SUMX для суммирования значений в столбце ResellerSales_USD[SalesAmount_USD]. Иными словами, вычисляется сумма ResellerSales_USD[SalesAmount_USD] для продаж всех торговых посредников.

Дополнительные сведения о создании мер см. в разделе Create a Measure.

Примечание

В приведенном выше примере используются таблицы ResellerSales_USD, DateTime и ProductCategory из образца книги DAX.Дополнительные сведения об образцах см. в разделе Получение образца данных.

Пример. Вычислить отношение продаж продукта к общим продажам в течение текущего года

Описание

Пусть нужно создать таблицу, которая будет содержать процентное отношение продаж за несколько лет для категории продукта (ProductCategoryName). Чтобы получить процентное отношение для каждого года относительно каждого значения ProductCategoryName, нужно разделить сумму продаж за данный год для категории продукта на сумму продаж для этой же категории продукта за все годы. Иными словами, при вычислении знаменателя процентного отношения нужно сохранить фильтр для ProductCategoryName, но удалить фильтр для года.

В следующей таблице показаны результаты для случая, когда создается новая мера с именем Reseller Sales Year с использованием формулы, показанной в поле кода. Чтобы увидеть работу образца, добавьте поле CalendarYear в область Метки строк сводной таблицы, а поле ProductCategoryName в область Метки столбцов. Для просмотра результатов в виде процентного соотношения используйте функции форматирования Excel, чтобы применить к ячейкам, содержащим меру «Продажи торговых посредников за год», формат процентов.

Reseller Sales Year

Column Labels

 

 

 

 

Row Labels

Accessories

Bikes

Clothing

Components

Grand Total

2005

3.48%

11.03%

1.91%

5.12%

9.91%

2006

16.21%

29.96%

27.29%

30.59%

29.90%

2007

51.62%

38.45%

48.86%

46.36%

39.93%

2008

28.69%

20.56%

21.95%

17.92%

20.26%

Grand Total

100.00%

100.00%

100.00%

100.00%

100.00%

Код

=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))

Комментарии

Формула составляется следующим образом.

  1. Числитель, SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]), представляет сумму значений в столбце ResellerSales_USD[SalesAmount_USD] для текущей ячейки в сводной таблице с учетом фильтров контекста, примененных к столбцам CalendarYear и ProductCategoryName.

  2. Для знаменателя удаляется существующий фильтр на столбце CalendarYear с помощью функции ALL(столбец). Таким образом вычисляется сумма оставшихся строк таблицы ResellerSales_USD после применения существующих фильтров контекста из меток столбцов. В результате сумма для знаменателя вычисляется по выбранной категории ProductCategoryName (неявный фильтр контекста) для всех значений за год.

Дополнительные сведения о создании мер см. в разделе Create a Measure.

Примечание

В этом примере используются таблицы ResellerSales_USD, DateTime и ProductCategory из образца книги DAX.Дополнительные сведения об образцах см. в разделе Получение образца данных.

Пример. Вычислить вклад категорий продукта в общие продажи за год

Описание

Предположим, что нужно создать таблицу, отображающую процентное отношение продаж по годам для каждой категории продукта. Чтобы получить процентное отношение для каждой категории товаров за определенный год, нужно вычислить сумму продаж для данной категории продукта за год, n, а затем разделить полученное значение на сумму продаж за тот же год, n для всех категорий продуктов. Иными словами, при вычислении знаменателя процентного отношения нужно сохранить фильтр для года, но удалить фильтр для ProductCategoryName.

В следующей таблице показаны результаты для случая, когда создается новая мера с именем Reseller Sales CategoryName с использованием формулы, показанной в поле кода. Чтобы увидеть, как это работает, добавьте поле CalendarYear в область Метки строк сводной таблицы, а поле ProductCategoryName — в область Метки солбцов. Затем добавьте новую меру в область Значения сводной таблицы. Для просмотра результатов в виде процентного соотношения используйте функции форматирования Excel, чтобы применить к ячейкам, содержащим новую меру Reseller Sales CategoryName, формат процентов.

Reseller Sales CategoryName

Column Labels

 

 

 

 

Row Labels

Accessories

Bikes

Clothing

Components

Grand Total

2005

0.25%

91.76%

0.42%

7.57%

100.00%

2006

0.38%

82.64%

1.99%

14.99%

100.00%

2007

0.90%

79.42%

2.67%

17.01%

100.00%

2008

0.99%

83.69%

2.37%

12.96%

100.00%

Grand Total

0.70%

82.47%

2.18%

14.65%

100.00%

Код

=SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))

Комментарии

Формула составляется следующим образом.

  1. Числитель, SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]), представляет сумму значений в столбце ResellerSales_USD[SalesAmount_USD] для текущей ячейки в сводной таблице с учетом фильтров контекста, примененных к полям CalendarYear и ProductCategoryName.

  2. Для знаменателя удаляется фильтр на столбце ProductCategoryName с помощью функции All(столбец) и вычисляется сумма оставшихся строк таблицы ResellerSales_USD после применения существующих фильтров контекста из меток строк. В результате сумма для знаменателя вычисляется за выбранный год (неявный фильтр контекста) для всех значений ProductCategoryName.

Дополнительные сведения о создании мер см. в разделе Create a Measure.

Примечание

В этом примере используются таблицы ResellerSales_USD, DateTime и ProductCategory из образца книги DAX.Дополнительные сведения об образцах см. в разделе Получение образца данных.

См. также

Справочник

Функция ALL

Функция ALLEXCEPT

FILTER, функция

Другие ресурсы

Функции фильтров (DAX)