ALL
применяется:вычисляемый столбецвычисляемой таблицыизмерениевизуального вычисления
Возвращает все строки в таблице или все значения в столбце, игнорируя все фильтры, которые могли быть применены. Эта функция полезна для очистки фильтров и создания вычислений во всех строках таблицы.
Синтаксис
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
Параметры
Срок | Определение |
---|---|
table |
Таблица, в которой требуется очистить фильтры. |
column |
Столбец, на который требуется очистить фильтры. |
Аргумент функции ALL должен быть ссылкой на базовую таблицу или ссылку на базовый столбец. Нельзя использовать табличные выражения или выражения столбцов с функцией ALL.
Возвращаемое значение
Таблица или столбец с удаленными фильтрами.
Замечания
Эта функция сама по себе не используется, но служит промежуточной функцией, которая может использоваться для изменения набора результатов, по которым выполняется другое вычисление.
Обычное поведение для выражений DAX, содержащих функцию ALL() заключается в том, что все примененные фильтры будут игнорироваться. Однако существуют некоторые сценарии, в которых это не так из-за
auto-exist
, технология DAX, которая оптимизирует фильтрацию для уменьшения объема обработки, необходимого для определенных DAX запросов. Пример, в котором автоматически существуют и ALL() предоставляют непредвиденные результаты, заключается в фильтрации по двум или нескольким столбцам одной таблицы (например, при использовании срезов) и в той же таблице, которая использует ALL(). В этом случае автоматическое существование слиянием нескольких фильтров в один и будет фильтровать только по существующим сочетаниям значений. Из-за этого слияния мера будет вычисляться по существующим сочетаниям значений, а результат будет основан на отфильтрованных значениях вместо всех ожидаемых значений. Дополнительные сведения об автоматическом существовании и его влиянии на вычисления см. в статье о sql.bi.comMicrosoft MVP Альберто Феррари основные сведения о DAX auto-Exist.В следующей таблице описывается, как использовать функции ALL и ALLEXCEPT в разных сценариях.
Функция и использование Описание ALL() Удаляет все фильтры везде. ALL() можно использовать только для очистки фильтров, но не для возврата таблицы. ALL(таблица) Удаляет все фильтры из указанной таблицы. В результате ALL(таблица) возвращает все значения в таблице, удаляя все фильтры из контекста, которые в противном случае могли быть применены. Эта функция полезна при работе с множеством уровней группировки и требуется создать вычисление, которое создает соотношение агрегированного значения к общему значению. Первый пример демонстрирует этот сценарий. ALL (столбец[, столбец[, ...]]) Удаляет все фильтры из указанных столбцов в таблице; все остальные фильтры для других столбцов в таблице по-прежнему применяются. Все аргументы столбцов должны поступать из одной таблицы. Вариант ALL(столбец) полезен, если требуется удалить фильтры контекста для одного или нескольких конкретных столбцов и сохранить все остальные фильтры контекста. Второй и третий примеры демонстрируют этот сценарий. ALLEXCEPT(таблица, столбец1 [,столбец2]...) Удаляет все фильтры контекста в таблице, кроме фильтров, применяемых к указанным столбцам. Это удобное сочетание клавиш для ситуаций, в которых требуется удалить фильтры на многих, но не все столбцы в таблице. Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример 1
Вычисление соотношения продаж категории к общему объему продаж
Предположим, что вы хотите найти объем продаж для текущей ячейки в сводной таблице, разделенной на общую продажу для всех торговых посредников. Чтобы убедиться, что знаменатель совпадает независимо от того, как пользователь сводной таблицы может фильтровать или группировать данные, вы определяете формулу, которая использует ALL для создания правильного общего общего объема.
В следующей таблице показаны результаты при создании новой меры, все коэффициенты продаж торговых посредников, с помощью формулы, показанной в разделе кода. Чтобы узнать, как это работает, добавьте поле CalendarYear в область метки строк сводной таблицы и добавьте поле ProductCategoryName в область Метки столбцов. Затем перетащите меру коэффициент продаж всех торговых посредниковв область значений таблицы сводной таблицы. Чтобы просмотреть результаты в процентах, используйте функции форматирования Excel для применения процентного форматирования чисел к ячейкам, содержащим меру.
Метки строк | Принадлежности | Велосипеды | Одежда | Компоненты | Общий итог |
---|---|---|---|---|---|
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])
Формула создается следующим образом:
Числитель,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, — это сумма значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки сводной таблицы с фильтрами контекста, применяемыми к CalendarYear и ProductCategoryName.Для знаменателя необходимо указать таблицу, ResellerSales_USD и использовать функцию ALL для удаления всех фильтров контекста в таблице.
Затем функция SUMX используется для суммирования значений в столбце ResellerSales_USD[SalesAmount_USD]. Другими словами, вы получаете сумму ResellerSales_USD[SalesAmount_USD] для всех торговых посредников продаж.
Пример 2
Вычисление соотношения продаж продуктов к общему объему продаж за текущий год
Предположим, что вы хотите создать таблицу, показывающую процент продаж по сравнению с годами для каждой категории продукта (ProductCategoryName). Чтобы получить процент за каждый год по каждому значению ProductCategoryName, необходимо разделить сумму продаж за этот конкретный год и категорию продуктов на сумму продаж для одной категории продуктов на протяжении всех лет. Другими словами, вы хотите сохранить фильтр на ProductCategoryName, но удалить фильтр в год при расчете знаменателя процента.
В следующей таблице показаны результаты, когда новая мера, год продаж торгового посредника, создается с помощью формулы, показанной в разделе кода. Чтобы узнать, как это работает, добавьте поле CalendarYear в область
Метки строк | Принадлежности | Велосипеды | Одежда | Компоненты | Общий итог |
---|---|---|---|---|---|
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]))
Формула создается следующим образом:
Числитель,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, — это сумма значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки в сводной таблице с фильтрами контекста, примененными к столбцам CalendarYear и ProductCategoryName.Для знаменателя удалите существующий фильтр в CalendarYear с помощью функции ALL(столбец). Это вычисляет сумму по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток столбцов. Чистый эффект заключается в том, что для знаменателя сумма вычисляется по выбранному объекту ProductCategoryName (подразумеваемый фильтр контекста) и для всех значений года.
Пример 3
Вычисление вклада категорий продуктов в общий объем продаж в год
Предположим, что вы хотите создать таблицу, которая показывает процент продаж для каждой категории продуктов по годам. Чтобы получить процент для каждой категории продуктов в определенном году, необходимо вычислить сумму продаж для этой конкретной категории продуктов (ProductCategoryName) в году n, а затем разделить результирующее значение на сумму продаж за год n по всем категориям продуктов. Другими словами, вы хотите сохранить фильтр в год, но удалить фильтр на ProductCategoryName при вычислении знаменателя процента.
В следующей таблице показаны результаты, когда новая мера, имя категории продаж торгового посредника, создается с помощью формулы, показанной в разделе кода. Чтобы узнать, как это работает, добавьте поле CalendarYear в область меток строк сводной таблицы и добавьте поле ProductCategoryName в область Метки столбцов. Затем добавьте новую меру в область значений
Метки строк | Принадлежности | Велосипеды | Одежда | Компоненты | Общий итог |
---|---|---|---|---|---|
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]))
Формула создается следующим образом:
Числитель,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, — это сумма значений в ResellerSales_USD[SalesAmount_USD] для текущей ячейки в сводной таблице с фильтрами контекста, примененными к полям, CalendarYear и ProductCategoryName.Для знаменателя используется функция ALL(столбец), чтобы удалить фильтр по ProductCategoryName и вычислить сумму по оставшимся строкам в таблице ResellerSales_USD после применения существующих фильтров контекста из меток строк. Чистый эффект заключается в том, что для знаменателя сумма вычисляется за выбранный год (подразумеваемый фильтр контекста) и для всех значений ProductCategoryName.