Поделиться через


Справочник по системным таблицам заданий

Внимание

Эта системная таблица находится в общедоступной предварительной версии. Чтобы получить доступ к таблице, в каталоге должна быть включена 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 :

Значения состояния результатов

Возможные значения для столбца 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.

Получение последней версии заданий

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;