Справочник YAML рабочего процесса
Справочник по формату экспорта/импорта рабочего процесса в YAML, включая поля узлов, связи и различия версий.
На этой странице документируется формат YAML, который Transformation Builder используется для экспорта и импорта рабочих процессов. Используйте этот справочник, когда необходимо обмениваться рабочими процессами между средами, хранить их в системе контроля версий или интегрировать с внешними системами выполнения.
Формат имеет две версии. Версия 2 является текущим форматом, который Transformation Builder генерирует при экспорте. Он организует узлы как плоский массив в топологическом порядке (cte_nodes) с отдельным edges массивом для связей. Версия 1 — это более старый формат, который использует nodes ключ с встроенными depends_on ссылками для связей. Transformation Builder может импортировать обе версии, но всегда экспортирует версию 2.
Как формируется экспорт
Генератор экспорта формирует YAML-файл в четыре шага:
Топологическая сортировка узлов. Граф узлов и ребер сортируется так, чтобы сначала шли исходные узлы, затем узлы трансформаций в порядке зависимостей, и, наконец, узел Output. Если в графе присутствует цикл, используется запасной порядок (по позиции в списке узлов).
Список источников для каждого узла. Для каждого узла генератор собирает упорядоченный список идентификаторов предшествующих узлов из ребер, где
targetравно идентификатору текущего узла. Например, узел SQL Transform с двумя входами будет иметьsourcesсписок, содержащий ровно два идентификатора в правильном порядке.cte_nodes массив. Каждый узел записывается как запись в
cte_nodesмассиве, в топологическом порядке. См. структуру cte_nodes ниже для подробностей полей.Сборка верхнего уровня YAML. Генератор объединяет
cte_nodesмассив со списком edges, метаданными рабочего процесса и опциональными полями (viewport, schedule) в итоговый документ.
Ключи верхнего уровня
Корень YAML-файла версии 2 содержит следующие ключи:
version
Всегда
Номер версии формата. Всегда 2 для текущих экспортов.
name
Всегда
Имя рабочего процесса.
description
Всегда
Описание рабочего процесса. Может быть пустой строкой.
output_node_id
Когда существует узел Output
Идентификатор узла Output в рабочем процессе.
viewport
Если задано в рабочем процессе
Позиция на канве и уровень масштабирования: { x, y, zoom }. Используется для восстановления визуального расположения при импорте.
schedule
Если планировщик включён
Расписание выполнения: { cron, timezone }. По умолчанию cron — 0 0 * * *, часовой пояс по умолчанию — UTC.
структуру cte_nodes
Каждая запись в cte_nodes массиве представляет один узел в графе рабочего процесса.
id
Уникальный идентификатор узла (строка).
type
Тип узла. Один из: telematics, business, filter, resample, sql, arithmetic, custom, output.
label
Отображаемое имя, показанное на канве. Используется идентификатор узла, если имя не задано.
description
Описание узла. Может быть пустой строкой.
position
Координаты на канве как { x, y }.
sources
Упорядоченный список идентификаторов предшествующих узлов, полученный из ребер графа. Пуст для исходных узлов.
params
Параметры конфигурации узла. Конкретные поля зависят от типа узла. См. Transformation Builder документацию для подробностей параметров по типам узлов.
width, height
Необязательно. Размеры канвы для узла, включаются только если явно заданы.
Очистка параметров. The available_tables и available_columns поля удаляются из params во время экспорта. Эти поля заполняются во время выполнения, когда Builder подключается к базе данных, и не должны храниться в YAML.
SQL тип с несколькими источниками. Когда узел типа sql имеет два или более источников, экспорт добавляет join_spec поле в запись. Это массив с одним элементом, содержащим конфигурацию соединения:
The type значение берётся из параметра узла join_type (преобразовано в строчные буквы), а on_condition берётся из join_condition. Для SQL-узлов с двумя источниками информация о соединении появляется в обоих params и join_spec.
структуру edges
The edges массив определяет связи между узлами в графе рабочего процесса.
Каждое ребро — это объект с двумя полями:
source
Идентификатор узла, от которого исходит ребро.
target
Идентификатор узла, в котором ребро заканчивается.
Идентификаторы ребер из интерфейса Builder не сохраняются в экспорте. При импорте генерируются новые идентификаторы ребер автоматически.
Import
Определение версии
Builder определяет версию формата YAML с использованием следующей логики:
Если в корне содержится
version: 2или ключcte_nodes, файл обрабатывается как версия 2.В противном случае версия 1 ожидается.
Импорт версии 2
Builder проходит по cte_nodes массиву в порядке. Для каждой записи:
The
idиtypeчитаются. Тип преобразуется в строчные буквы. Узлы с типомpythonпропускаются без генерации ошибки.Параметры читаются из ключа
params(илиconfigкак запасной вариант). Для узлов типаsql-type, если полеjoin_specприсутствует в записи, оно присваивается конфигурации соединения узла.The
edgesмассив разбирается в пары источник-назначение, и генерируются новые идентификаторы ребер.The
viewportиscheduleполя сохраняются, если присутствуют в YAML.
Импорт версии 1 (обратная совместимость)
Файлы версии 1 используют nodes ключ (массив или словарь) и, опционально, edges массив или depends_on поля в каждом узле.
Builder обрабатывает файлы версии 1 следующим образом:
Поддерживаемые типы узлов такие же, как в версии 2:
telematics,business,filter,resample,sql,arithmetic,custom,output.Связи между узлами могут быть определены двумя способами: верхнеуровневый
edgesмассив, илиdepends_onсписок внутри каждого узла.The
inputsиoutputsполя на каждом узле нормализуются в объекты со структурой{ name, type }.Если ребра включают
sourceHandleилиtargetHandleидентификаторы портов, импорт соответственно настраивает порты узлов для корректного отображения в интерфейсе Builder.
Шаблон структуры YAML
Следующий шаблон показывает полную структуру YAML-файла версии 2 с аннотациями:
Пример
В следующем примере показана полная версия рабочего процесса версии 2, которая читает телематические данные датчиков, объединяет их с описаниями датчиков из бизнес-схемы, применяет арифметическое преобразование для приведения типа столбца и записывает результаты в выходную таблицу.
Этот рабочий процесс выполняет следующие шаги:
node-telematics-1 читает
device_id,device_timeизначениестолбцы изinputsтаблицы вraw_telematics_data.node-business-1 читает
sensor_id,device_idиsensor_labelизsensor_descriptionтаблицы вraw_business_data.node-sql-1 объединяет два источника по
device_idиспользуяLEFT JOIN, выбирая все столбцы телематики плюсsensor_labelиз бизнес-источника.node-arithmetic-1 добавляет вычисляемый столбец
value_numпутём приведения текстовогозначениестолбца к числовому типу.node-output-1 настраивает запись результата в
enriched_vehicle_metricsтаблицу сappendрежимом, используяdevice_idиdevice_timeв качестве первичного ключа.
Экспорт не включает available_tables или available_columns в paramsЭти поля заполняются динамически при подключении Builder к базе данных. Для SQL-узлов с двумя источниками информация о соединениях появляется в обоих params и join_spec.
Дальнейшие шаги
Transformation Builder: Узнайте, как проектировать рабочие процессы с помощью визуального интерфейса.
Слой Transformation: Поймите, как обработанные данные организованы в схемы и как их запрашивать.
Последнее обновление
Это было полезно?