Работа с поведением фильтра значений (предварительная версия)
Параметры поведения фильтра значений в Power BI позволяют влиять на механизм автоматической фильтрации, присутствующих в DAX, который возникает при фильтрации нескольких столбцов из одной таблицы. Это поведение неофициально называется "автоматически существовать".
Что такое поведение фильтра значений
При фильтрации нескольких столбцов из одной таблицы DAX понимает, что, скорее всего, не все сочетания значений в этих столбцах допустимы, и в результате он автоматически исключает недопустимые сочетания. Модуль DAX создал фильтр объединенных значений, который возвращает не только допустимые сочетания, но и влияет на измеренные вычисления. Параметр поведения фильтра значений позволяет изменить это поведение в семантической модели. Вы можете решить, следует ли отключить фильтры объединенных значений и включить независимые фильтры значений. Включение независимых фильтров значений путем задания параметра поведения фильтра значений в значение Independent (см. далее в этой статье) приводит к тому, что несколько фильтров в одной таблице хранятся отдельно вместо подсистемы DAX, объединяющей эти фильтры в одну.
Общие сведения о поведении фильтра значений
При фильтрации нескольких столбцов в одной таблице текущее поведение фильтра значений по умолчанию принимает эти фильтры и объединяет их в одну, учитывая только те сочетания, которые существуют. Рассмотрим следующие два столбца в одной таблице:
- Год, содержащий такие значения, как "2023".
- Месяц, содержащий такие значения, как "Январь 2024".
Если вы фильтруете как год, так и месяц, так как эти столбцы находятся в одной таблице, поведение фильтра значений объединяет фильтры в один, но рассматриваются только те сочетания, которые существуют. Сочетание месяца 2024 с годом 2023 года не существует и не будет включено в фильтр. Однако существуют ситуации, в которых результаты удивительны.
Рассмотрим пример, где у нас есть каталог, показывающий доступность цветов для продуктов по годам. Производитель этих продуктов экспериментировал с изготовлением продуктов в различных цветах на протяжении многих лет:
У нас есть три продукта, которые были доступны в различных цветах на протяжении многих лет. Обратите внимание, что в 2024 году нет красных продуктов. Это будет важно немного позже. Теперь давайте подсчитаем количество продуктов, добавив следующую меру:
Number of Products = COUNTROWS( 'Catalog' )`
В следующей матрице показано количество продуктов, доступных в различных цветах в год:
Теперь добавим еще одну меру, чтобы вычислить общее количество продуктов в течение всех лет:
Number of Products All Years = CALCULATE ( [Number of Products], ALL ( 'Catalog'[Year] ) )
Давайте поместим эти меры параллельно и отфильтруем до года 2023 года и просто синий и красный цвет (так что не черный). Количество продуктов составляет 4, а количество продуктов в течение всех лет для этих двух цветов равно 6:
Если мы переключим год на 2024 год, мы ожидаем, что мера "Количество продуктов" вернется 2, так как в этом году есть только два продукта, которые являются голубыми в 2024 году и нет красных продуктов в этом году. Поверх этого, мы бы ожидали, что количество продуктов в течение всех лет не изменится, потому что, в конце концов, это должно быть вычисляться на протяжении всех лет. Однако "Количество продуктов для всех лет" изменяется от 6 до 5:
Количество продуктов на протяжении всех лет должно оставаться 6, а не 5. Что мы видим здесь поведение фильтра значений в действии: он объединяет фильтры в одной таблице, удаляя сочетания сочетаний, которые не существовали. Фильтры : Year = 2024 и Color = Blue или Red. Так как эти два фильтра находятся в одной таблице, эти фильтры объединяются в один фильтр, который фильтрует только те сочетания, которые существуют. Поскольку в 2024 году нет красных продуктов, примененный фильтр имеет значение Year = 2024 и Color = Blue. Таким образом, количество продуктов на протяжении всех лет теперь подсчитывает только количество голубых продуктов, а не синий или красный продукт. Это возвращает значение 5, как можно подтвердить в таблице.
Влияние на поведение фильтра значений
Вы можете контролировать, требуется ли это поведение в семантической модели, используя параметр поведения фильтра значений в семантической модели в области свойств в представлении модели:
Доступно три варианта:
- Автоматический — это параметр по умолчанию и в настоящее время включается режим объединения. Когда мы заключим эту предварительную версию, новые модели, установленные для автоматического использования, будут использоваться Независимо, в то время будет объявлено.
- Независимое — это заставляет фильтры в одной таблице храниться отдельно. После задания параметра "Поведение фильтра значений" значение Independent общее количество продуктов в течение всех лет возвращается 6, как ожидалось (см. ниже).
- Объединение . Это позволяет включить поведение фильтра значений для семантической модели и результаты объединения фильтров в одной таблице. Количество продуктов за все годы в нашем примере продолжает возвращаться к 5.
В следующей таблице показан эффект этого параметра в нашем примере:
Настройка поведения фильтра значений | Фильтры, примененные в примере | Результат примера меры |
---|---|---|
Автоматически | Год = 2024, Цвет = синий |
5 |
Независимый | Год = 2024, Цвет = синий или красный |
6 |
Слились | Год = 2024, Цвет = синий |
5 |
Задание поведения фильтра значений в значение "Автоматически", означает, что оно равно "Объединение" на данный момент, но в будущем будет переключится на "Независимо" для новых семантических моделей. Если для параметра "Поведение фильтра значений" задано значение "Независимо", число продуктов для всех возвращается 6, так как фильтры равны Year = 2024 и Color = Blue или Red и больше не объединяются:
Следующие шаги
Могут быть полезны следующие статьи: