Post-Image

Собакенские будни - конструкция Switch

Рвав-рвав, я сегодня – собака-наблюдака!

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

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

Пример:

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

    blog_008_screen_1

    Задача:

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

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

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

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

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

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

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

    blog_008_screen_3

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

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

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

    blog_008_screen_4

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

    Всегда на стреме,

    Ваш Смайл