Версия: 2.1 🚧
Параметры полей
Параметры полей — возможность Power BI, с помощью которой автор отчёта позволяет пользователям динамически менять столбцы или меры в визуале через выбор в срезе. Начиная с версии 2.0 Deneb поддерживает параметры полей напрямую и предоставляет настройки их обработки и представления в наборе данных визуала.
Как Deneb обрабатывает параметры полей
Если в область данных Values добавлены столбцы или меры, входящие в параметр полей, Deneb определяет это по метаданным семантической модели. Их представление в наборе данных зависит от настройки Consolidate field parameters, расположенной в разделе Semantic model integration панели Project setup.

Доступны два режима:
- Объединение (настройка включена) — компоненты параметра объединяются в столбцы с массивами значений, названные по имени параметра. Этот подход рекомендуется для новых проектов.
- Передача без объединения (настройка выключена) — компоненты параметра появляются в наборе данных по отдельности, как обычные столбцы или меры.
Режим объединения
При включённом объединении Deneb группирует поля, входящие в один параметр полей, в единый столбец с массивами значений. Его имя совпадает с именем параметра. В каждой строке содержится массив: по одному значению для каждого компонента параметра, в порядке представления данных Power BI.
Например, если параметр Metric включает меры [$ Sales] и [$ Profit], в наборе данных появится столбец Metric, каждая строка которого содержит массив вида [1000, 250].
Вспомогательные поля
Помимо основного столбца с массивами Deneb может предоставлять дополнительные поля с метаданными компонентов параметра. Они управляются через настройку Supporting Fields для параметра — так же, как для других типов полей.
| Вспомогательное поле | Описание | По умолчанию |
|---|---|---|
Значение выделения ([Parameter]__highlight) |
Массив значений выделения для каждого компонента. Для мер используется значение выделения Power BI; для столбцов — исходное значение. | При включённом перекрёстном выделении |
Состояние выделения ([Parameter]__highlightStatus) |
Массив состояний выделения компонентов: 'neutral', 'on' или 'off'. |
Выключено |
Сравнение выделения ([Parameter]__highlightComparator) |
Массив результатов сравнения компонентов: 'eq', 'lt', 'gt' или 'neq'. |
Выключено |
Строка форматирования ([Parameter]__format) |
Массив строк форматирования из семантической модели. | Выключено |
Отформатированное значение ([Parameter]__formatted) |
Массив заранее отформатированных значений для отображения. | Выключено |
Имена полей ([Parameter]__names) |
Массив отображаемых имён компонентов, например ["$ Sales", "$ Profit"]. |
Выключено |

Работа с массивами
Объединённые параметры полей создают столбцы с массивами значений. Поэтому перед кодированием обычно нужно развернуть их в отдельные строки с помощью преобразования flatten. Это стандартное преобразование Vega и Vega-Lite.
{
"data": { "name": "dataset" },
"transform": [
{
"flatten": ["Metric", "Metric__names"]
}
],
"mark": "bar",
"encoding": {
"x": { "field": "Metric", "type": "quantitative" },
"color": { "field": "Metric__names", "type": "nominal" }
}
}
{
"data": [
{ "name": "dataset" },
{
"name": "flattened",
"source": "dataset",
"transform": [
{
"type": "flatten",
"fields": ["Metric", "Metric__names"]
}
]
}
]
}
Преобразование flatten создаёт новую строку для каждого элемента массива, сопоставляя значения всех разворачиваемых полей по индексу. Исходное значение __row__ сохраняется. Это важно для поддержки интерактивности Power BI, например подсказок и перекрёстной фильтрации.
Настройка отдельного поля: Treat as field parameter
При включённом объединении для каждого столбца или меры в конфигурации набора данных доступна настройка Treat as field parameter. Она позволяет вручную пометить обычное поле как параметр полей, оборачивая его значение в массив из одного элемента.
Это полезно в следующих случаях:
- Совместимость с шаблоном: вы импортируете шаблон, рассчитанный на параметр полей, но хотите назначить на его место обычный столбец или меру.
- Тестирование: вы разрабатываете спецификацию с преобразованиями
flattenи хотите проверить её на обычных полях до подключения настоящих параметров полей.
После включения поле ведёт себя как параметр из одного компонента: значение превращается в массив из одного элемента. Если также включено __names, оно содержит отображаемое имя поля в таком же массиве.
Режим передачи без объединения
Когда объединение выключено, Deneb полностью игнорирует метаданные параметров полей. Их компоненты появляются в наборе данных как отдельные столбцы или меры, с обычными ролями: группировка для столбцов, агрегирование для мер.
Этот режим нужен прежде всего для обратной совместимости. До Deneb 2.0 сообщество использовало обходной способ работы с параметрами полей: таблицу параметра в DAX изменяли так, чтобы первый столбец содержал известное постоянное имя. Режим передачи без объединения позволяет продолжать использовать этот подход без изменений.
Обходной способ с постоянным именем
Идея состоит в изменении вычисляемой таблицы параметра полей в DAX: первому столбцу, из которого получается имя поля в визуале, задаётся постоянное значение. Тогда имя поля не меняется при выборе пользователем другого значения параметра в срезе.
Например, исходный параметр полей выглядит так:
FPTest = {
("Country", NAMEOF('Data'[Country]), 0),
("Size", NAMEOF('Data'[Size]), 1)
}
Задайте всем значениям первого столбца одну константу и добавьте ещё один столбец для подписей в срезе:
FPTest = {
("Series", NAMEOF('Data'[Country]), 0, "By Country"),
("Series", NAMEOF('Data'[Size]), 1, "By Size")
}
Новый четвёртый столбец, переименованный из Value4 во что-то понятное, используется в срезе вместо исходного. Первый столбец — теперь всегда "Series" — добавляется в область Values визуала Deneb. Спецификация может обращаться к нему по постоянному имени независимо от выбора в срезе.
Работа с шаблонами
Параметры полей полностью поддерживаются при экспорте и импорте шаблонов:
- Экспорт: объединённые параметры экспортируются с ролью
field-parameterв метаданных шаблона вместе с настройками вспомогательных полей. Компоненты не перечисляются отдельно: единицей учёта служит параметр. - Импорт: если шаблон содержит поле с ролью
field-parameter, Deneb показывает отдельный значок в интерфейсе назначения полей.- При назначении настоящего параметра полей объединение автоматически включается для проекта.
- При назначении обычного столбца или меры Deneb автоматически включает для поля Treat as field parameter и объединение для проекта. Поэтому преобразования
flattenпродолжают работать без ручной настройки.

Ограничения
- Порядок компонентов объединённого параметра зависит от позиции поля в представлении данных Power BI. Он может отличаться от алфавитного порядка и порядка в таблице параметра. Задать собственную сортировку компонентов нельзя.
- Вспомогательные поля выделения содержат массивы, а не скалярные значения.
__highlightStatusи__highlightComparatorвычисляются отдельно для каждого компонента: столбцы передают исходное значение, что даёт'eq'и'neutral'; меры используют значение выделения Power BI. Структура отличается от скалярных полей выделения обычных мер.