Post-Image

Использование мер в качестве переключателя

Рвав-рвав, собака Смайл приветствует аудиторию!

Поскольку я собака молодой, и на память не жалуюсь, в своей статье про 1-ю разработку Производственный календарь я обещал рассказать о таком понятии, как «переключаемая мера», это может пригодиться, например, при реализации концепции мультивалютной отчетности, то есть пересчета исходных данных в локальной валюте в другие денежные единицы. Суммы в российских рублях мы будем пересчитывать в доллары и евро.

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

Пример:

  • Таблица “Курсы валют” содержит плановые курсы на определенную дату для российского рубля (RUR), доллара США (USD), и евро (EUR), то есть это обычный справочник:

    art_003_screen_1

  • Таблица “Пересчет” содержит суммы в локальной валюте (RUR), для которых необходимо сделать пересчет, также на определенную дату:

    art_003_screen_2

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

    Задача:

    На основе представленных данных необходимо обеспечить пересчет сумм локальной валюты в дополнительные, для просмотра результатов использовать визуальный элемент “Slicer” (“Срез”).

    Процесс разработки:

  • Создана таблица “Курсы валют” –- это таблица, созданная на уровне Power Query, и содержащая входящие данные в столбцах “Код валюты”, “Дата” и “Курс валюты”.

  • Создана таблица “Пересчет” –- это таблица, созданная на уровне Power Query, и содержащая входящие данные в столбцах “Дата” и “Оригинальная сумма”.

  • Создана таблица “Настройка среза” -– это таблица, представляющая собой справочник валютных кодов, созданный на уровне DAX, при помощи следующей формулы:

    Настройка среза =
    DISTINCT (
        SELECTCOLUMNS ( 'Курсы валют', "Код валюты", 'Курсы валют'[Код валюты] )
    )

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

  • В таблице “Настройка среза” создан расчетный столбец “Порядок” – это столбец, содержащий индекс, привязанный к определенному коду валюты, который необходим для корректной работы механизма переключения. Формула столбца следующая:

    Порядок =
    SWITCH ( 'Настройка среза'[Код валюты], "RUR", 1, "USD", 2, "EUR", 3 )

  • В таблице “Настройка среза” также создан расчетный столбец “Название” – это столбец, содержащий текстовые названия кодов валют, элемент необязателен, создан для удобства конечного пользователя. Формула столбца следующая:

    Название валюты = 
    SWITCH ( 'Настройка среза'[Порядок], 1, "Российский рубль", 2, "Доллар США", 3, "Евро" )

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

    art_003_screen_3

  • Организация связей между данными в получившейся модели выглядит следующим образом:

    art_003_screen_4

  • Далее необходимо реализовать расчеты, позволяющие пересчитать исходную сумму в каждую из валют. Для этого необходимо создать, как минимум, две меры, для доллара США и Евро, но в нашем примере для целей проверки корректности пересчета “оригинальная сумма -> пересчитанная сумма”, также создается мера для российского рубля. Ее мы также будем использовать в дальнейшем для значения “по умолчанию”.

    Пример формулы может выглядеть следующим образом, хотя, конечно, вариантов может быть несколько:

    USD =
    VAR _StartAmount =
        SUM ( 'Пересчет'[Оригинальная сумма] )
    VAR _Rate =
        MAXX (
            FILTER ( 'Курсы валют', 'Курсы валют'[Код валюты] = "USD" ),
            'Курсы валют'[Курс валюты]
        )
    VAR _EndAmount =
        DIVIDE ( _StartAmount, _Rate, 0 )
    RETURN
        _EndAmount

    Рвав-рвав, совет от хитрой собаки Смайла:

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

    – Если к имени переменной добавлять знак “_“, то при подстановке в формулу ваши переменные можно будет быстро найти в общем списке.*

  • Формула меры-переключателя строится следующим образом:

    Переключатель = 
    VAR _Toggle =
        SELECTEDVALUE ( 'Настройка среза'[Порядок] )
    RETURN
        SWITCH (
            TRUE (),
            _Toggle = 1, [RUR],
            _Toggle = 2, [USD],
            _Toggle = 3, [EUR],
            [RUR]
        )

    Рвав-рвав, товарищи, ловите очередное обещание:

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

    Процесс визуализации данных:

  • Создать визуальный фильтр “Валюта отчетности”, используя элемент “Slicer” (“Срез”), при этом в качестве значений использовать данные столбца “Название валюты” таблицы “Настройка среза”. Собственно при помощи данного элемента будет происходить процесс переключения.

  • Создать график «Валютные курсы», используя элемент “Line chart” (“График”). График визуализирует исходные данные, а именно, значения курсов валют на конкретные даты, и необходима для иллюстрации результатов пересчета.

  • Создать таблицу “Демонстрация пересчета”, используя элемент “Matrix” (“Матрица”). Элемент визуализирует как исходные данные (столбцы “Дата” и “Оригинальная сумма”), так и получившийся результат (столбец “Пересчитанная сумма”).

    Проверка результатов:

  • Пересчет в доллары США:

    art_003_screen_5

  • Пересчет в Евро:

    art_003_screen_6

  • Вид по умолчанию (Российские рубли):

    art_003_screen_7

    Рвав-рвав, товарищи, надеюсь, это было познавательно!

    Статья закончена, а я спать пошел, завидуйте мне, двуногие, я сплю, когда хочу :-Р

    Ваш Смайл

    ДЛЯ ЛЮБИТЕЛЕЙ ПОНАЖИМАТЬ НА КНОПОЧКИ