Антон БудуевПриветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой небольшой статье мы поговорим о том, как в Power BI (Power Pivot) отследить тот момент, когда множественные значения столбца будут отфильтрованы до одного единственного значения под действием прямых или косвенных фильтров. А помогут нам в этом две DAX функции HASONEVALUE и HASONEFILTER.

Рассмотрим эти функции подробно.

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

А также, подписывайтесь на наши социальные сети. Потому что именно в них, Вам будут доступны оперативно и каждый день наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel…): Вконтакте, Инстаграм, Фейсбук, YouTube.

 

DAX функции HASONEVALUE и HASONEFILTER в Power BI и Power Pivot

HASONEVALUE () — проверяет столбец и если в результате всех перекрестных фильтров в нем осталось одно единственное значение (одна строка), то функция возвращает TRUE, во всех остальных случаях — FALSE.

HASONEFILTER () — проверяет столбец и если в результате прямого фильтра в нем осталось одно единственное значение (одна строка), то функция возвращает TRUE, во всех остальных случаях — FALSE.

Синтаксис:

HASONEVALUE ([Столбец])
HASONEFILTER ([Столбец])

Пример формул на основе DAX функций HASONEVALUE и HASONEFILTER.

В Power BI Desktop имеется исходная таблица «Продажи Менеджеров», содержащая столбцы [Отдел], [Менеджер], [Продажи]:

Исходная таблица

 

Давайте в отчетах Power BI создадим два среза по полям [Менеджер] и [Отдел]:

Срезы в отчете Power BI по столбцам Менеджер и Отдел

 

Теперь, напишем 2 формулы на основе функций HASONEVALUE и HASONEFILTER по столбцу [Менеджер], то есть, при помощи этих функций будем исследовать данное поле на количество оставшихся значений (строк) в условиях наложенных фильтров:

HASONEFILTER = HASONEFILTER ('ПродажиМенеджеров'[Менеджер])
HASONEVALUE = HASONEVALUE ('ПродажиМенеджеров'[Менеджер])

Посмотрим, какие значения возвратят эти функции языка DAX, когда фильтры на исходную таблицу не наложены, то есть, в столбце [Менеджер] находится более одного значения (больше одной строки):

Результат работы функций HASONEVALUE и HASONEFILTER (без фильтров на таблице)

 

Обе функции возвращают значение FALSE, так как на столбец [Менеджер] не наложено никаких фильтров, а значит, в нем более одного значения.

Давайте поставим прямой фильтр на это поле:

Результат работы функций HASONEVALUE и HASONEFILTER с прямым фильтром на столбце Менеджер

 

В результате, обе функции возвращают логическое значение TRUE, так как на столбец [Менеджер] наложен прямой фильтр, фильтрующий его до одного конкретного значения «Сидоров», а функция HASONEFILTER возвращает TRUE как раз тогда, когда наложен прямой фильтр и в столбце осталось одно конкретное значение.

HASONEVALUE, в свою очередь, также, возвращает TRUE, так как она учитывает любые перекрестные фильтры.

Теперь, расширим этот фильтр до 2 значений «Сидоров» и «Петров»:

Фильтр, возвращающий 2 значения в столбце

 

Как мы можем наблюдать из отчета Power BI, в этой ситуации функции HASONEVALUE и HASONEFILTER вновь возвращают логическое значение FALSE, несмотря на то, что на столбец [Менеджер] до сих пор наложен прямой фильтр. Все дело в том, что этот фильтр уже оставляет не одно единственное значение, а больше (в данном случае два).

Теперь, снимем все прямые фильтры со столбца [Менеджер] и создадим срез по второму полю [Отдел]. Этим самым, столбец [Менеджер] также будет отфильтрован, но уже не прямым фильтром, а косвенным:

Работа функций HASONEVALUE и HASONEFILTER с косвенным фильтром

 

В данном примере, значение TRUE по столбцу [Менеджер] возвращает только HASONEVALUE, так как эта функция учитывает любые перекрестные фильтры. А в этом случае, на столбец [Менеджер], как раз таки, распространяется перекрестный фильтр от поля [Отдел] и в результате этого косвенного фильтра, в столбце [Менеджер] осталось одно значение «Петров».

А функция HASONEFILTER возвращает FALSE, даже несмотря на то, что в поле [Менеджер] всего одно значение, так как эта функция учитывает только прямые фильтры, которых на столбце сейчас нет.

Если же, мы расширим фильтр по отделам до двух значений, то косвенный фильтр, распространяющийся на столбец [Менеджер], также, будет расширен до 2 значений. И обе функции HASONEVALUE, HASONEFILTER будут вновь возвращать логическое значение FALSE, так как TRUE они возвращают именно в той ситуации, когда в результате прямых или косвенных фильтров остается одно конкретное значение (одна строка):

DAX функции HASONEVALUE и HASONEFILTER, возвращающие логическое значение FALSE

 

На этом, с разбором DAX функций HASONEVALUE и HASONEFILTER, проверяющих количество оставшихся значений в столбце с наложенными на него прямыми или косвенными фильтрами в Power BI или Power Pivot, все.

Успехов Вам, друзья!

 

Антон БудуевС уважением, Будуев Антон.
Проект «BI — это просто»

 

 

Присоединяйтесь к нашим социальным сетям

Именно в них оперативно и каждый день Вам будут доступны наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи 

по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel...)

Наша группа Вконтакте Мы в Инстаграме Наша группа в Фейсбук Наш YouTube канал
Наша группа VK
Подписаться на наш YouTube канал
 

Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.

Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.

 

Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D


Вам это может быть интересно. Другие статьи нашего обучающего портала:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных