Compartilhar via


Referência da tabela do sistema de trabalhos

Importante

Esta tabela do sistema está em Visualização Pública. Para acessar a tabela, o esquema deve estar habilitado em seu catálogo system. Para obter mais informações, consulte Habilitar esquemas da tabela do sistema.

Observação

O esquema lakeflow antigamente era conhecido como workflow. O conteúdo dos dois esquemas é idêntico. Para tornar o esquema do lakeflow visível, você deve habilitá-lo separadamente.

Este artigo fornece uma referência de como usar as tabelas do sistema lakeflow para monitorar trabalhos na sua conta. Essas tabelas incluem registros de todos os espaços de trabalho na sua conta implantados na mesma região de nuvem. Para ver registros de outra região, é necessário exibir as tabelas de um espaço de trabalho implantado nessa região.

O system.lakeflow deve ser habilitado por um administrador de conta. Você pode habilitá-lo usando a API SystemSchemas.

Para obter exemplos de como usar essas tabelas para a observabilidade da integridade e do custo do trabalho, consulte Monitorar custos de trabalho com tabelas do sistema.

Tabelas de trabalho disponíveis

Todas as tabelas de sistema relacionadas a trabalhos residem no esquema system.lakeflow. Atualmente, o esquema hospeda quatro tabelas:

  • jobs: controla a criação, a exclusão e as informações básicas dos trabalhos.
  • job_tasks: controla a criação, a exclusão e as informações básicas das tarefas de trabalho.
  • job_run_timeline: registra o estado inicial, final e resultante das execuções de trabalho.
  • job_task_run_timeline: registra o estado inicial, final e resultante das tarefas de trabalho.

Esquema de tabela de trabalho

A tabela de jobs é uma tabela de dimensão de alteração lenta. Quando uma linha é alterada, uma nova linha é emitida, substituindo logicamente a anterior.

Caminho da tabela: Esta tabela do sistema está localizada em system.lakeflow.jobs.

Nome da coluna Tipo de dados Descrição
account_id string A ID da conta à qual este trabalho pertence.
workspace_id string A ID do espaço de trabalho ao qual este trabalho pertence.
job_id string A ID do trabalho. Essa chave só é exclusiva em um único workspace.
name string O nome fornecido pelo usuário do trabalho.
description string A descrição fornecida pelo usuário do trabalho. Não preenchido para linhas emitidas antes do final de agosto de 2024.
creator_id string A ID da entidade de segurança que criou o trabalho.
tags string As marcas personalizadas fornecidas pelo usuário associadas a este trabalho.
change_time timestamp A hora em que o trabalho foi modificado pela última vez. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
delete_time timestamp A hora em que o trabalho foi excluído pelo usuário. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
run_as string A ID do usuário ou da entidade de serviço cujas permissões são usadas para a execução do trabalho.

Esquema da tabela da tarefa de trabalho

A tabela de tarefas de trabalho é uma tabela de dimensões que muda lentamente. Quando uma linha é alterada, uma nova linha é emitida, substituindo logicamente a anterior.

Caminho da tabela: Esta tabela do sistema está localizada em system.lakeflow.job_tasks.

Nome da coluna Tipo de dados Descrição
account_id string A ID da conta à qual este trabalho pertence.
workspace_id string A ID do espaço de trabalho ao qual este trabalho pertence.
job_id string A ID do trabalho. Essa chave só é exclusiva em um único workspace.
task_key string A chave de referência para uma tarefa em um trabalho. Essa chave só é exclusiva em um único trabalho.
depends_on_keys matriz As chaves de tarefa de todas as dependências upstream dessa tarefa.
change_time timestamp A hora em que a tarefa foi modificada pela última vez. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
delete_time timestamp A hora em que uma tarefa foi excluída pelo usuário. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.

Esquema da tabela da linha do tempo de execução do trabalho

A tabela de linha do tempo de execução do trabalho é imutável e completa no momento em que é produzida.

Caminho da tabela: Esta tabela do sistema está localizada em system.lakeflow.job_run_timeline.

Nome da coluna Tipo de dados Descrição
account_id string A ID da conta à qual este trabalho pertence.
workspace_id string A ID do espaço de trabalho ao qual este trabalho pertence.
job_id string A ID do trabalho. Essa chave só é exclusiva em um único workspace.
run_id string A ID da execução do trabalho.
period_start_time timestamp A hora de início da execução ou do período. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
period_end_time timestamp A hora de término da execução ou do período. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
trigger_type string O tipo de gatilho que pode disparar uma execução. Para obter valores possíveis, consulte Valores do tipo de gatilho
run_type string O tipo de execução do trabalho. Para obter valores possíveis, consulte Valores do tipo de execução.
run_name string O nome da execução fornecido pelo usuário associado a essa execução do trabalho.
compute_ids matriz Matriz que contém as IDs de computação para a execução do trabalho pai. Use para identificar o cluster usado por SUBMIT_RUN e WORKFLOW_RUN tipos de execução. Para obter outras informações de computação, consulte a job_task_run_timeline tabela. Não preenchido para linhas emitidas antes do final de agosto de 2024.
result_state string O resultado da execução do trabalho. Para obter os valores possíveis, consulte Valores de estado do resultado.
termination_code string O código de término da execução do trabalho. Para obter os valores possíveis, consulte Valores do código de término. Não preenchido para linhas emitidas antes do final de agosto de 2024.
job_parameters map Os parâmetros de nível de trabalho usados na execução do trabalho. Não preenchido para linhas emitidas antes do final de agosto de 2024.

Valores do tipo de gatilho

Os valores possíveis para a coluna trigger_type são:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

Valores do tipo de execução

Os valores possíveis para a coluna run_type são:

Valores do estado do resultado

Os valores possíveis para a coluna result_state são:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

Valores do código de término

Os valores possíveis para a coluna termination_code são:

  • 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

Esquema da tabela da linha do tempo de execução da tarefa de trabalho

A tabela de linha do tempo de execução de tarefa de trabalho é imutável e concluída no momento em que é produzida.

Caminho da tabela: Esta tabela do sistema está localizada em system.lakeflow.job_task_run_timeline.

Nome da coluna Tipo de dados Descrição
account_id string A ID da conta à qual este trabalho pertence.
workspace_id string A ID do espaço de trabalho ao qual este trabalho pertence.
job_id string A ID do trabalho. Essa chave só é exclusiva em um único workspace.
run_id string A ID da execução da tarefa.
job_run_id string A ID da execução do trabalho. Não preenchido para linhas emitidas antes do final de agosto de 2024.
parent_run_id string A ID da execução pai. Não preenchido para linhas emitidas antes do final de agosto de 2024.
period_start_time timestamp A hora de início da tarefa ou do período. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
period_end_time timestamp A hora de término da tarefa ou do período. As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC.
task_key string A chave de referência para uma tarefa em um trabalho. Essa chave só é exclusiva em um único trabalho.
compute_ids matriz Matriz que contém as IDs de computação usadas pela tarefa de trabalho.
result_state string O resultado da execução da tarefa de trabalho.
termination_code string O código de término da execução da tarefa. Veja os valores possíveis abaixo desta tabela. Não preenchido para linhas emitidas antes do final de agosto de 2024.

Os valores possíveis para a coluna result_state são:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

Os valores possíveis para a coluna termination_code são:

  • 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

Consultas de exemplo

Esta seção inclui consultas de exemplo que você pode usar para aproveitar ao máximo as tabelas do lakeflow.

Obter a versão mais recente dos trabalhos

Como as tabelas jobs e job_tasks estão mudando lentamente as tabelas de dimensão, um novo registro é criado sempre que uma alteração é feita. Para obter a versão mais recente de um trabalho, você pode solicitar pela coluna 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

Contagem diária de trabalhos por espaço de trabalho

Essa consulta obtém a contagem diária de trabalhos por espaço de trabalho nos últimos 7 dias:

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

Distribuição diária de status do trabalho por espaço de trabalho

Essa consulta retorna a contagem diária de trabalhos por espaço de trabalho dos últimos 7 dias, distribuída pelo resultado da execução do trabalho. A consulta remove todos os registros em que os trabalhos estão em um estado pendente ou em execução.

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

Visão geral dos trabalhos de execução mais longa

Essa consulta retorna o tempo médio de execuções do trabalho, medido em segundos. Os registros são organizados por trabalho. Uma coluna superior de 90 e 95 percentil mostra os comprimentos médios das execuções mais longas do trabalho.

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

Tempo de execução do trabalho para trabalhos executados por meio do runSubmit (por exemplo, Airflow)

Essa consulta fornece um runtime histórico para um trabalho específico com base no parâmetro run_name. Para que a consulta funcione, defina o run_name.

Você também pode editar o período para análise atualizando o número de dias na seção 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

Análise de execução do trabalho

Essa consulta fornece um runtime histórico para um trabalho específico. Para que a consulta funcione, você deve definir um workspace_id e job_id.

Você também pode editar o período para análise atualizando o número de dias na seção 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)

Trabalhos em execução na Computação para Todas as Finalidades

Essa consulta une-se à tabela do sistema compute.clusters para retornar trabalhos recentes que estão em execução na Computação para Todas as Finalidades em vez de Computação de Trabalhos.

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;

Execuções de trabalho repetidas

Essa consulta coleta uma lista de execuções de trabalho repetidas com o número de repetições de cada execução.

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;