ALL

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

Синтаксис

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

Параметры

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

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

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

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

Примечания

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

  • Нормальным поведением выражений DAX, содержащих функцию ALL(), является то, что все применяемые фильтры будут игнорироваться. Однако существуют ситуации, в которых это не так, поскольку существует технология DAX Auto-Exist, которая оптимизирует фильтрацию, чтобы уменьшить объем обработки, необходимый для определенных запросов DAX. Приведем пример, в котором Auto-Exist и ALL() предоставляют непредвиденные результаты: при фильтрации двух или более столбцов одной таблицы (например, в случае использования срезов); при этом существует мера в той же таблице, в которой используется ALL(). В этом случае Auto-Exist выполнит слияние нескольких фильтров в один и будет фильтровать только существующие сочетания значений. Из-за этого слияния мера будет рассчитываться на основе существующих сочетаний значений, а результат будет основываться на отфильтрованных значениях, а не на всех значениях, как ожидалось. Дополнительные сведения о технологии Auto-Exist и ее влиянии на вычисления см. в статье Microsoft MVP Альберто Феррари Общие сведения о DAX Auto-Exist по адресу sql.bi.com.

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

    Функция и назначение Описание
    ALL() Удаляет все фильтры везде. ALL() можно использовать только для очистки фильтров, но не для возвращения таблицы.
    ALL(Таблица) Удаляет все фильтры из указанной таблицы. Фактически ALL(Таблица) возвращает все значения в таблице, удаляя все фильтры из контекста, которые могли быть применены. Эта функция полезна в случае, когда вы работаете со множеством уровней группирования и требуется создать вычисление, которое создает отношение агрегированного значения к общему значению. Этот сценарий демонстрируется в первом примере.
    ALL (Column[, Column[, …]]) Удаляет все фильтры из указанных столбцов в таблице. Все остальные фильтры в других столбцах таблицы по-прежнему применяются. Все аргументы столбца должны поступать из одной и той же таблицы. Вариант ALL(Column) полезен, если требуется удалить фильтры контекста для одного или нескольких конкретных столбцов и для сохранения всех остальных фильтров контекста. Этот сценарий демонстрируется во втором и третьем примерах.
    ALLEXCEPT(Table, Column1 [,Column2]...) Удаляет все фильтры контекста в таблице, за исключением фильтров, примененных к указанным столбцам. Это удобно в ситуациях, когда необходимо удалить фильтры для многих, но не всех столбцов в таблице.
  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример 1

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

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

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

Метки строк Accessories Bikes Экипировка Запчасти Общий итог
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 %
Общий итог 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] для продаж всех торговых посредников.

Пример 2

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

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

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

Метки строк Принадлежности Bikes Экипировка Запчасти Общий итог
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 %
Общий итог 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(Column). При этом вычисляется сумма по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток столбцов. Результатом является то, что сумма для знаменателя вычисляется по выбранной ProductCategoryName (неявный фильтр контекста) и для всех значений в году.

Пример 3

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

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

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

Метки строк Accessories Bikes Экипировка Запчасти Общий итог
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 %
Общий итог 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. Для знаменателя вы используете функцию ALL(Column), чтобы удалить фильтр по ProductCategoryName и вычислить сумму по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток строк. Результатом является то, что сумма для знаменателя вычисляется за выбранный год (неявный фильтр контекста) и для всех значений ProductCategoryName.

См. также:

Функции фильтрации
Функция ALL
Функция ALLEXCEPT
Функция FILTER