Post-Image

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

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

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

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

Для построения обозначенного примера, нам необходимы исходные данные следующего вида:

art_003_screen_1

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

Пояснения примера:

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

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

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

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

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

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

    Slicer =
    DISTINCT (
        SELECTCOLUMNS ( 'Exchange rates'; "Код валюты"; 'Exchange rates'[Код валюты] )
    )

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

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

    Порядок =
    SWITCH ( 'Slicer'[Код валюты]; "RUR"; 1; "USD"; 2; "EUR"; 3 )

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

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

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

    art_003_screen_2

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

    art_003_relations

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

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

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

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

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

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

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

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

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

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

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

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

  • Создать таблицу “Курсы валют”, используя элемент “Matrix” (“Матрица”), таблица визуализирует исходные данные – значения курсов валют на конкретные даты,таблица необходима для иллюстрации результатов пересчета;

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

    Пересчет в доллары США (обратите внимание, при нажатии кнопки “Доллар США” в визуальном фильтре “Валюта отчетности”, в таблице “Набор данных” по столбцу “Пересчитанная сумма” значения в разрезе дат изменяются”):

    art_003_screen_3

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

    art_003_screen_4

    Вид по умолчанию, а также пересчет в российские рубли (кнопка “Российский рубль” в визуальном фильтре “Валюта отчетности” не нажата, в таблице “Набор данных” по столбцу “Пересчитанная сумма значения тождественны входящим данным, поскольку курс валюты равен “1”):

    art_003_screen_5

    И в качестве последнего штриха, благодаря последнему апдейту Power BI Desktop, значения в срезе мы можем фильтровать, оставив только необходимые.

    art_003_screen_6

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

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

    Ваш Смайл

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