Поделиться через


Создание строк динамического формата для мер

ОБЛАСТЬ ПРИМЕНЕНИЯ: Служба Power BI Power BI Desktop

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

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

Строки динамического формата также можно использовать с группами вычислений. Те же шаблоны DAX, которые работают с группами вычислений, также можно использовать в строках динамического формата для мер, но область ограничена отдельными мерами вместо всех мер в модели. Дополнительные сведения см. в разделе "Группы вычислений" — строки динамического формата.

Создание строк динамического формата

Создание строки динамического формата

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

  2. В ленте "Средства измерений" в разделе >"Форматирование" списка >"Формат", выберите "Динамический". В левой части строки формул DAX отображается новая папка со списком с выбранным форматом . Этот раскрывающийся список позволяет вам переключаться между выражением DAX статической меры и выражением DAX динамического формата. Независимо от того, какая строка статического формата использовалась до переключения на Dynamic, она загружается предварительно как строка в строке формул DAX.

    снимок экрана раскрывающегося списка

  3. Перезапишите строку, используя выражение DAX, которое выводит строку форматирования в правильном формате для вашей меры. Например, следующее выражение ищет строку формата валюты, которую мы хотим получить из таблицы "Строки формата валюты страны":

    снимок экрана динамического формата выражения меры.

  4. Проверьте, что строка динамического формата работает в визуализации.

    Чтобы удалить строку динамического формата и вернуться к использованию статической строки форматирования, в списке "Формат форматирования>" выберите другой параметр формата. Так как в этом действии нет отмены, появится диалоговое окно с просьбой продолжить. Если вы хотите вернуться к использованию строки динамического формата еще раз, необходимо повторно ввести выражение DAX.

    снимок экрана: предупреждение об изменении формата.

Пример

Лучший способ узнать о новой функции заключается в том, чтобы попробовать себя. Это можно сделать с помощью примера PBIX-файла Adventure Works 2020, доступного в примере модели DAX. Используя пример модели, вы можете добавить преобразование валюты для отображения преобразованной суммы продаж в год. После скачивания откройте файл в Power BI Desktop.

Создание новых таблиц

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

  1. На ленте "Главная" выберите ввод данных.

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

    Имя таблицы: строки формата валюты страны

    Страна/регион Валюта Формат
    Австралия Доллар # 0,00 AU$
    Канада Доллар C$#,0.00
    Дания Крона kr#0
    Еврозоны Евро € #,0,00
    Япония Иена ¥ #,0
    Швеция Крона kr#,0
    Швейцария Франк CHF#,0.00
    Соединенное Королевство Фунт £ #,0
    Соединенные Штаты Доллар US$#,0.00
  3. Убедитесь, что таблица выглядит правильно, а затем нажмите кнопку "Загрузить".

    снимок экрана: диалоговое окно

  4. Повторите предыдущие шаги для следующей таблицы:

    Имя таблицы: годовой средний обменный курс

    Страна/регион Валюта Год Годовой средний обменный курс
    Австралия Доллар 2022 1.442
    Австралия Доллар 2021 1.332
    Австралия Доллар 2020 1.452
    Австралия Доллар 2019 1.439
    Австралия Доллар 2018 1,34
    Австралия Доллар 2017 1.358
    Канада Доллар 2022 1.301
    Канада Доллар 2021 1.254
    Канада Доллар 2020 1.341
    Канада Доллар 2019 1.327
    Канада Доллар 2018 1.297
    Канада Доллар 2017 1,35
    Дания Крона 2022 7.077
    Дания Крона 2021 6,29
    Дания Крона 2020 6.538
    Дания Крона 2019 6.67
    Дания Крона 2018 6.319
    Дания Крона 2017 6,864
    Еврозоны Евро 2022 0.951
    Еврозоны Евро 2021 0,846
    Еврозоны Евро 2020 0.877
    Еврозоны Евро 2019 0.893
    Еврозоны Евро 2018 0.848
    Еврозоны Евро 2017 0.923
    Япония Иена 2022 131.454
    Япония Иена 2021 109.817
    Япония Иена 2020 106.725
    Япония Иена 2019 109.008
    Япония Иена 2018 110.424
    Япония Иена 2017 116.667
    Швеция Крона 2022 10.122
    Швеция Крона 2021 8.584
    Швеция Крона 2020 9.205
    Швеция Крона 2019 9.457
    Швеция Крона 2018 8.703
    Швеция Крона 2017 8.894
    Швейцария Франк 2022 0.955
    Швейцария Франк 2021 0.914
    Швейцария Франк 2020 0.939
    Швейцария Франк 2019 0.994
    Швейцария Франк 2018 0,979
    Швейцария Франк 2017 1,024
    Соединенное Королевство Фунт 2022 0.811
    Соединенное Королевство Фунт 2021 0,727
    Соединенное Королевство Фунт 2020 0.779
    Соединенное Королевство Фунт 2019 0,784
    Соединенное Королевство Фунт 2018 0.75
    Соединенное Королевство Фунт 2017 0.808

Создайте столбец Год

Столбец нового года необходим в существующей таблице даты.

  1. В представлении модели щелкните правой кнопкой мыши таблицу "Дата " и выберите "Создать столбец".

  2. В строке формул DAX введите следующее выражение: Year = YEAR([Date])и нажмите клавишу ВВОД.

    скриншот формулы года в строке формул DAX.

Создание отношений

Связи необходимы между новыми таблицами "Средние обменные курсы" и "Строки формата валюты страны", а также между таблицей "Средние обменные курсы" и существующей таблицей дат.

  1. Если вы используете автоматическое определение связей, вероятно, связь между строками формата валюты страны и ежегодными средними курсами обмена была создана для вас в столбце "Страна". Если нет, создайте эту связь:

    • Таблица 1. Средние обменные курсы по годам
    • Столбец 1 таблицы: страна
    • Кратность: многие к одному
    • Таблица 2. Строки форматов валют для стран
    • Столбец 2 таблицы: страна
    • Сделать эту связь активной: Да
    • Направление перекрестной фильтрации: одиночный

    Связь должна выглядеть следующим образом:

    снимок экрана со свойствами связи между строками формата валюты страны и ежегодными ставками обмена.

  2. Если у вас включен Автоопределение связей, возможно, была создана связь между строками формата валюты страны и территорией продаж в столбце Страна. Однако эта связь не является правильной для нашей модели. В представлении модели удалите эту связь.

  3. Вместо этого создайте связь между средними ежегодными обменными курсами и датой в столбце Год.

    • Таблица 1. Средние обменные курсы по годам
    • Столбец 1 таблицы: год
    • Кратность: многие ко многим
    • Таблица 2. Дата
    • Столбец 2 таблицы: год
    • Сделать эту связь активной: Да
    • Направление перекрестной фильтрации: односторонний ("Средний обменный курс" фильтрует "Дата")

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

    снимок экрана отношений.

  4. Сохраните модель.

Создание таблицы групп мер

Группа мер помогает упорядочивать различные меры, имея их в одной таблице.

  1. На ленте "Главная" выберите "Ввод данных".

  2. В диалоговом окне "Создание таблицы" оставьте значения пустыми. Назовите таблицу Меры продаж, затем нажмите Загрузить. Эта таблица содержит ваши новые меры.

Создание мер

  1. В области "Данные" разверните и щелкните правой кнопкой мыши меры "Продажи", а затем выберите "Создать меру". Введите следующее выражение DAX в строку формул DAX и нажмите Enter:

    Sales Amount = SUM(Sales[Sales Amount])
    

    Он должен выглядеть так:

    снимок экрана: формула DAX для измерения объема продаж.

  2. В Меры продаж щелкните правой кнопкой мыши Column1, а затем выберите Скрыть в представлении отчета. Это преобразует меры продаж в группу мер, которая теперь отображается в верхней части области данных со значком группы мер, как показано ниже:

    снимок экрана столбца 1 в группе мер продаж.

  3. Теперь можно создать меру для вычисления курса обмена. Щелкните правой кнопкой мыши Меры продаж, выберите Новая мера, введите следующее выражение в строку формул DAX и нажмите клавишу Enter:

    Exchange Rate (Yearly Avg) = 
    IF (
        ISBLANK ( SELECTEDVALUE ( 'Country Currency Format Strings'[Country] ) )
            || SELECTEDVALUE ( 'Country Currency Format Strings'[Country] ) = "United States",
        1,
        AVERAGE ( 'Yearly Average Exchange Rates'[Yearly Average Exchange Rate] )
    )
    
    

    Это должно выглядеть следующим образом: снимок экрана формулы курса обмена DAX в редакторе DAX.

  4. Теперь вы создадите другую меру для преобразования меры "Сумма продаж" в другие валюты. Щелкните правой кнопкой мыши меры продаж, выберите Новая мера, введите следующее выражение в строку формул DAX и нажмите Ввод:

        Converted Sales Amount = 
        SUMX('Date',
        CALCULATE( [Sales Amount] * [Exchange Rate (Yearly Avg)]))
    
    

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

Создание отчета

  1. Перейдите в режим отчёта. Добавьте в отчет новую пустую страницу.

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

  3. В области панель данных Меры продаж выберите Преобразованная сумма продаж. Без щелчка в другом месте также выберите "Год " в таблице "Дата ".

    снимок экрана визуализации линейного графика в представлении отчета.

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

    снимок экрана визуализации с линейной диаграммой.

  5. Добавьте визуальный элемент среза на страницу отчета. На ленте "Формат" добавьте странуиз таблицы строк формата валюты страны в срез.

    Снимок экрана среза страны.

  6. Переставьте визуальные элементы до получения более удачного макета, что-то вроде этого:

    Скриншот с переупорядоченными визуальными элементами.

  7. Хотя и не требуется, можно изменить визуальные свойства, чтобы сделать более удобный отчет:

    Слайсер

    • Параметры среза: одиночный выбор
    • Размер и стиль, заполнение: 10 пикселей, все края
    • Размер и стиль, визуальная граница: светло-серый, 10 пикселей с округленными углами
    • Параметры среза, стиль: плитка
    • Заголовок среза: Выключено
    • Значения, граница: левая, #333333, ширина линии 6

    Таблица

    • Размер и стиль, отступ: 10 px, по всем краям
    • Размер и стиль, визуальная граница: светло-серый, 10 пикселей с округленными углами
    • Сетка, горизонтальные линии сетки: белые, ширина 2
    • Сетка, вертикальные линии сетки: белые, ширина 2
    • Сетка, граница: белый
    • Сетка, параметры: отступ в 2 строки
    • Значения, значения: Цвет фона #F6F4F4
    • Значения, значения: альтернативный цвет фона #F6F4F4
    • Заголовки столбцов, текст: полужирный, белый цвет текста, цвет фона #0D6ABF

    Линейный график

    • Размер и стиль, заполнение: 10 пикселей, все края
    • Размер и стиль, визуальная граница: светло-серый, 10 пикселей с округленными углами
    • Заголовок, подзаголовок: вкл.
    • Ось Y, Заголовок: отключён
    • Ось Y: Выкл.
    • Маркеры: Включены
    • Метки данных: включено
    • Метки данных, значения: жирный шрифт, синий цвет

    Холст (необязательно)

    • Фон холста: светло-серый, 85% прозрачность

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

    скриншот серого холста на фоне для визуализации.

Создание строки динамического формата

При выборе различных названий стран в фильтре-срезе отображается результат меры "Преобразованный объем продаж" в визуальных элементах, но не в формате, соответствующем этой стране или региону.

  1. В области данных>метрики продаж выберите "Преобразованная сумма продаж".

  2. На ленте "Средства мер" щелкните раскрывающийся список "Формат" и выберите "Динамический".

  3. Раскрывающийся список слева от строки формул должен иметь формат, а формула в строке формул должна иметь строку формата. Замените строку формата следующим выражением DAX и нажмите Enter:

    SELECTEDVALUE ( 'Country Currency Format Strings'[Format], "\$#,0.00;(\$#,0.00);\$#,0.00" )
    

    Он должен выглядеть так:

    снимок экрана динамической формулы строк формата национальной валюты.

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

    Снимок экрана визуализации

  5. Сохраните модель.

Известные проблемы и рекомендации

  • Визуальные элементы имеют параметры форматирования, которые могут повлиять на отображение строки форматирования. Если форматирование отображается неожиданно в визуальном элементе, перейдите к параметрам визуального формата, найдите единицы отображения и измените его с автона None.

    Снимок экрана: единицы отображения от автоматического до отсутствия.

  • Сама мера может ссылаться непосредственно в строке динамического формата с помощью его имени, например [Measure A], или косвенно с помощью SELECTEDMEASURE().

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

  • С помощью DirectQuery для служб Analysis Services при нажатии кнопки "Внести изменения в эту модель " в отчете динамического подключения он перемещает подключение к DirectQuery через службы Analysis Services. Как правило, можно внести изменения в строки формата измерений дистанционной модели. С помощью строк динамического формата для метрик:

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