Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
применяется:
вычисляемый столбец
вычисляемой таблицы
измерение
визуального вычисления
Изменяет способ применения фильтров при оценке функции CALCULATE или CALCULATETABLE.
Синтаксис
KEEPFILTERS(<expression>)
Параметры
| Срок | Определение |
|---|---|
expression |
Любое выражение. |
Возвращаемое значение
Таблица значений.
Замечания
Вы используете KEEPFILTERS в контексте CALCULATE и CALCULATETABLE функций, чтобы переопределить стандартное поведение этих функций.
По умолчанию аргументы фильтра в таких функциях, как CALCULATE, используются в качестве контекста для оценки выражения, а такие аргументы фильтра для CALCULATE заменить все существующие фильтры по тем же столбцам. Новый контекст, затронутый аргументом фильтра для CALCULATE, влияет только на существующие фильтры по столбцам, упомянутым в качестве части аргумента фильтра. Фильтры для столбцов, отличных от упомянутых в аргументах CALCULATE или других связанных функций, остаются в силе и неуправляемы.
Функция KEEPFILTERS позволяет изменить это поведение. При использовании KEEPFILTERSвсе существующие фильтры в текущем контексте сравниваются со столбцами в аргументах фильтра, а пересечение этих аргументов используется в качестве контекста для оценки выражения. Чистый эффект для любого столбца заключается в том, что оба набора аргументов применяются: как аргументы фильтра, используемые в CALCULATE, так и фильтры в аргументах функции KEEPFILTER. Другими словами, в то время как фильтры CALCULATE заменяют текущий контекст, KEEPFILTERS добавляет фильтры в текущий контекст.
-
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример
В следующем примере описаны некоторые распространенные сценарии, демонстрирующие использование функции KEEPFILTERS в рамках формулы CALCULATE или CALCULATETABLE.
Первые три выражения получают простые данные для сравнения:
Интернет-продажи для штата Вашингтон.
Интернет-продажи для штатов Вашингтон и Орегон (оба штата объединяются).
Интернет-продажи для штата Вашингтон и провинции Британская Колумбия (оба региона объединяются).
Четвертое выражение вычисляет интернет-продажи для Вашингтона и Орегона, а фильтр для Вашингтона и Британской Колумбии применяется.
Следующее выражение вычисляет интернет-продажи для Вашингтона и Орегона, но использует KEEPFILTERS; Фильтр для Вашингтона и Британской Колумбии является частью предыдущего контекста.
EVALUATE ROW(
"$$ in WA"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
)
, "$$ in WA and OR"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, "$$ in WA and BC"
, CALCULATE('Internet Sales'[Internet Total Sales]
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA and OR ??"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
,'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
, "$$ in WA !!"
, CALCULATE(
CALCULATE('Internet Sales'[Internet Total Sales]
, KEEPFILTERS('Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="OR"
)
)
, 'Geography'[State Province Code]="WA"
|| 'Geography'[State Province Code]="BC"
)
)
Если это выражение вычисляется для примера базы данных AdventureWorks DW, получены следующие результаты.
| Столбец | Ценность |
|---|---|
[$$ in WA] |
$ 2,467,248,34 |
[$$ in WA and OR] |
$ 3,638,239,88 |
[$$ in WA and BC] |
$ 4,422,588,44 |
[$$ in WA and OR ??] |
$ 3,638,239,88 |
[$$ in WA !!] |
$ 2,467,248,34 |
Заметка
Приведенные выше результаты были отформатированы в таблицу вместо одной строки для образовательных целей.
Сначала изучите выражение, [$$ in WA and OR ??]. Вы можете задаться вопросом, как эта формула может вернуть значение для продаж в Вашингтоне и Орегоне, так как внешнее CALCULATE выражение включает фильтр для Вашингтона и Британской Колумбии. Ответ заключается в том, что поведение по умолчанию CALCULATE переопределяет внешние фильтры в "Geography"[Государственный код провинции] и заменяет свои собственные аргументы фильтра, так как фильтры применяются к одному столбцу.
Затем изучите выражение, [$$ in WA !!]. Вы можете задаться вопросом, как эта формула может вернуть значение для продаж в Вашингтоне и ничего другого, так как фильтр аргументов включает Орегон и внешнее выражение CALCULATE включает фильтр в Вашингтоне и Британской Колумбии. Ответ заключается в том, что KEEPFILTERS изменяет поведение CALCULATE по умолчанию и добавляет дополнительный фильтр. Так как используется пересечение фильтров, теперь внешний фильтр 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="BC") добавляется в аргумент фильтра 'Geography'[State Province Code]="WA" || 'Geography'[State Province Code]="OR".. Так как оба фильтра применяются к одному столбцу, результирующий фильтр 'Geography'[State Province Code]="WA" является фильтром, применяемым при оценке выражения.