Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Служба Power BI Power BI Desktop
С помощью строк динамического формата для мер можно управлять тем, как меры отображаются в визуальных элементах. Условно примените форматную строку с помощью отдельной формулы выражения анализа данных (DAX).
Замечание
Строки динамического формата для мер доступны в Power BI Desktop и Power BI Report Server (январь 2025 г. и более поздних версиях). Если вы используете сервер отчетов Power BI, убедитесь, что установлена последняя версия. Дополнительные сведения см. в статье "Новые возможности сервера отчетов Power BI".
Строки динамического формата решают проблему с функцией FORMAT. ФОРМАТ возвращает все результаты в виде строк, даже числовых типов данных. Это поведение может вызвать проблемы с визуальными элементами, такими как диаграммы, требующие числовых значений.
При использовании строк динамического формата мера сохраняет тип данных и не изменяет тип данных на тип строковых данных. Вы применяете разные строки форматирования к метрикам в зависимости от контекста.
Можно также использовать строки динамического формата с группами вычислений. Те же шаблоны DAX, которые работают с группами вычислений, также работают в строках динамического формата для метрик. Однако область ограничена отдельными мерами вместо всех мер в модели. Дополнительные сведения см. в разделе "Группы вычислений" — строки динамического формата.
Создание строк динамического формата
- В области данных выберите меру, для которой нужно указать строку динамического формата.
- На ленте "Средства мер " в разделе "Форматирование " выберите "Динамический " в списке " Формат ". Новый раскрывающийся список с выбранным форматом отображается слева от строки формул DAX. В этом раскрывающемся списке можно переключаться между выражением статической меры DAX и выражением динамического формата DAX. Строка статического формата, используемая перед переключением на Dynamic, предварительно заполнена как строка в строке формул DAX.
Использование части значения текстового поля
При работе с текстовыми полями в отчетах можно отображать значения мер с динамическим форматированием. Чтобы использовать часть значения текстового поля, выполните следующие действия.
Выберите текстовое поле в отчете.
В области "Формат " в разделе "Значения" нажмите кнопку поля (значок fx).
Выберите ту меру, к которой применена строка динамического формата.
Текстовое поле отображает значение меры с помощью строки динамического формата.
Дополнительные сведения о текстовых полях и динамическом содержимом см. в разделе "Добавление текстовых полей и фигур" в отчеты Power BI.
Перезапишите строку, используя выражение DAX, которое выводит строку форматирования в правильном формате для вашей меры. Например, следующее выражение ищет строку формата валюты, которую нужно использовать в таблице строк формата валюты страны или региона :
Проверьте, что строка динамического формата работает в визуализации.
Чтобы удалить строку динамического формата и вернуться к использованию статической строки форматирования , в раскрывающемся списке >"Формат форматирования" выберите другой параметр формата. Так как в этом действии нет отмены, появится диалоговое окно с просьбой продолжить. Если вы хотите вернуться к использованию строки динамического формата еще раз, необходимо повторно ввести выражение DAX.
Пример
Лучший способ узнать о новой функции заключается в том, чтобы попробовать себя. Это можно сделать с помощью примера PBIX-файла Adventure Works 2020, доступного в примере модели DAX. Используя пример модели, вы можете добавить преобразование валюты для отображения преобразованной суммы продаж в год. После скачивания откройте файл в Power BI Desktop.
Создание новых таблиц
Пример модели не содержит все данные, необходимые для создания и использования строк динамического формата. Чтобы приступить к работе, необходимо добавить две таблицы.
На ленте "Главная" выберите ввод данных.
В диалоговом окне "Создание таблицы " введите строки формата валюты страны или региона в поле "Имя ", а затем скопируйте и вставьте следующую таблицу:
Страна или регион Валюта Формат Австралия Доллар # 0,00 AU$ Канада Доллар C$#,0.00 Дания Крона kr#0 Еврозоны Евро € #,0,00 Япония Иена ¥ #,0 Швеция Крона kr#0 Швейцария Франк CHF#,0.00 Соединенное Королевство Фунт £ #,0 Соединенные Штаты Доллар US$#,0.00 Убедитесь, что таблица выглядит правильно и выберите "Загрузить".
Повторите предыдущие шаги для следующей таблицы:
Имя таблицы: годовой средний обменный курс
Страна или регион Валюта Год Годовой средний обменный курс Австралия Доллар 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
Создайте столбец Год
Добавьте новый столбец "Год" в существующую таблицу "Date".
В представлении модели щелкните правой кнопкой мыши таблицу "Дата " и выберите "Создать столбец".
В строке формул DAX введите следующее выражение:
Year = YEAR([Date])и нажмите клавишу ВВОД.
Создание отношений
Создайте связи между новыми таблицами "Средние обменные курсы" и "Строки формата валюты региона" и между таблицей "Средние обменные курсы" и существующей таблицей "Дата".
Если включить автоматическое определение связей (на вкладке "Инструменты столбцов", выберите "Управление связями", а затем выберите "Автоопределение"), возможно, будет создана связь между Строки формата валюты по стране/региону и столбцом 'Средние обменные курсы за год' в столбце 'Страна или регион'. Если нет, создайте эту связь с помощью кнопки "Создать связь" в средствах >управления связями столбцов:
- Таблица 1. Средние обменные курсы по годам
- Столбец 1 таблицы: страна или регион
- Кратность: многие к одному
- Таблица 2: Строки форматов валют для стран и регионов
- Столбец 2 таблицы: страна или регион
- Сделать эту связь активной: Да
- Направление перекрестной фильтрации: одиночный
Связь должна выглядеть следующим образом:
Если включить автоматическое определение связей, можно создать связь между строками формата валюты страны или региона и территорией продаж в столбце "Страна или регион ". Удалите эту связь, так как она не является правильной для модели.
Вместо этого создайте связь между средними ежегодными обменными курсами и датой в столбце Год.
- Таблица 1. Средние обменные курсы по годам
- Столбец 1 таблицы: год
- Кратность: многие ко многим
- Таблица 2. Дата
- Столбец 2 таблицы: год
- Сделать эту связь активной: Да
- Направление перекрестной фильтрации: односторонний ("Средний обменный курс" фильтрует "Дата")
Связь должна выглядеть следующим образом:
Сохраните модель.
Создание таблицы групп мер
Группа мер помогает упорядочивать различные меры, имея их в одной таблице.
- На ленте "Главная" выберите ввод данных.
- В диалоговом окне "Создание таблицы" оставьте значения пустыми. Назовите таблицу Меры продаж, а затем выберите Загрузка. Эта таблица содержит ваши новые меры.
Создание мер
В области "Данные " разверните и щелкните правой кнопкой мыши меры "Продажи", а затем выберите "Создать меру". Введите следующее выражение DAX в строку формул DAX и нажмите Enter:
Sales Amount = SUM(Sales[Sales Amount])Он должен выглядеть так:
В Sales measures щелкните правой кнопкой мыши Column1 и выберите Скрыть в представлении отчета. Это изменение делает меры продаж группой мер, которая теперь отображается в верхней части области данных со значком группы мер.
Теперь можно создать меру для вычисления курса обмена. Щелкните правой кнопкой мыши Показатели продаж, выберите Создать меру, введите следующее выражение в строку формул DAX и нажмите клавишу Enter:
Exchange Rate (Yearly Avg) = IF ( ISBLANK ( SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Country/Region] ) ) || SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Country/Region] ) = "United States", 1, AVERAGE ( 'Yearly Average Exchange Rates'[Yearly Average Exchange Rate] ) )Теперь создайте другую меру для преобразования меры "Сумма продаж " в другие валюты. Щелкните правой кнопкой мыши Показатели продаж, выберите Создать меру, введите следующее выражение в строку формул DAX и нажмите клавишу Enter:
Converted Sales Amount = SUMX('Date', CALCULATE( [Sales Amount] * [Exchange Rate (Yearly Avg)]))Теперь меры продаж в группе мер должны выглядеть следующим образом:
Создание отчета
Перейдите в режим отчёта. Добавьте в отчет новую пустую страницу.
Добавьте линейную диаграмму на новую страницу отчета. Используйте эту визуализацию для оценки показателей перед добавлением динамической строки формата к метрикам.
В области
панель данных Меры продаж выберитеПреобразованная сумма продаж . Без выбора в другом месте также выберите "Год " в таблице "Дата ".Скопируйте и вставьте визуализацию линейного графика, чтобы у вас было две такие визуализации. Измените второй визуальный элемент диаграммы на визуальный элемент таблицы, а затем переместите его под графиком, как показано ниже.
Добавьте визуальный элемент среза списка на страницу отчета, выбрав срез списка в области "Визуализации ". На панели "Данные " выберите страну или регион из таблицы "Строки формата валюты страны или региона ", чтобы добавить ее в срез.
Переставьте визуальные элементы до получения более удачного макета, что-то вроде этого:
Хотя и не требуется, вы можете изменить визуальные свойства, чтобы сделать более удобный отчет. Используйте кнопку "Формат визуального элемента " на панели "Визуализации" , чтобы внести следующие изменения:
Slicer
- Визуальная вкладка >Настройки среза>Единичный выбор>Включено
- Общие>Свойства>Отступы: 10 пикселей, все края
- Вкладка 'Общие'>Эффекты>Визуальная граница: Включено, светло-серый, округленные углы 10 px
- Заголовок вкладки >"Общие": "Выкл.
- Граница кнопок >вкладки>: #333333, ширина строки 6
таблица
- Общие>Свойства>Отступы: 10 пикселей, все края
- Вкладка 'Общие'>Эффекты>Визуальная граница: Включено, светло-серый, округленные углы 10 px
- Визуальная вкладка >Сетка>Горизонтальные линии сетки: Включено, белого цвета, ширина 2
- Вкладка>визуализации>Вертикальные линии сетки:Включены, белый, ширина 2
- Визуальная вкладка >Сетка>Граница: белая
- Визуальные>сетки>: отступ на 2 строки
- Визуальные вкладка >Значения>Цвет фона: #F6F4F4
- Вкладка Визуальная>Значения>Альтернативный цвет фона: #F6F4F4
- Вкладка>Заголовки столбцов>Текст: Полужирный, белый цвет текста, цвет фона #0D6ABF
График
- Общие>Свойства>Отступы: 10 пикселей, все края
- Общие вкладка >Эффекты>Визуальная граница: Включено, светло-серый, 10 пикселей с округленными углами
- Заголовок заголовка ">Общие>>": вкл.
- Вкладка Визуализации>Ось Y>Заголовок: Выкл
- Вкладка>ось Y>Значения: Выкл.
- Визуальные маркеры>: Включено.
- Вкладка визуализации>Метки данных: вкл.
- Визуальная вкладка >Метки данных>Значение: полужирный, синий
Холст (необязательно)
- Параметры холста>Фон холста: светло-серый, 85% прозрачность
С помощью этих визуальных свойств создается страница отчета, которая выглядит следующим образом:
Создание строки динамического формата
При выборе разных имен стран или регионов в срезе элементы визуализации показывают результат метрики "Преобразованная сумма продаж", однако он не соответствует правильному формату для этой страны или региона.
В области данных в разделе "Меры продаж" выберите "Преобразованная сумма продаж".
На ленте инструментов измерения выберите Динамический в раскрывающемся списке «Формат».
Раскрывающийся список слева от строки формул теперь говорит Format, а формула в строке формул имеет строку форматирования. Замените строку формата следующим выражением DAX и нажмите ВВОД.
SELECTEDVALUE ( 'Country/Region Currency Format Strings'[Format], "\$#,0.00;(\$#,0.00);\$#,0.00" )Он должен выглядеть так:
Выберите другую страну или регион в срезе. Визуальные элементы таблицы и диаграммы теперь отображают преобразованную сумму валюты в правильном формате для этой страны или региона. Попробуйте выбрать другую страну или регион в срезе, чтобы узнать, как изменяются визуальные элементы.
Сохраните модель.
Строки динамического формата для метрик продолжительности
При наличии данных длительности, хранящихся в миллисекундах, отображение необработанных значений, таких как "3600 000 мс", не является понятным для пользователя. Вместо этого можно использовать строки динамического формата для отображения "1,0 ч", сохраняя базовую меру в миллисекундах для точных вычислений и сравнений.
Создание тестовой таблицы
Чтобы попробовать этот шаблон, создайте вычисляемую таблицу с примерами значений длительности:
Events =
DATATABLE(
"Event", STRING,
"DurationMs", INTEGER,
{
{"Quick click", 500},
{"Page load", 5000},
{"Report refresh", 120000},
{"Data export", 7200000}
}
)
Создать метрику длительности
Создайте меру, которая суммирует длительность и возвращает необработанные миллисекунды:
Duration (ms) = SUM(Events[DurationMs])
Добавление строки динамического формата
Добавьте строку динамического формата, которая преобразует и форматирует значение в соответствующую единицу времени:
VAR ms = SELECTEDMEASURE()
RETURN
SWITCH(
TRUE(),
ms < 1000, FORMAT(ms, "#,0") & " \m\s",
ms < 60000, "'" & FORMAT(ms / 1000, "#,0.0") & " s'",
ms < 3600000, "'" & FORMAT(ms / 60000, "#,0.0") & " m'",
"'" & FORMAT(ms / 3600000, "#,0.0") & " h'"
)
Как работает строка форматирования
В следующей таблице показано, как значения необработанных миллисекунд преобразуются в читабельные форматы.
| Необработанное значение (мс) | Преобразованы | Display |
|---|---|---|
| 500 | 500 | 500 мс |
| 5,000 | 5.0 | 5,0 с |
| 120,000 | 2.0 | 2.0 м |
| 7,200,000 | 2.0 | 2.0 ч |
Функция SELECTEDMEASURE() извлекает фактическое значение измерения, преобразует его в соответствующую единицу, а затем оборачивает его в строку в виде литерала с использованием одинарных кавычек.
Преимущества этого подхода
- Вычисления остаются точными: измерение возвращает миллисекунды, поэтому итоговые, средние и сравнения работают правильно.
- Отображение удобно для чтения: пользователи видят "2,5 с" вместо "2 500".
- Один шаблон, многие меры: примените одну и ту же строку формата ко всем измерениям длительности.
-
Диаграммы работают правильно: в отличие от использования
FORMAT()в самой мере, строки динамического формата сохраняют числовый тип данных для визуализаций.
Советы по строкам формата длительности
- Используйте
\m\s, чтобы экранировать "ms" как литеральный текст в строках форматирования. - Одинарные кавычки (
'...') в операторе return заставляют Power BI обрабатывать всю отформатированную строку как строку-литерал. - Этот шаблон также работает с группами вычислений. Примените его один раз и отформатируйте несколько мер автоматически.
Подсказка
Если у вас несколько мер длительности, которым нужна эта строка формата, рекомендуется создать определяемую пользователем функцию DAX , чтобы определить логику форматирования один раз и повторно использовать ее во всех мерах.
Известные проблемы и рекомендации
Визуальные элементы имеют параметры форматирования, которые могут повлиять на способ отображения строки форматирования. Если форматирование неожиданно отображается в визуальном элементе, перейдите к > визуальным параметрам форматавизуализаций, найдите единицы отображения и измените их с автона None.
Чтобы отключить единицы отображения для всех визуальных элементов отчета, можно использовать настраиваемую тему отчета. Создайте JSON-файл со следующим содержимым и импортируйте его в виде темы:
{ "$schema": "https://raw.githubusercontent.com/microsoft/powerbi-desktop-samples/main/Report%20Theme%20JSON%20Schema/reportThemeSchema-2.149.json", "name": "DisplayUnitsNone", "visualStyles": { "*": { "*": { "*": [ { "displayUnits": 1, "labelDisplayUnits": 1, "titleDisplayUnits": 1, "detailDisplayUnits": 1, "valueDisplayUnits": 1, "secLabelDisplayUnits": 1, "titleLabelDisplayUnits": 1 } ] } }, "cardVisual": { "*": { "*": [{ "$id": "default", "displayUnits": 1, "labelDisplayUnits": 1, "titleDisplayUnits": 1, "detailDisplayUnits": 1, "valueDisplayUnits": 1, "secLabelDisplayUnits": 1, "titleLabelDisplayUnits": 1 } ] } } } }Вы можете ссылаться на саму меру в строке динамического формата напрямую с помощью его имени, например [Measure A], или косвенно с помощью
SELECTEDMEASURE().Строки динамического формата для мер применяются только к мерам модели. Нельзя добавлять динамические строки формата для показателей отчета в отчете с подключением к реальным данным.
С помощью DirectQuery для служб Analysis Services при выборе параметра "Внести изменения в эту модель " в отчете динамического подключения вы переместите подключение к DirectQuery через службы Analysis Services. Как правило, можно внести изменения в строки формата измерений дистанционной модели. С помощью строк динамического формата для метрик:
- Меры удаленной модели, определенные строками динамического формата, блокируются от изменения строки формата на строку статического формата или на другое динамическое выражение DAX.
- Нельзя изменить меры удаленной модели из строки статического формата на выражение DAX динамического формата, определенное в локальной модели.
- Меры локальной модели заблокированы для использования строк динамического формата.
