Справочник по системным таблицам заданий
Внимание
Эта системная таблица находится в общедоступной предварительной версии. Чтобы получить доступ к таблице, в каталоге должна быть включена system
схема. Дополнительные сведения см. в разделе "Включение схем системной таблицы".
Примечание.
Схема lakeflow
была ранее известна как workflow
. Содержимое обеих схем идентично. Чтобы сделать схему видимой lakeflow
, необходимо включить ее отдельно.
В этой статье содержится справочник по использованию lakeflow
системных таблиц для отслеживания заданий в учетной записи. Эти таблицы включают записи из всех рабочих областей в учетной записи, развернутой в одном облачном регионе. Чтобы просмотреть записи из другого региона, необходимо просмотреть таблицы из рабочей области, развернутой в этом регионе.
system.lakeflow
должен быть включен администратором учетной записи. Его можно включить с помощью API SystemSchemas.
Примеры использования этих таблиц для отслеживания затрат на работу и работоспособности см. в статье "Мониторинг затрат на задания" с помощью системных таблиц.
Доступные таблицы заданий
Все системные таблицы, связанные с заданиями, живут в схеме system.lakeflow
. В настоящее время схема содержит четыре таблицы:
jobs
: отслеживает создание, удаление и основные сведения о заданиях.job_tasks
: отслеживает создание, удаление и основные сведения о задачах задания.job_run_timeline
: записывает начальное, конечное и итоговое состояние выполнения задания.job_task_run_timeline
: записывает начальное, конечное и итоговое состояние задач задания.
Схема таблицы заданий
Таблица jobs
— это медленно изменяющаяся таблица измерений. При изменении строки создается новая строка, логически заменяющая предыдущую.
Путь к таблице: эта системная таблица расположена по адресу system.lakeflow.jobs
.
Имя столбца | Тип данных | Description |
---|---|---|
account_id |
строка | Идентификатор учетной записи, к которой принадлежит это задание. |
workspace_id |
строка | Идентификатор рабочей области, к которой принадлежит это задание. |
job_id |
строка | ИД задания. Этот ключ является уникальным только в пределах одной рабочей области. |
name |
строка | Указанное пользователем имя задания. |
description |
строка | Предоставленное пользователем описание задания. Не заполнены для строк, созданных до конца августа 2024 года. |
creator_id |
строка | Идентификатор участника, создавшего задание. |
tags |
строка | Предоставленные пользователем пользовательские теги, связанные с этим заданием. |
change_time |
TIMESTAMP | Время последнего изменения задания. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
delete_time |
TIMESTAMP | Время удаления задания пользователем. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
run_as |
строка | Идентификатор пользователя или субъекта-службы, разрешения которых используются для выполнения задания. |
Схема таблицы задач задания
Таблица задач задания — это медленно изменяющаяся таблица измерений. При изменении строки создается новая строка, логически заменяющая предыдущую.
Путь к таблице: эта системная таблица расположена по адресу system.lakeflow.job_tasks
.
Имя столбца | Тип данных | Description |
---|---|---|
account_id |
строка | Идентификатор учетной записи, к которой принадлежит это задание. |
workspace_id |
строка | Идентификатор рабочей области, к которой принадлежит это задание. |
job_id |
строка | ИД задания. Этот ключ является уникальным только в пределах одной рабочей области. |
task_key |
строка | Ключ ссылки для задачи в задании. Этот ключ является уникальным только в рамках одного задания. |
depends_on_keys |
array | Ключи задач всех вышестоящих зависимостей этой задачи. |
change_time |
TIMESTAMP | Время последнего изменения задачи. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
delete_time |
TIMESTAMP | Время удаления задачи пользователем. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
Схема таблицы временной шкалы запуска задания
Таблица временной шкалы запуска задания неизменяема и завершена во время его производства.
Путь к таблице: эта системная таблица расположена по адресу system.lakeflow.job_run_timeline
.
Имя столбца | Тип данных | Description |
---|---|---|
account_id |
строка | Идентификатор учетной записи, к которой принадлежит это задание. |
workspace_id |
строка | Идентификатор рабочей области, к которой принадлежит это задание. |
job_id |
строка | ИД задания. Этот ключ является уникальным только в пределах одной рабочей области. |
run_id |
строка | Идентификатор запуска задания. |
period_start_time |
TIMESTAMP | Время начала выполнения или периода времени. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
period_end_time |
TIMESTAMP | Время окончания выполнения или периода времени. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
trigger_type |
строка | Тип триггера, который может вызвать запуск. Возможные значения см. в разделе "Значения типа триггера" |
run_type |
строка | Тип выполнения задания. Возможные значения см. в разделе "Выполнение значений типов". |
run_name |
строка | Указанное пользователем имя запуска, ассошиированное с этим заданием. |
compute_ids |
array | Массив, содержащий идентификаторы вычислений для родительского задания. Используется для идентификации кластера, используемого типами SUBMIT_RUN WORKFLOW_RUN и запусками. Сведения о других вычислительных ресурсах см. в job_task_run_timeline таблице. Не заполнены для строк, созданных до конца августа 2024 года. |
result_state |
строка | Результат выполнения задания. Возможные значения см. в разделе "Значения состояния результата". |
termination_code |
строка | Код завершения выполнения задания. Возможные значения см. в разделе "Значения кода завершения". Не заполнены для строк, созданных до конца августа 2024 года. |
job_parameters |
map | Параметры уровня задания, используемые в выполнении задания. Не заполнены для строк, созданных до конца августа 2024 года. |
Значения типа триггера
Возможные значения для столбца trigger_type
:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Значения типа выполнения
Возможные значения для столбца run_type
:
JOB_RUN
SUBMIT_RUN
: однократное выполнение, созданное с помощью POST /api/2.1/jobs/run/submit.WORKFLOW_RUN
: выполнение задания, инициированное из рабочего процесса записной книжки.
Значения состояния результатов
Возможные значения для столбца result_state
:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Значения кода завершения
Возможные значения для столбца termination_code
:
SUCCESS
CANCELLED
SKIPPED
DRIVER_ERROR
CLUSTER_ERROR
REPOSITORY_CHECKOUT_FAILED
INVALID_CLUSTER_REQUEST
WORKSPACE_RUN_LIMIT_EXCEEDED
FEATURE_DISABLED
CLUSTER_REQUEST_LIMIT_EXCEEDED
STORAGE_ACCESS_ERROR
RUN_EXECUTION_ERROR
UNAUTHORIZED_ERROR
LIBRARY_INSTALLATION_ERROR
MAX_CONCURRENT_RUNS_EXCEEDED
MAX_SPARK_CONTEXTS_EXCEEDED
RESOURCE_NOT_FOUND
INVALID_RUN_CONFIGURATION
CLOUD_FAILURE
MAX_JOB_QUEUE_SIZE_EXCEEDED
Схема таблицы временной шкалы выполнения задачи задания
Таблица временной шкалы выполнения задачи задания неизменяема и завершена во время его производства.
Путь к таблице: эта системная таблица расположена по адресу system.lakeflow.job_task_run_timeline
.
Имя столбца | Тип данных | Description |
---|---|---|
account_id |
строка | Идентификатор учетной записи, к которой принадлежит это задание. |
workspace_id |
строка | Идентификатор рабочей области, к которой принадлежит это задание. |
job_id |
строка | ИД задания. Этот ключ является уникальным только в пределах одной рабочей области. |
run_id |
строка | Идентификатор выполнения задачи. |
job_run_id |
строка | Идентификатор запуска задания. Не заполнены для строк, созданных до конца августа 2024 года. |
parent_run_id |
строка | Идентификатор родительского запуска. Не заполнены для строк, созданных до конца августа 2024 года. |
period_start_time |
TIMESTAMP | Время начала задачи или периода времени. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
period_end_time |
TIMESTAMP | Время окончания задачи или периода времени. Сведения о часовом поясе записываются в конце значения с +00:00 представлением UTC. |
task_key |
строка | Ключ ссылки для задачи в задании. Этот ключ является уникальным только в рамках одного задания. |
compute_ids |
array | Массив, содержащий идентификаторы вычислительных ресурсов, используемых задачей задания. |
result_state |
строка | Результат выполнения задачи задания. |
termination_code |
строка | Код завершения выполнения задачи. См. возможные значения ниже этой таблицы. Не заполнены для строк, созданных до конца августа 2024 года. |
Возможные значения для столбца result_state
:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Возможные значения для столбца termination_code
:
SUCCESS
CANCELLED
SKIPPED
DRIVER_ERROR
CLUSTER_ERROR
REPOSITORY_CHECKOUT_FAILED
INVALID_CLUSTER_REQUEST
WORKSPACE_RUN_LIMIT_EXCEEDED
FEATURE_DISABLED
CLUSTER_REQUEST_LIMIT_EXCEEDED
STORAGE_ACCESS_ERROR
RUN_EXECUTION_ERROR
UNAUTHORIZED_ERROR
LIBRARY_INSTALLATION_ERROR
MAX_CONCURRENT_RUNS_EXCEEDED
MAX_SPARK_CONTEXTS_EXCEEDED
RESOURCE_NOT_FOUND
INVALID_RUN_CONFIGURATION
CLOUD_FAILURE
MAX_JOB_QUEUE_SIZE_EXCEEDED
Примеры запросов
В этом разделе содержатся примеры запросов, которые можно использовать для получения максимальной части таблиц lakeflow.
- Получение последней версии заданий
- Число ежедневных заданий по рабочей области
- Ежедневное распределение состояния задания по рабочей области
- Обзор самых длительных заданий
- Время выполнения задания для заданий, выполняемых с помощью runSubmit (т. е. Airflow)
- Анализ выполнения задания
- Задания, выполняемые во всех вычислительных ресурсах
- Повторные запуски заданий
Получение последней версии заданий
jobs
job_tasks
Так как таблицы и таблицы медленно меняют таблицы измерений, создается новая запись при каждом изменении. Чтобы получить последнюю версию задания, можно заказать по столбцу change_time
.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Число ежедневных заданий по рабочей области
Этот запрос получает количество ежедневных заданий по рабочей области за последние 7 дней:
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
Ежедневное распределение состояния задания по рабочей области
Этот запрос возвращает количество ежедневных заданий по рабочей области за последние 7 дней, распределенных по результатам выполнения задания. Запрос удаляет все записи, в которых задания находятся в состоянии ожидания или выполнения.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
Обзор самых длительных заданий
Этот запрос возвращает среднее время выполнения задания, измеряемое в секундах. Записи организованы по заданию. Верхний столбец 90 и 95 процентилей показывает среднюю длину самых длинных запусков задания.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
),
most_recent_jobs as (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
)
SELECT
t1.workspace_id,
t1.job_id,
first(t2.name, TRUE) as name,
COUNT(DISTINCT t1.run_id) as runs,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
job_run_duration t1
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
Время выполнения задания для заданий, выполняемых с помощью runSubmit (т. е. Airflow)
Этот запрос предоставляет историческую среду выполнения для определенного задания на run_name
основе параметра. Чтобы запрос работал, необходимо задать run_name
параметр .
Вы также можете изменить продолжительность анализа, обновив количество дней в INTERVAL 60 DAYS
разделе.
SELECT
workspace_id,
run_id,
SUM(period_end_time - period_start_time) as run_time
FROM system.lakeflow.job_run_timeline
WHERE
run_type="SUBMIT_RUN"
AND run_name={run_name}
AND period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
GROUP BY ALL
Анализ выполнения задания
Этот запрос предоставляет историческую среду выполнения для определенного задания. Для работы запроса необходимо задать workspace_id
и job_id
.
Вы также можете изменить продолжительность анализа, обновив количество дней в INTERVAL 60 DAYS
разделе.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
min(period_start_time) as run_start,
max(period_start_time) as run_end,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration,
FIRST(result_state, TRUE) as result_state
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
AND workspace_id={workspace_id}
AND job_id={job_id}
GROUP BY ALL
ORDER BY run_start DESC
),
most_recent_jobs as (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
)
SELECT
t1.workspace_id,
t1.job_id,
t2.name,
t1.run_id,
t1.run_start,
t1.run_end,
t1.duration,
t1.result_state
FROM job_run_duration t1
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
Задания, выполняемые во всех вычислительных ресурсах
Этот запрос присоединяется к системной compute.clusters
таблице для возврата последних заданий, выполняющихся во всех целевых вычислениях вместо вычислений заданий.
with clusters AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters
WHERE cluster_source="UI" OR cluster_source="API"
QUALIFY rn=1
),
job_tasks_exploded AS (
SELECT
workspace_id,
job_id,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE period_start_time >= CURRENT_DATE() - INTERVAL 30 DAY
),
all_purpose_cluster_jobs AS (
SELECT
t1.*,
t2.cluster_name,
t2.owned_by,
t2.dbr_version
FROM job_tasks_exploded t1
INNER JOIN clusters t2 USING (workspace_id, cluster_id)
)
SELECT * FROM all_purpose_cluster_jobs LIMIT 10;
Повторные запуски заданий
Этот запрос собирает список повторных попыток для каждого запуска.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.lakeflow.job_run_timeline
WHERE result_state IS NOT NULL
GROUP BY ALL
HAVING retries_count > 0
)
SELECT
*
FROM repaired_runs
ORDER BY retries_count DESC
LIMIT 10;