Записки охотника

Конструкция Switch

Собакенские будни
Рвав-рвав, сегодня я — собака-наблюдака!

Перед вами — 1-я заметка из нашего нового цикла «Собакенские будни», посвященного описанию некоторых функций языка DAX (Data Analysis eXpressions). Да, вам не почудилось, собака Смайл решил понемногу создавать заметки и в этом направлении, поскольку, как оказалось, это интересно аудитории.
Ниже мы рассмотрим использование конструкции Switch. Лично для меня это одна из наиболее часто используемых функций, так как именно с ее помощью мы можем прицепить к исходным данным великое множество «синтетических» аналитик.

Пример:

Имеется набор данных, содержащий 2 критерия, в зависимости от которых нам нужно обогатить исходные данные:


Задача:

Продемонстрировать варианты использования функции Switch.

Односоставное условие:

  • Если необходимый результат зависит от выполнения одного условия (см. столбец «Критерий 2»), то можно использовать простую конструкцию следующего вида:

Конструкция Switch =
SWITCH (
    'Таблица'[Критерий 2],
    "Собака Смайл""Молодец!",
    "Песик Тедди""Умница :-)",
    "Мы еще не определились :-Р"
)

  • Результат использования формулы, указанной выше:


Многосоставное условие:

  • Если необходимый результат зависит от выполнения комплекса условий (см. дополнительно столбец «Критерий 1»), то исходную конструкцию необходимо дополнить следующим образом:

Конструкция Switch-True =
SWITCH (
    TRUE (),
    'Таблица'[Критерий 1] = "Джек-рассел-терьер"
        && 'Таблица'[Критерий 2] = "Собака Смайл""Молодец!",
    'Таблица'[Критерий 1] = "Йоркширский терьер"
        && 'Таблица'[Критерий 2] = "Песик Тедди", "Умница :-)",
    "Мы еще не определились :-Р"
)

  • Результат использования формулы, указанной выше:


Рвав-рвав, в данном случае мы однозначно утверждаем, что собака Смайл, являющийся Джек-рассел-терьером — молодец, Йоркширский терьер песик Тедди — умница, а про всех остальных мы ничего не знаем.

  • Однако, следует иметь в виду, что указанная конструкция предусматривает выполнение всех заданных условий, в противном случае результат будет неотличим от общей массы:

Невыполнение условий =
SWITCH (
    TRUE (),
    'Таблица'[Критерий 1] = "Немецкая овчарка" /*Изменение породы*/
        && 'Таблица'[Критерий 2] = "Собака Смайл""Молодец!",
    'Таблица'[Критерий 1] = "Йоркширский терьер"
        && 'Таблица'[Критерий 2] = "Песик Тедди""Умница :-)",
    "Мы еще не определились :-Р"
)

  • Результат использования формулы, указанной выше:


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

Собственно, на этом все.

Всегда на стреме.
Ваш Смайл