Функция ALLEXCEPT

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

ALLEXCEPT(<table>,<column>[,<column>[,…]])

Элемент

Определение

table

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

column

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

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

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

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

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

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

Описание

ALL(таблица)

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

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

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

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

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

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

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

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

В следующем примере представлена формула, которую можно использовать в мере. Дополнительные сведения о создании меры см. в разделе Create a Measure.

Эта формула суммирует SalesAmount_USD и использует функцию ALLEXCEPT, чтобы удалить все фильтры контекста в таблице DateTime, кроме фильтров, примененных к столбцу CalendarYear.

ПримечаниеПримечание

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

=CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLEXCEPT(DateTime, DateTime[CalendarYear]))

Поскольку в формуле используется функция ALLEXCEPT, то в случае, когда любой столбец таблицы DateTime, кроме столбца CalendarYear, используется для среза сводной таблицы, формула удаляет все фильтры среза и возвращает значение, равное сумме SalesAmount_USD для значения метки столбца, как показано в таблице 1.

Однако, если для среза сводной таблицы используется столбец CalendarYear, результаты будут другими. Поскольку столбец CalendarYear указан в качестве аргумента функции ALLEXCEPT, то, когда выполняется срез данных по году, к годам будет применяться фильтр на уровне строк, как показано в таблице 2. Читателю рекомендуется сравнить эти таблицы, чтобы получить представление о работе функции ALLEXCEPT().