Версия: 2.0
Работа с шаблонами
В Deneb есть несколько встроенных шаблонов, доступных в диалоге Create New Specification. Их использование показано в простом практическом примере, где мы создаём первую диаграмму.
Шаблоны не могут охватить все задачи: они помогают начать работу. Вы можете создавать собственные шаблоны или импортировать шаблоны других авторов.
Импорт шаблона
Как и при создании визуала из встроенного шаблона, сначала добавьте хотя бы один столбец или меру в набор данных визуала. После этого будет доступен расширенный редактор.
В диалоге Create New Specification расширенного редактора можно импортировать шаблон:

Выберите способ Existing template, затем нажмите область под Import your file, чтобы найти файл шаблона с расширением .json. Выбрав файл, нажмите Open.
Если содержимое шаблона Deneb скопировано в буфер обмена — как обычный текст или как файл из Проводника, — вставьте его в диалог сочетанием Ctrl + V. Deneb импортирует его, если распознает допустимый шаблон.
Поля-заполнители набора данных
JSON выбранного файла проходит проверку. Если она успешна, отображаются сведения о полях-заполнителях:

Рядом с именем каждого поля-заполнителя указан рекомендуемый тип данных — тот, который использовался в наборе данных автора.
Можно выбирать столбцы или меры другого типа, но результат может отличаться от замысла автора. Единственное ограничение: столбцы и меры нельзя использовать взаимозаменяемо. Неподходящие варианты отображаются серым цветом и недоступны для выбора.
Если автор добавил описание поля-заполнителя, его можно посмотреть с помощью значка информации рядом с ним.
Назначение полей
Откройте список поля-заполнителя и выберите подходящий столбец или меру из своего набора данных:

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

Нажмите Create: шаблон будет добавлен в расширенный редактор, а поля-заполнители заменены назначенными полями:

У каждого пользователя свои данные, поэтому, вероятно, потребуются дополнительные изменения спецификации для вашей задачи. В остальном всё готово! 😄
Создание шаблона
Если спецификация вас устраивает и вы хотите поделиться ею, сохранить копию для повторного использования или системы контроля версий, экспортируйте шаблон.
В расширенном редакторе выберите команду Generate JSON Template. Откроется диалог.
Сведения о шаблоне

Укажите понятное имя шаблона и более подробное описание. Эти сведения показываются пользователям при импорте и должны помогать им назначать поля.
Добавление изображения предварительного просмотра
В создаваемый шаблон можно включить изображение предварительного просмотра.
Когда вы отметите этот флажок, Deneb:
- Создаст PNG-изображение текущего представления редактора с помощью Vega View API.
- Ограничит его размер максимумом 150 × 150 пикселей, чтобы уменьшить объём шаблона.
- Сохранит соотношение сторон, ориентируясь на большую сторону изображения — ширину или высоту.
- Включит изображение в формате base64 в свойство
usermeta.information.previewImageBase64PNG. Подробнее см. ниже.
Набор данных шаблона
Ниже сведений о шаблоне и изображения предварительного просмотра можно настроить требования к набору данных пользователей:

Для каждого поля есть текстовое поле, позволяющее заменить его имя более универсальным именем поля-заполнителя. Это полезно и тогда, когда исходные имена могут быть конфиденциальными. Рекомендуется использовать конкретные, понятные названия: они помогают документировать шаблон.
Если оставить текстовое поле пустым или удалить его содержимое, будет использовано исходное имя из набора данных. Для сравнения оно также показано в столбце Original field.
Для каждого поля предусмотрено необязательное поле Author's notes. В него можно добавить пояснения для пользователей. Описание будет показано рядом с полем-заполнителем при импорте.
Проверка и экспорт
Когда всё готово, скачайте файл шаблона или скопируйте его в буфер обмена. Во втором случае вставьте содержимое в удобный редактор и сохраните файл с расширением .json.
Структура шаблона
Шаблон не содержит данные визуала, но предназначен для переноса между проектами. Вам нужно предоставить собственный набор данных. Шаблон служит отправной точкой для дальнейшей работы — примерно как готовый пример, который затем дорабатывают в Deneb.
Шаблон — это спецификация Vega или Vega-Lite с дополнительным объектом usermeta (Vega | Vega-Lite). Обычный внешний парсер Vega игнорирует этот объект, но Deneb использует его для проверки шаблона. Он включает следующие объекты.
deneb
Все свойства обязательны.
build— версия Deneb, в которой создан шаблон.- Свойство обязательно, но на этом этапе используется только для диагностики. Лучше оставить его без изменений.
metaVersion— версия метаданных шаблона.- Допустимые значения:
1(метаданные v1) и2(метаданные v2). Новые шаблоны всегда создаются со значением2;1сохраняется только для совместимости с шаблонами, созданными до Deneb 2.0. - Значение указывает версию схемы шаблона и определяет преобразования при импорте старого шаблона.
- Например, при импорте шаблона v1 в Deneb, ожидающий метаданные v2, структура автоматически приводится к текущему формату.
- Допустимые значения:
provider— поставщик, используемый при загрузке и разборе шаблона.- Допустимые значения:
vegaиvegaLite. - Если изменить свойство вручную, Deneb попытается определить поставщика по
$schemaверхнего уровня, если оно задано, а затем — по самой спецификации. Успех не гарантирован.
- Допустимые значения:
information
Следующие обязательные свойства заполняются по сведениям автора на панели Template Information диалога Create JSON Template:
name— имя шаблона, показываемое пользователю в диалоге после импорта.description— подробное описание назначения шаблона, показываемое после импорта.author— сведения об авторе.- Сейчас они не отображаются в диалоге импорта, но это может измениться.
Следующие обязательные свойства создаёт сам Deneb:
uuid— уникальный идентификатор шаблона.generated— время создания шаблона в UTC.
Следующие свойства зарезервированы для возможного использования в других местах. Сейчас они не используются в Deneb, за исключением указанного ниже изображения предварительного просмотра; в дальнейшем это может измениться:
supportUri— URI дополнительных сведений о шаблоне, например блога или сайта.videoUri— URI вспомогательного видео, например демонстрации или инструкции.previewImageBase64PNG— PNG-изображение в формате base64 для миниатюры или вспомогательной иллюстрации.- Если оно включено в шаблон, показывается в диалоге Create New Specification.
- Размер изображения не должен превышать 150 × 150 пикселей.
В объект information можно добавлять любые свойства для собственных нужд. Deneb игнорирует их при импорте.
datasets
Это объект именованных наборов данных шаблона, ключами которого служат имена наборов. Каждая запись содержит массив полей-заполнителей, которые пользователь должен назначить при импорте.
Во время выполнения Deneb считает, что у каждого шаблона один набор данных по умолчанию с именем dataset. Поэтому обычно объект содержит один ключ:
{
"datasets": {
"dataset": [
{ "key": "__dataset.0__", ... },
{ "key": "__dataset.1__", ... }
]
}
}
Схема допускает дополнительные ключи наборов данных, но они не отображаются в интерфейсе визуала.
Каждое поле-заполнитель имеет следующие свойства:
| Свойство | Обязательное | Тип | Пояснения |
|---|---|---|---|
key |
Да | string | Имя поля-заполнителя в пределах набора данных. Должно соответствовать шаблону __<dataset>.<index>__, где <dataset> — ключ содержащего его набора, а <index> — целое число от нуля, например __dataset.0__. Максимум 30 символов. Собственные имена вроде __myField__, допустимые до Deneb 2.0, схема v2 отвергает; шаблоны v1 автоматически преобразуются при импорте. |
name |
Да | string | Отображаемое имя при назначении поля пользователем. Максимум 150 символов. |
description |
Нет | string | Необязательное пояснение рядом с полем-заполнителем. Максимум 300 символов. |
kind |
Да | column | measure | parameter | any |
Определяет, ожидается ли столбец, мера, параметр полей или любой из этих вариантов. При parameter Deneb показывает отдельный значок при импорте, автоматически включает объединение для проекта и настройку Treat as field parameter, если выбрано обычное поле. |
type |
Да | bool | text | numeric | dateTime | other |
Рекомендуемый тип данных по исходному набору автора. Показывается пользователю как подсказка. Другой тип допустим, но может потребовать изменений. |
supportFieldConfiguration |
Нет | object | Флаги вспомогательных полей, сохраняемые в шаблоне. Запись включается только для полей, чья конфигурация отличается от значений по умолчанию для их роли. Поля без записи получают значения по умолчанию при импорте. Объект должен явно содержать true или false для highlight, highlightStatus, highlightComparator, format и formatted. names и treatAsParameter необязательны и относятся только к параметрам. Структура повторяет supportFieldConfiguration в PBIR, но без внешней обёртки текстового литерала, требуемой PBIR. |
interactivity
Необязательный объект настроек интерактивности, применяемых при импорте шаблона. Если он отсутствует, используются значения Deneb по умолчанию.
| Свойство | Обязательное | По умолчанию | Тип | Пояснения |
|---|---|---|---|---|
tooltip |
Да | true |
boolean | Включает обработчик подсказок Power BI вместо встроенного обработчика Vega. |
contextMenu |
Да | true |
boolean | Определяет, появляется ли контекстное меню Power BI при нажатии правой кнопкой мыши. |
contextMenuSelector |
Нет | true |
boolean | При включённом контекстном меню определяет, пытается ли Deneb сопоставить точку данных для drill-through и других действий, связанных с данными. Имеет значение только при contextMenu: true. |
selection |
Да | false |
boolean | Включает перекрёстную фильтрацию при нажатии на точки данных. |
selectionMode |
Нет | simple |
simple | advanced |
Режим перекрёстной фильтрации. simple позволяет Deneb автоматически определять точки данных. advanced использует события расширенной перекрёстной фильтрации, заданные в спецификации Vega. |
highlight |
Нет | false |
boolean | Включает перекрёстное выделение значений мер из других визуалов. |
dataPointLimit |
Да | 50 |
number (1–250) | Максимальное число точек данных, объединяемых для операции перекрёстной фильтрации. Имеет значение только при selection: true. |
config
Необязательная строка с содержимым редактора конфигурации: JSON или JSONC, преобразованный в строку, как на панели Config Editor. Если свойство отсутствует, предполагается пустая конфигурация {}.
Дополнительные сведения для разработчиков
Если вы создаёте шаблоны вне Deneb для последующего импорта, убедитесь, что их основная спецификация соответствует требованиям Vega или Vega-Lite.
Объект usermeta расширяемый. Для проверки того, что Deneb правильно разберёт его при импорте, доступны JSON-схемы:
- Текущая (v2): deneb-template-usermeta-v2.json.
- Прежняя (v1): deneb-template-usermeta-v1.json. Сохранена для проверки шаблонов до версии 2.0 перед импортом и преобразованием.