Россия Нет

Логические функции в DAX: IF, SWITCH, TRUE, FALSE, AND, OR, NOT в Power BI (Power Pivot)

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы поговорим о логических функциях в DAX: IF (если), SWITCH (переключатель), TRUE (значение «истина»), FALSE (значение «ложь»), AND (и), OR (или), NOT (замена логических значений) в Power BI и PowerPivot.

Все эти DAX функции объединяет то, что все они, так или иначе, работают с булевым (Boolean) типом данных, состоящим из двух логических значений TRUE (истина, да, правда, правильно) и FALSE (ложь, нет, неправда, неправильно).

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

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

 

DAX функция IF в Power BI и Power Pivot

IF () — если. Выполняет проверку условия. Если условие равно логическому значению TRUE, то функция выполняет одно выражение. Если же условие равно логическому значению FALSE, то функция выполняет второе выражение.

Синтаксис:

IF (Условие; Выражение 1; Выражение 2)

Где:

  • Условие — логическое условие, результат которого равен либо значению TRUE, либо — FALSE
  • Выражение 1 — выражение, которое вступит в работу, если результат проверки условия будет равен TRUE
  • Выражение 2 — выражение, которое вступит в работу, если результат проверки условия будет равен FALSE

Пример формулы на основе DAX функции IF.

В модели данных Power BI Desktop имеется исходная таблица, состоящая из 2 столбцов, содержащих числовые значения. Причем, в одной из строк второго столбца находится значение, равное 0:

 

Создадим в этой таблице третий вычисляемый столбец, на основе формулы деления первого столбца на второй:

 

В результате, в ячейке третьей строки у нас возникла ошибка деления на 0 и Power BI вывел там знак бесконечности.

Для того, чтобы обработать эту ошибку, воспользуемся рассматриваемой DAX функцией IF (условие если). То есть, если ошибок нет, то функция IF должна возвратить вычисляемое выражение, если ошибки есть, то она должна вывести пустое значение. Новая формула деления будет такой:

Столбец = 
IF (
    ISERROR ([Столбец1] / [Столбец2]);
    BLANK();
    [Столбец1] / [Столбец2]
)

В этой формуле, кроме функции проверки условия IF, мы воспользовались еще несколькими функциями языка DAX. А именно, функцией ISERROR, которая проверила входящее внутрь нее выражение (в нашем случае, деления одного столбца на другой), и если в этом выражении возникает ошибка, то она возвращает TRUE, а иначе FALSE.

А также, мы воспользовались функцией BLANK, которая возвращает пустое значение.

Как итог, если прочитать всю эту формулу на основе функции IF, то получается следующее: если во время деления происходит ошибка, то возвращается логическое значение TRUE, если ошибки нет, то FALSE.

Соответственно, функция IF будет выполнять выражение из второго параметра, тогда, когда условие возвратит TRUE (в нашем случае, ошибку) и выражение из третьего параметра, тогда, когда условие возвратит FALSE (в нашем случае, ошибки нет).

И именно поэтому, если при делении будет ошибка деления на 0, возвратится пустое значение, так как во втором параметре функции IF вызывается BLANK. И, если ошибки деления нет, то возвратится само деление столбцов из третьего параметра IF.

Посмотрим на выполнение этой формулы в Power BI, чтобы убедиться в правильности наших измышлений:

 

Как мы видим, ошибка обработана и функция IF при помощи двух других DAX функций вывела на ее месте пустое значение.

 

DAX функция SWITCH в Power BI и Power Pivot

SWITCH () — переключатель. Сравнивает результат вычисления выражения с заранее подготовленными значениями и возвращает итоговый результат, относительно найденного подготовленного значения.

Синтаксис:

SWITCH (
    Выражение; 
    Значение 1; Результат 1; 
    Значение 2; Результат 2; 
    Значение N; Результат N; 
    Иначе
)

Где:

  • Выражение — вычисляемое выражение, результат которого сравнивается с заранее подготовленными значениями
  • Значение — заранее подготовленное значение
  • Результат — заранее подготовленный результат, который возвратится, если результат вычисления выражения будет равен соответствующему заранее подготовленному значению
  • Иначе — заранее подготовленный результат, который возвратится, если результат вычисления выражения не будет равен ни одному заранее подготовленному значению

Пример формулы на основе DAX функции SWITCH.

В Power BI имеется вычисляемая таблица, созданная на основе DAX функции GENERATESERIES. Таблица имеет 12 строк с числовыми значениями от 1 до 12:

 

Напишем формулу вычисляемого столбца с использованием функции SWITCH, в котором будут отображаться названия месяцев, соответствующие цифрам из столбца [Value] :

Месяц = 
SWITCH (
    [Value];
    1; "Январь";
    2; "Февраль";
    3; "Март";
    4; "Апрель";
    5; "Май";
    6; "Июнь";
    7; "Июль";
    8; "Август";
    9; "Сентябрь";
    10; "Октябрь";
    11; "Ноябрь";
    "Декабрь"
)

В первом параметре функции SWITCH, в качестве исполняемого выражения, мы разместили ссылку на столбец [Value], который содержит числовые значения от 1 до 12. В последующих строках формулы у нас заранее заготовлены возможные значения (1-11) результата вычисления столбца [Value] и рядом с ними соответствующие итоговые результаты (наименования месяцев).

Если функция SWITCH не найдет в этих значениях (1-11) того результата, который получится в вычислении столбца [Value] (в нашем примере, это 12), то, как итог, выведется значение «Иначе» из последнего параметра, то есть, в нашем случае, текст «Декабрь».

В итоге, в Power BI, на основе этой формулы будет создан следующий вычисляемый столбец:

 

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

 

DAX функции TRUE, FALSE в Power BI и Power Pivot

TRUE () — возвращает логическое значение TRUE (истина, да, правда, правильно).

FALSE () — возвращает логическое значение FALSE (ложь, нет, неправда, неправильно).

Синтаксис:

TRUE ()
FALSE ()

Пример формулы на основе DAX функций TRUE () и FALSE ().

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

В Power BI имеется исходная таблица с числовыми данными:

 

Допустим, что для каких-то промежуточных целей, в этой таблице нам нужно создать еще один столбец, который будет содержать значения TRUE, если исходный столбец содержит числовые значения неравные 0. И значения FALSE, если исходный столбец содержит числовые значения равные 0. Напишем соответствующую формулу на основе DAX функций TRUE () и FALSE ():

Столбец = 
IF (
    [Столбец1] <> 0;
    TRUE ();
    FALSE ()
)

Естественно, так как в этой формуле нам нужно проверять условие, то мы, дополнительно, использовали ранее рассмотренную функцию IF.

Результатом выполнения этой формулы с участием функций TRUE () и FALSE () в Power BI был создан вычисляемый столбец с соответствующими логическими значениями TRUE и FALSE для промежуточных целей:

 

DAX функции AND и OR в Power BI и Power Pivot

AND () — и. Возвращает логическое значение TRUE, если оба параметра, входящие в эту функцию, в режиме «и», также, возвращают TRUE. Если же хотя бы один параметр возвращает FALSE, то сама функция, также, возвращает логическое значение FALSE. Аналогом в языке DAX является логический оператор && (и).

OR () — или. Возвращает логическое значение TRUE, если хотя бы один из двух параметров, входящих в эту функцию, также, возвращает логическое значение TRUE. Если же оба параметра возвращают FALSE, то сама функция, также, возвращает логическое значение FALSE. Аналогом в языке DAX является логический оператор || (или).

Синтаксис:

AND (Значение 1; Значение 2)
OR (Значение 1; Значение 2)

Данные функции обычно используют тогда, когда нужно в каких-либо условиях или фильтрах использовать в одном условии или параметре сразу 2 или более условий. Если нужно больше 2 условий, то тогда эти функции вкладываются друг в друга, например, так:

AND (Значение 1; AND (Значение 2; Значение 3)) 
OR (Значение 1; OR (Значение 2; Значение 3))

Но, в этих случаях предпочтительнее использовать уже не данные функции AND или OR, а соответствующие операторы DAX, например, так:

Сочетание в режиме "и": Значение 1 && Значение 2 && Значение 3
Сочетание в режиме "или": Значение 1 || Значение 2 || Значение 3

Примеры формул на основе DAX функций AND и OR.

В Power BI имеется следующая исходная таблица с числовыми значениями:

 

В качестве примера рассмотрим ситуацию, в которой нам понадобилось создать столбец для промежуточных вычислений, содержащий в своих строках значения из исходного столбца, но только те, которые больше 2 и меньше 4. Для создания этой формулы нам понадобятся функции IF и AND:

Столбец = 
IF (
    AND ([Столбец1] > 2; [Столбец1] < 4);
    [Столбец1];
    BLANK ()
)

В этой формуле при помощи DAX функции AND у нас получилось создать двойное условие. Если оно истинно, то возвращаются значения из исходного столбца, если оно не выполняется, то выводится пустое значение функцией BLANK.

Результат этой формулы в Power BI будет следующим:

 

Если же мы изменим эту формулу, а именно, заменим AND функцией OR:

Столбец = 
IF (
    OR ([Столбец1] > 2; [Столбец1] < 4);
    [Столбец1];
    BLANK ()
)

то, в данном случае, у нас условия будут сочетаться в режиме «или», то есть, значения исходного столбца должны быть или больше 2, или меньше 4:

 

Как мы видим из скриншота в Power BI — при таком условии, возвращаются все значения из исходного столбца, так как значение 3 удовлетворяет условию больше 2 и значения 0, 1, 2 — удовлетворяют условию меньше 4.

 

DAX функция NOT в Power BI и Power Pivot

NOT () — заменяет логические значения друг другом. Если переданное в функцию выражение равно логическому значению FALSE, то функция возвращает TRUE и наоборот, если переданное в функцию выражение равно логическому значению TRUE, то функция возвращает FALSE. Иначе говоря, меняет FALSE на TRUE и наоборот.

Синтаксис:

NOT (Выражение)

Какого-то большого практического смысла в функции NOT нет, но, все же, она позволяет несколько упростить чтение логики.

Например, когда мы выше рассматривали функцию IF, то составляли такую формулу:

IF (     
    ISERROR ([Столбец1] / [Столбец2]);     
    BLANK();     
    [Столбец1] / [Столбец2] 
)

Обычно, функцию IF читают так: выполнить второй параметр, если условие истинно (TRUE) и выполнить третий параметр, если условие ложно (FALSE).

Но, в нашей формуле, изначально в условии проверяется наличие ошибки. И если есть ошибка, то возвращается истина (TRUE), что несколько нелогично, если смотреть с человеческой стороны… логичнее понимать так — если есть ошибка, то значит ложь (FALSE).

Ситуацию, в этом случае, может помочь исправить функция NOT, которая заменит TRUE на FALSE в самом условии. В итоге, формула будет такой:

Столбец = 
IF (
    NOT (ISERROR ([Столбец1] / [Столбец2]));
    [Столбец1] / [Столбец2];
    BLANK()
)

Теперь, с точки зрения человеческого понимания, формула стала более логичной и понятной. При этом, в Power BI результат выполнения самой формулы с учетом функции NOT не изменился:

 

На этом, с разбором DAX функций IF (если), SWITCH (переключатель), TRUE (значение «истина»), FALSE (значение «ложь»), AND (и), OR (или), NOT (замена логических значений) в Power BI и PowerPivot, все.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(18 голосов, в среднем: 4.6 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

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

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

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

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

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