Post-Image

Различные способы достижения цели в MS Power BI

Рвав-рвав, вот таким я был ребенком!

Пока хозяин умиляется моим детским фотографиям, мы с вами поговорим о том, насколько универсальным инструментом является такой продукт как “MS Power BI”.

По-хорошему, эта статья должна была бы быть одной из первых публикаций, но раньше любознательный собакен об этом просто не задумывался, так как все приходит с опытом. Мое личное мнение состоит в том, что Power BI, особенно в связке с такими продуктами, как Power Apps и Power Automate, является практически “серебряной пулей”, впрочем, к делу.

Пример:

  • Допустим, имеется таблица, состоящая из одного столбца “Код валюты”, в котором в качестве значений содержатся “USD” и “EUR”:

    art_016_screen_1

    Задача:

  • Вывести в визуальный элемент текстовое описание, соответствующее указанному коду валюты, используя стандартный функционал Power BI.

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

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

    Уровень преобразования данных (Power Query):

  • Первое, что приходит на ум, находясь на уровне преобразования данных – это создание условного столбца, которое происходит в диалоге, и является интуитивно понятным для конечного пользователя:

    art_016_screen_2

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

    art_016_screen_3

    Рвав-рвав, картинки прикладывать не буду, но с точки зрения кода Power Query два предыдущих шага полностью идентичны, так как у нас подобран такой пример), но сам по себе настраиваемый столбец имеет более широкий функционал.

  • Третьим вариантом является создание и последующий вызов так называемой пользовательской функции, при этом здесь придется работать и руками, и головой:

    art_016_screen_4

    Рвав-рвав, открою вам маленький секрет, именно ради этого все и затевалось, а потому этот вариант мы рассмотрим подробнее.

  • Для создания функции обычно используется пустой запрос, который редактируется при помощи расширенного редактора и по завершении процесса написания кода самостоятельно трансформируется в функцию:

    art_016_screen_5

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

  • После того, как функция была написана и протестирована, необходимо осуществить ее вызов в базовом запросе, для этого используется кнопка “Вызвать настраиваемую функцию”, которая находится на вкладке “Добавление столбца”.

  • При нажатии указанной кнопки появляется дополнительное окно, в котором нужно указать имя создаваемого столбца, а также имя используемой функции:

    art_016_screen_6

  • После нажатия кнопки “ОК” в цепочке преобразований появится соответствующий шаг, и будет произведено то действие, которое вы описали в созданной ранее функции:

    art_016_screen_7

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

    Уровень модели (Data Analysis eXpressions):

  • Здесь для решения задачи можно создать расчетный столбец, формула которого будет выглядеть следующим образом:

    Расчетный столбец (DAX) = 
    IF ( 'Таблица'[Код валюты] = "USD", "Доллар США", "Евро" )

  • Ну и последнее, что было придумано – это, конечно же, мера:

    Мера (DAX) = 
    MINX (
        VALUES ( 'Таблица'[Код валюты] ),
        IF ( 'Таблица'[Код валюты] = "USD", "Доллар США", "Евро" )
    )

  • В результате последовательного выполнения действий, описанных выше, мы сможем получить визуальный элемент следующего вида:

    art_016_screen_8

    Рвав-рвав, вот так и живем, и по-хорошему, эти способы нужно комбинировать.

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

    Ваш Смайл