Версия: 2.1 🚧

Параметры полей

Параметры полей — возможность Power BI, с помощью которой автор отчёта позволяет пользователям динамически менять столбцы или меры в визуале через выбор в срезе. Начиная с версии 2.0 Deneb поддерживает параметры полей напрямую и предоставляет настройки их обработки и представления в наборе данных визуала.

Как Deneb обрабатывает параметры полей

Если в область данных Values добавлены столбцы или меры, входящие в параметр полей, Deneb определяет это по метаданным семантической модели. Их представление в наборе данных зависит от настройки Consolidate field parameters, расположенной в разделе Semantic model integration панели Project setup.

Расположение настройки Consolidate field parameters

Доступны два режима:

  • Объединение (настройка включена) — компоненты параметра объединяются в столбцы с массивами значений, названные по имени параметра. Этот подход рекомендуется для новых проектов.
  • Передача без объединения (настройка выключена) — компоненты параметра появляются в наборе данных по отдельности, как обычные столбцы или меры.

Режим объединения

При включённом объединении 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.

Пример преобразования Vega-Lite
{
  "data": { "name": "dataset" },
  "transform": [
    {
      "flatten": ["Metric", "Metric__names"]
    }
  ],
  "mark": "bar",
  "encoding": {
    "x": { "field": "Metric", "type": "quantitative" },
    "color": { "field": "Metric__names", "type": "nominal" }
  }
}
Пример преобразования Vega
{
  "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. Структура отличается от скалярных полей выделения обычных мер.