← Моделирование данных

Архитектор данных (Data architect)

Архитектор данных объединяет инструменты для понимания структуры данных, контроля зависимостей и подготовки витрин. Раздел находится в Glarus BI по адресу /data-architect/. Он доступен только пользователям из групп Администраторы и Аналитики данных.

Используйте левую навигацию раздела, чтобы перейти между Конструктором схемы, Lineage, Зависимостями, ETL-заданиями и Конвейерами. Эти инструменты дополняют друг друга: схема помогает прочитать модель, Lineage показывает поток данных, Зависимости помогают оценить последствия изменений, ETL-задания создают и обновляют витрины, а Конвейеры объединяют задания в управляемый граф выполнения.

Конструктор схемы (ERD)

Конструктор схемы показывает таблицы, поля и связи выбранной базы данных на интерактивной ERD-диаграмме. Выбирайте базу и схему, ищите и фокусируйте таблицы, раскрывайте связи с таблицами из другой схемы и при необходимости сохраняйте раскладку или экспортируйте диаграмму.

Конструктор схемы можно открыть напрямую по ID поля Glarus BI, без дополнительных параметров таблицы и базы. Автоматический выбор доступного владельца, выделение столбца и сообщения об ошибках описаны в разделе «Прямая ссылка к полю».

Связь FK можно создать перетаскиванием между полями разных таблиц, а созданную пользователем связь — удалить с холста. Перед сохранением проверьте итоговое направление связи в окне подтверждения. Такие действия меняют только метаданные Glarus BI; реальная схема базы данных и её DDL не изменяются. Связи, существующие в самой базе данных, не удаляются через этот инструмент.

Предложения связей с помощью ИИ

Кнопка генерации связей с помощью ИИ предлагает кандидаты для отсутствующих FK. Перед применением изучите связь, уровень уверенности и объяснение, снимите отметки с неподходящих вариантов и только затем нажмите «Применить выбранные». Ни одна связь не создаётся автоматически.

Для предложений передаются только метаданные таблиц и полей и агрегированные показатели fingerprint-профилей, например кардинальность и диапазоны. Значения строк из базы данных не передаются. На очень большой схеме выбирайте конкретные таблицы: обработка всей схемы без ограничения может быть недоступна.

Lineage: поток данных

Lineage отвечает на вопрос «откуда пришли данные и куда они идут». Выберите таблицу или, когда это возможно, отдельную колонку, чтобы проследить upstream-источники и downstream-потребителей через таблицы, модели, вопросы и ETL-задания. Это помогает понять происхождение показателя до изменения модели или источника.

Переходите по узлам графа к соответствующему объекту и расширяйте направление, которое нужно исследовать. Уровень детализации по колонкам зависит от доступных метаданных и типа запроса.

Управление графом Lineage

Изучайте загруженный граф Lineage с автоматической раскладкой. На этом экране нет кнопки с замком или переключателя взаимодействия. Перетаскивание отдельного узла не меняет его положение и не включает режим редактирования, создания или изменения связей; пользовательская раскладка узлов не сохраняется.

Сохраняются увеличение и уменьшение масштаба, панорамирование, мини-карта, выбор узла и переход к соответствующей сущности. Панорамирование — это перемещение всего полотна, а не отдельного узла.

Это правило относится только к экрану Lineage. Экран Зависимости сохраняет прежний замок и перемещение узлов по своим штатным правилам. ERD/FK, экспорт JSON/CSV/OpenLineage, API и права, данные и DDL не изменяются.

Псевдонимы SQL-выражений

В Lineage выходной псевдоним SQL-выражения не становится исходным unknown-столбцом только из-за имени после AS. Сохраняются реальные таблицы, операнды выражения и поля фильтра, от которых зависит результат.

Например, в COUNT(*) AS cnt нет отдельного исходного столбца cnt, но таблица-источник сохраняется. В MIN(created_at) AS min_dt, MAX(created_at) AS max_dt и total + tax AS total_with_tax источниками остаются реальные операнды: created_at либо total и tax, а не выходные имена.

Прямые ссылки на поля и вложенные выражения сохраняют настоящие источники; AS у реального поля не скрывает это поле. Строковые литералы и SQL-комментарии не становятся источниками.

Настоящие неразрешённые или неоднозначные ссылки не скрываются. Парсер не гарантирует разбор любого SQL-диалекта: для неподдерживаемого SQL сохраняется доступное происхождение на уровне таблиц, без предположительных связей колонок. Эти правила одинаковы для графа и обычных JSON/CSV-выгрузок текущего графа; форматы, права доступа, данные и DDL не изменяются.

Переход к списку ETL

Нажмите любой ETL-узел в Lineage — корневой или среди других узлов графа: в новой вкладке откроется общий список ETL-заданий по адресу /data-architect/transforms, не карточка конкретного задания.

Переход не выделяет и не фильтрует задание автоматически по его ID. Используйте обычный поиск списка, чтобы найти нужное задание. Устаревшая административная ссылка с ID больше не используется, поэтому переход не ведёт на страницу 404.

Другие типы узлов сохраняют свои маршруты. Сам переход не запускает ETL и не изменяет данные, DDL или права пользователя.

Загрузка и повтор направления

На странице /data-architect/lineage выберите тип Столбец, укажите идентификатор объекта и глубину обхода, затем загрузите граф.

Источники и потребители загружаются независимо. Готовая ветвь и её статистика отображаются сразу, даже если другое направление ещё загружается или завершилось ошибкой. Его состояние показывается отдельно; успешный результат не скрывается.

При ошибке или отсутствии ответа за 30 секунд у проблемного направления появляется сообщение на русском и кнопка Повторить. Повторно запрашивается только это направление, успешная ветвь не перезагружается. 30 секунд — предел ожидания ответа одного направления, не гарантия полного вычисления обоих направлений за это время.

Вид графа и экспорт

Начальный и расширяющийся частичный граф вписывается в доступную область до ручного управления камерой. Если вручную изменить масштаб или переместить полотно, поздние результаты и повтор направления не сбрасывают выбранный вами вид.

Загрузка другого объекта или глубины запускает новый начальный вид. Сохраняются штатные пределы масштаба: все узлы и подписи большого графа не обязательно видны одновременно.

Доступность JSON/CSV определяется по существующим правилам связного графа. Настоящий корневой объект без рёбер может отображаться при загрузке или ошибке второго направления, но экспорт остаётся недоступным; частичное состояние не включает экспорт автоматически. Полный экспорт может потребовать подготовки и не гарантирует немедленного получения полного файла.

Границы восстановления

Серверный обход, форматы файлов, права доступа, DDL, данные и общий снимок графа этим исправлением не меняются. Экран Зависимости сохраняет прежнее поведение камеры.

Переход к столбцу в Конструкторе схемы

На странице /data-architect/lineage нажмите узел столбца, для которого определена таблица-владелец. В новой вкладке откроется Конструктор схемы (/data-architect/erd) с соответствующей базой данных и таблицей-владельцем. Таблица центрируется на полотне, а выбранный столбец выделяется.

Выделение сохраняется при ожидании и масштабировании. Оно остаётся до смены выбора или ухода со страницы Конструктора схемы; выбирать столбец повторно после паузы или изменения масштаба не нужно.

Границы перехода

Если таблица-владелец столбца не определена по доступным метаданным, переход не выполняется: Glarus BI не подставляет предположительную таблицу и не создаёт выдуманную связь. Сам переход только открывает существующий объект и не изменяет DDL, данные или права пользователя; доступ к объектам по-прежнему ограничен вашими правами.

Экспорт графа

На экранах Lineage и Зависимости выберите область «Текущий подграф» или «Полный граф», затем нажмите «Скачать JSON» либо «Скачать CSV». Текущий подграф содержит выбранный объект и связанную с ним видимую компоненту; полный граф содержит все узлы и рёбра, загруженные экраном с учётом ваших прав. Имена файлов включают тип и идентификатор объекта, направление, область и дату выгрузки.

В сборках линии 57 с этим исправлением при выгрузке полного графа на экранах Lineage и Зависимости индикатор загрузки появляется только на выбранной кнопке — JSON или CSV. Другая кнопка временно недоступна, сохраняет исходную подпись и не показывает индикатор; второй экспорт не запускается. После успешной выгрузки обе кнопки снова доступны. При ошибке появляется сообщение, индикатор исчезает, обе кнопки снова доступны для повторной попытки. Форматы файлов, содержимое графа и права доступа не меняются.

Для интеграции с каталогом или SIEM используйте GET /api/content-graph/export?format=json либо GET /api/content-graph/export?format=csv. JSON содержит детерминированные массивы nodes и edges, время формирования и версию графа. CSV-вариант возвращает ZIP-архив content-graph-export.zip с файлами nodes.csv, edges.csv и metadata.csv. Экспорт проходит тот же гейт Архитектора данных и отфильтровывает недоступные пользователю объекты; расширенные ETL-узлы доступны только суперпользователю.

Lineage по колонкам строится для поддерживаемых структурированных и нативных SQL-запросов, которые удалось разобрать. Если выражение или диалект не распознаны, Glarus BI сохраняет доступный lineage уровня таблиц и не создаёт предположительные связи колонок.

OpenLineage для внешних каталогов

Администратор может включить публикацию событий OpenLineage 2.0.2 для трансформаций и шагов ETL-конвейеров. Для каждого выполнения отправляется START, затем ровно одно событие COMPLETE или FAIL с доступными входами, выходом, схемой, статистикой строк и column lineage. Интеграция по умолчанию выключена; недоступность приёмника журналируется, но не меняет результат ETL.

Настройте HTTP-приёмник через glarus-openlineage-url и при необходимости bearer token через glarus-openlineage-token; одновременно можно включить UTF-8 JSON Lines sink через glarus-openlineage-file-path. HTTP redirect не выполняется. Пароли, токены и произвольные параметры подключений не попадают в dataset namespace или payload.

Суперпользователь может получить статический каталог ETL-сущностей через GET /api/glarus/open-lineage/bulk. Дашборды, вопросы и модели остаются в полном content-graph export и не выдаются за нестандартные OpenLineage jobs.

Зависимости, влияние и диагностика

Инструмент «Зависимости» строит карту того, что использует выбранную таблицу, модель, вопрос, дашборд или ETL-задание. Перед удалением, переименованием или изменением источника загрузите downstream-граф: это и есть анализ влияния — список объектов, которые могут потребовать проверки.

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

В сборках линии 57 с восстановленной диагностикой полный снимок содержит битые зависимости с причинами, действительно неиспользуемые вопросы и модели, неисправные ETL-задания и затронутые объекты с цепочками влияния. Действительно используемые модели и вопросы не считаются неиспользуемыми, в том числе модель, на которую ссылается используемый вопрос.

Подробные причины и цепочки относятся к ответу API; это не означает появления новых колонок или значков в интерфейсе.

Диагностика через API

GET /api/content-graph/diagnostics доступен только администратору. До первого готового снимка ответ имеет HTTP 202, понятный status: rebuilding и поясняющее message. Готовый снимок возвращается с HTTP 200.

Во время последующей пересборки прежний полный снимок остаётся доступен с HTTP 200, прежним generated_at и stale: true: это прежний, а не новый снимок. После завершения пересборки и публикации становится доступен новый снимок.

Повторные POST /api/content-graph/rebuild во время сборки объединяются с уже выполняющейся работой и не ставят отдельную перестройку в очередь. Срок сборки не фиксирован.

Корень, связи и статистика графа

В сборках линии 57 с исправлением на экране «Зависимости» выберите тип объекта — таблица, столбец, модель, вопрос, дашборд или ETL — и его идентификатор. Задайте направление upstream или downstream, максимальную глубину обхода, включая 0, и нажмите Загрузить граф.

Выбранный корень присутствует в успешно загруженном графе и выделен среди остальных узлов. Ребро показывается, только если оба его конца присутствуют среди узлов этого графа.

Счётчики Узлы и Рёбра показывают количество элементов фактически показанного графа. Глубина показывает достигнутую глубину, а не заданный предел обхода.

Если после успешной загрузки связей нет, остаётся один выбранный корень, рёбер нет и видно сообщение Связи не найдены. При глубине 0 отображается только корень; фактическая глубина равна 0.

Загрузка, ошибка запроса и отсутствие доступа не являются успешным пустым результатом. Это уточнение отображения не меняет алгоритм обхода, сохранённые данные или права доступа.

Переход к столбцу из графа зависимостей

В сборках линии 57 с исправлением на экране «Зависимости» переход к столбцу возможен, если это реальный существующий столбец, найдена его таблица-владелец и у пользователя есть доступ к этой таблице. Открывается ERD соответствующей таблицы с выделением столбца.

Переход недоступен в четырёх случаях: показано неизвестное или синтетическое поле, для которого нет реальной записи столбца; не найдена таблица-владелец; столбец удалён; у пользователя нет доступа к таблице.

Для недоступного поля показывается подсказка Переход недоступен: поле не связано с БД. Нажатие мышью и клавиши Enter или Space не открывают ERD. При этом доступный столбец и другие типы узлов сохраняют штатную навигацию.

Это ограничение перехода в интерфейсе не меняет серверные права, сохранённые данные или DDL и не предоставляет дополнительный доступ.

ETL-задания: построение витрин

ETL-задание выполняет SQL-запрос или сохранённый вопрос и материализует результат как витрину. Создайте задание, укажите источник, целевую таблицу и при необходимости запустите его вручную. Задание также можно создать из существующего вопроса: его текущий запрос сохраняется как снимок, поэтому дальнейшее изменение исходного вопроса не меняет уже созданное задание. Вопросы с параметрами необходимо сначала подготовить без параметров.

Для регулярного обновления задайте расписание и используйте историю выполнений для проверки статусов, ошибок и времени запусков. Витрину можно обновлять полным пересчётом или инкрементально. При инкрементальном выполнении автор задания сам выбирает монотонную колонку-курсор, например updated_at; без подходящей колонки используйте полный пересчёт.

Ограничение инкрементального обновления

Инкрементальная загрузка добавляет новые и изменённые строки, если курсор обновляется, но не отражает удаления из источника: удалённой строки уже нет в выборке. Для полной синхронизации после удалений выполните полный refresh или используйте отдельный процесс CDC.

Если настроено общее хранилище ClickHouse, витрина может материализоваться в него из другого источника. Для таких витрин особенно важно сопоставить режим обновления с возможностями источника и проверить результат в истории выполнений.

Инкрементальный ETL в исходную ClickHouse

В сборках линии 57 с исправлением выберите Исходная БД (CTAS) и Инкрементальное обновление. Если целевая таблица ClickHouse отсутствует, задание создаёт её с ENGINE = MergeTree и ORDER BY tuple(), затем загружает результат. Подключение должно уже иметь необходимые права CREATE, INSERT и SELECT в целевой базе; приложение не выдаёт права автоматически.

В синтетическом примере источник содержит заказы с последовательными идентификаторами. Для монотонного курсора order_id:

  1. SQL с условием order_id <= 1003 при первом запуске даёт в физической цели 3 строки и max(order_id) = 1003.
  2. Тот же SQL при повторе оставляет 3 строки без добавления новых строк и дублей.
  3. После расширения условия до order_id <= 1006 загружаются ещё 3: в цели 6 строк и max(order_id) = 1006.

Это пример для указанных данных, не гарантия количества для любого источника. Существующая цель при инкрементальном запуске не пересоздаётся. Требования к SQL и проекции, ограничение на отражение удалений и алгоритм режима Общий кэш не меняются. При несоответствии схемы не игнорируйте schema drift и не удаляйте существующую цель ради повтора.

В GET /api/glarus/transforms/{id}/runs поля last_watermark и last_watermark_key хранят снимок курсора конкретного запуска. В примере значения last_watermark — 1003, 1003, 1006; поздний запуск не меняет снимки прежних запусков. У старых записей без известного курсора значения остаются null и не восстанавливаются из текущего состояния задания. last_watermark_key может быть null, если составной курсор не используется.

Этот раздел не обещает новую колонку курсора в текущем интерфейсе истории. Поле rows инкрементального source-CTAS может отражать JDBC update-count и не заменяет проверку числа строк физической цели.

Полное обновление ETL: фактическое число строк

В сборках линии 57 с исправлением при выборе Исходная БД (CTAS) и режима Полное обновление успешный запуск сообщает фактическое число строк созданной целевой таблицы. Поле rows в GET /api/glarus/transforms/{id}/runs содержит этот результат, не JDBC update-count операции CREATE. Повтор полного обновления заменяет результат и сообщает число строк нового запуска, не сумму с предыдущим.

Действительно пустая целевая таблица — успешный ноль. Ошибка выполнения или невозможность подтвердить число строк означает error и rows: null, не успешный ноль; счётчик прошлого успешного запуска не переносится в ошибочный результат. Прежние записи истории не переписываются.

Полное обновление пересоздаёт целевую таблицу. Ошибка после CTAS не гарантирует автоматического отката или сохранения прежней цели. Новых гарантий против независимых конкурентных записей это исправление не добавляет.

Этот раздел описывает API и не обещает новую колонку числа строк в текущем интерфейсе истории, который показывает статусы, ошибки и время. SQL пользователя, права, подключения, инкрементальный cursor и алгоритм материализации в общий кэш этой правкой не меняются.

Одинаковая метка времени и повторная загрузка

Для инкрементальной загрузки в Общий кэш (ClickHouse ETL) задайте колонку-курсор и уникальную ключ-колонку. Их имена должны точно совпадать с именами колонок результата SQL, например UPDATED_AT и ID.

Составной cursor сравнивает сначала метку времени, затем ключ. Новая строка с той же меткой времени догружается, если её ключ больше последнего сохранённого. Строка с равным или меньшим ключом при неизменной метке времени не считается новой. Если нет новых строк, повторный запуск не добавляет дубли и не меняет сохранённый cursor.

В сборках линии 57 с исправлением повторный запуск с неизменёнными именами, порядком и типами SQL-колонок проходит без ложной ошибки schema drift из-за физических типов ключей ClickHouse. Настоящее изменение имени, порядка или типа по-прежнему отклоняется до вставки: строки целевой таблицы и cursor сохраняются.

При такой ошибке проверьте соответствие проекции SQL целевой схеме: не игнорируйте schema drift и не удаляйте и не очищайте существующую таблицу ради повторного запуска. Исправление не требует изменения прав или DDL и не отменяет описанное выше ограничение на отражение удалений из источника.

Список ETL-заданий

На странице /data-architect/transforms список показывает по 25 ETL-заданий на странице и общее количество заданий. Используйте Назад и Далее для перехода между страницами. Выбранные поиск, фильтры и сортировка сохраняются при переходе на другую страницу.

История выполнений ETL

Нажмите История выполнений у нужного задания: история загружается только после раскрытия и появляется под строкой выбранного задания. Она показывает по 10 запусков на странице, от новых к старым. Кнопки Назад и Далее внутри истории переключают страницы запусков, не меняя страницу списка заданий.

Кэш истории и обновление

Сворачивание и повторное раскрытие используют сохранённую историю без повторной загрузки уже просмотренных страниц, в том числе после минуты ожидания. Чтобы начать новую загрузку истории, обновите страницу в браузере и снова раскройте Историю выполнений.

Отображение списка

Колонки списка адаптируются к ширине экрана: длинные названия заданий и целевых таблиц не накладываются на соседние значения. При уменьшении окна список и раскрытая история остаются частью одной страницы.

Конвейеры: граф выполнения ETL

Конвейер — это отдельный объект Data Architect, который объединяет ETL-задания и вычислительные шаги в направленный ациклический граф (DAG). ETL-задание остаётся самостоятельным объектом: удаление узла из конвейера не удаляет исходное задание и его историю.

На странице /data-architect/pipelines отображается список конвейеров. Из строки доступны запуск, история, редактирование и безопасное удаление или архивирование. Список поддерживает поиск, сортировку и постраничную навигацию; статус запуска обновляется без перезагрузки страницы.

Редактор и связи

Откройте конвейер отдельно, чтобы перейти в редактор DAG. Перетащите ETL-задание или compute-шаг из палитры на холст, настройте свойства справа и соедините узлы от порта к порту. Положение узлов сохраняется; доступны масштабирование, панорамирование, автоматическая раскладка и «Уместить на экране». Для добавления и удаления узлов и связей есть доступные клавиатурные действия.

Ручная зависимость и допустимые целочисленные branch-коды на ребре задают маршрутизацию. Автоматически найденные SQL-зависимости отмечаются отдельно. Циклы, несовместимые связи, пустые обязательные параметры и неверный branch показываются до сохранения и не допускаются сервером.

Параметры, compute и запуск

Параметры имеют тип и значение по умолчанию; в compute-шаге можно выбрать соединение и SQL с плейсхолдерами {param} и {ctx.field}. Один запуск проходит узлы в порядке зависимостей, а для fan-in ожидает все непропущенные входы. Статусы Успешно, Ошибка, Пропущено, Выполняется и Ожидает отображаются в редакторе и истории.

Расписание и история

Для конвейера можно задать расписание cron и часовой пояс. Расписание восстанавливается после перезапуска приложения; один тик запускает конвейер не более одного раза. Политика перекрывающихся запусков видна в истории. История содержит trigger, параметры и контекст, длительность, шаги, branch-коды, причины ошибок и ссылки на связанные ETL-запуски. Ошибка создаёт одно уведомление, а Пропущено само по себе аварийным уведомлением не является.

Перед удалением проверьте downstream-зависимости. Удаление конвейера сохраняет аудит и историю запусков через архивный механизм; права create/read/update/delete/run/history проверяются одинаково.

История запусков конвейера

В сборках линии 57 с этой карточкой на странице отдельного конвейера под неизменённой схемой DAG расположена отдельная карточка История запусков. В фильтрах Статус и Тип запуска можно выбрать одно или несколько значений.

Для периода доступны Всё время, Сегодня, Последние 7 дней, Последние 30 дней и Произвольный диапазон. В произвольном диапазоне задайте начало и окончание, затем отдельно примените даты. Если начало позже окончания, такой черновик не применяется: исправьте даты, чтобы применить диапазон.

Фильтрация выполняется на сервере. Счётчик Найдено N показывает общее количество совпавших запусков, а не количество строк текущей страницы. На странице не более 20 запусков; кнопки Назад и Далее переключают страницы. Любой применённый фильтр возвращает первую страницу. Сбросить всё очищает статусы, типы и период и возвращает к нефильтрованной первой странице.

Нажмите Подробнее у запуска, чтобы открыть правую боковую панель: она показывает параметры, контекст, шаги и диагностику выбранного запуска. Открытие и закрытие панели не сбрасывает фильтры, список и текущую страницу.

Если совпадений нет, отображаются пустой список и Найдено 0 — это штатное состояние, а не ошибка. Просмотр истории не запускает конвейер. Повтор запуска — отдельное действие с подтверждением. Эти 20 строк относятся только к истории конвейера: в истории отдельного ETL-задания остаются 10 запусков на странице, а в списке ETL-заданий — 25 заданий.

Таблица и сортировка истории конвейера

В сборках линии 57 с новой таблицей истории у отдельного конвейера доступны шесть колонок: Статус, Тип запуска, Начало, Завершение, Длительность и действие Подробнее. Начало и завершение отображаются в локальных дате и времени пользователя; пока запуск не завершён, Завершение и неизвестная Длительность показаны как «—».

По умолчанию выбрано Начало по убыванию — новые запуски первыми. Нажмите заголовок Начало или Длительность, чтобы выбрать сортировку; повторный клик меняет направление. Выбор другого поля и каждое переключение направления возвращают первую страницу.

Сортировка выполняется сервером по всей отфильтрованной истории до выделения страницы, не только по видимым 20 строкам. При сортировке длительности как по возрастанию, так и по убыванию запуски с неизвестной длительностью идут после всех запусков с известной длительностью, в том числе на следующих страницах.

На странице не более 20 запусков. Счётчик 1–20 из N показывает диапазон и общее число совпадений с действующими фильтрами. Следующая страница содержит следующие 20 запусков: например, 21–40 из N. На последней странице показан только остаток, а кнопка Далее недоступна. Если история содержит до 20 запусков, пустой следующей страницы нет; устаревший номер страницы исправляется на существующую.

Подробнее передаёт выбранный запуск в существующую правую боковую панель. Закрытие панели и Escape сохраняют фильтры, сортировку, страницу и контекст таблицы. Порядок выбора и восстановления панели в обновлённых сборках описан в разделе «Выбор запуска и ссылка на панель».

Просмотр истории не запускает конвейер и не повторяет выполнение. Лимит 20 относится только к истории конвейера: в истории отдельного ETL-задания по-прежнему 10 запусков на странице, а в списке ETL-заданий — 25 заданий.

Подробности и повтор запуска

В сборках линии 57 с обновлёнными подробностями запуска нажмите неинтерактивную часть строки истории или Подробнее на странице отдельного конвейера. Откроются подробности именно выбранного запуска в отдельной правой боковой панели, а не под строкой таблицы. На узком экране панель занимает весь экран. В шапке показаны номер и состояние запуска, ниже — шаги и доступные диагностические сведения.

Параметры и Контекст — отдельные JSON-блоки, которые можно сворачивать независимо друг от друга. Они показывают сохранённые данные выбранного запуска, не текущие значения по умолчанию.

Закрытие панели и Escape сохраняют фильтры, сортировку, страницу и прокрутку истории. Интерактивные элементы строки выполняют только своё действие, без случайного открытия панели кликом строки; Подробнее остаётся явным действием открытия.

Пока выбранный запуск выполняется, его подробности обновляются примерно каждые 3 секунды; после завершения обновление останавливается. Закрытие панели или выбор другого запуска прекращает опрос прежних подробностей. Это интервал обновления выбранного запуска, не гарантия времени вычисления и не обещание отключения всех запросов страницы.

У завершённого запуска нажмите Повторить запуск. Для выполняющегося запуска эта кнопка не показывается. Сначала открывается подтверждение Подтвердить повторный запуск с текстом: «Будет создан новый запуск с параметрами исходного запуска. Повтор не изменяет исходную запись.» Доступны кнопки Отмена и Подтвердить.

Отмена не создаёт запуск. Подтверждение создаёт новый отдельный запуск с копией сохранённых параметров исходного запуска: сохраняются числовые и логические типы. Берутся параметры исходного запуска, а не актуальные значения по умолчанию. Исходная запись не изменяется.

Повтор — реальное выполнение шагов конвейера: он может менять данные согласно этим шагам, поэтому не считайте его просмотром без побочных эффектов. Обычный просмотр подробностей сам запуск не создаёт и выполнение не запускает.

Выбор запуска и ссылка на панель

В сборках линии 57 с обновлённой панелью клик по неинтерактивной части строки истории или Подробнее открывает выбранный запуск справа; выбранная строка выделяется. На широком экране ширина панели — 460 пикселей, история остаётся видимой и доступной для выбора другой строки. На узком экране панель занимает весь экран. Меню приложения и остальная страница сохраняются: новое оформление относится только к панели.

Заголовок, кнопка закрытия и нижняя кнопка Повторить запуск у завершённого запуска остаются на месте; прокручивается только содержимое панели. Полные подробности, независимые блоки сохранённых параметров и контекста и подтверждение повтора описаны выше.

В адресе страницы параметр run_id хранит выбранный запуск, а параметры истории — применённые фильтры, сортировка и страница. Ниже приведён условный пример фрагмента адреса: ?run_id=<ID запуска>; это обозначение места для идентификатора, не готовая ссылка. Скопируйте полный адрес из браузера вместе с остальными параметрами истории. После перезагрузки восстанавливаются фильтры, сортировка и страница, а после успешной загрузки текущей страницы — выбранный запуск и панель.

Закрытие панели или Escape удаляет только run_id, снимает выделение и не сбрасывает фильтры, сортировку и страницу. Выбор другой строки заменяет run_id и подробности без сброса истории. Открытие, смена выбора и закрытие заменяют текущий адрес: каждое такое действие не добавляет новую запись в историю браузера.

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

Рекомендуемый порядок работы

  1. Начните с Конструктора схемы, чтобы проверить таблицы и связи.
  2. Используйте Lineage и Зависимости, чтобы понять источник показателя и влияние изменения.
  3. Просмотрите диагностику и предварительный список затронутых объектов перед заменой источника.
  4. Создайте или обновите ETL-задание, затем проверьте историю его выполнений.
  5. Объедините задания в Конвейер, проверьте связи и отрицательные сценарии, затем выполните ручной запуск.
  6. После проверки задайте cron и контролируйте результат по истории.