Referência de tabelas do sistema de jobs

Prévia

Essa tabela do sistema está em Pré-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 de tabelas do sistema.

Observação

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

Este artigo fornece uma referência sobre como usar as tabelas do sistema lakeflow para monitorar trabalhos em sua conta. Essas tabelas incluem registros de todos os workspaces em sua conta implantados na mesma região de nuvem. Para ver registros de outra região, você precisa exibir as tabelas de um workspace implantado nessa região.

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

Para obter exemplos de uso dessas tabelas para custo do trabalho e observabilidade da saúde, consulte Monitorar custos do trabalho com tabelas do sistema.

Observação

Essas tabelas não estão disponíveis na região asia-south1.

Tabelas de jobs disponíveis

Todas as tabelas do sistema relacionadas a jobs estão no esquema system.lakeflow. No momento, o esquema hospeda quatro tabelas:

  • jobs: Rastreia a criação, a exclusão e as informações básicas dos jobs.

  • job_tasks: Rastreia a criação, a exclusão e as informações básicas das tarefas de jobs.

  • job_run_timeline: Registra o início, o fim e o estado resultante das execuções de jobs.

  • job_task_run_timeline: Registra o início, o fim e o estado resultante das tarefas de jobs.

Esquema de tabela de jobs

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

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

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID da conta à qual esse job pertence.

workspace_id

string

O ID do workspace ao qual esse job pertence.

job_id

string

A ID do job. Essa chave é exclusiva apenas em um único workspace.

name

string

O nome do job fornecido pelo usuário.

description

string

A descrição do trabalho fornecida pelo usuário. Não preenchido para linhas emitidas antes do final de agosto de 2024.

creator_id

string

O ID da entidade que criou o job.

tags

string

As tags personalizadas fornecidas pelo usuário associadas a esse job.

change_time

carimbo de data/hora

A hora em que o job 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

carimbo de data/hora

A hora em que o job 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

O ID do usuário ou entidade de serviço cujas permissões são usadas para a execução do job.

Esquema da tabela de tarefas de trabalho

A tabela de tarefas do Job é uma tabela de dimensões que mudam lentamente (SCD). Quando uma linha muda, uma nova linha é emitida, substituindo logicamente a anterior.

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

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID da conta à qual esse job pertence.

workspace_id

string

O ID do workspace ao qual esse job pertence.

job_id

string

A ID do job. Essa chave é exclusiva apenas em um único workspace.

task_key

string

A key de referência para uma tarefa em um job. Essa key é exclusiva apenas em um único job.

depends_on_keys

matriz

As keys de tarefa de todas as dependências anteriores dessa tarefa.

change_time

carimbo de data/hora

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

carimbo de data/hora

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 de tabela de linha do tempo de execução de jobs

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

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

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID da conta à qual esse job pertence.

workspace_id

string

O ID do workspace ao qual esse job pertence.

job_id

string

A ID do job. Essa chave é exclusiva apenas em um único workspace.

run_id

string

O ID da execução do job.

period_start_time

carimbo de data/hora

A hora de início da execução ou do período de tempo. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC.

period_end_time

carimbo de data/hora

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 acionador que pode disparar uma execução. Para valores possíveis, consulte Valores do tipo de gatilho

run_type

string

O tipo de execução do trabalho. Para saber os 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 Job.

compute_ids

matriz

Matriz que contém os IDs de compute para a execução do trabalho pai. Use para identificar o cluster usado pelos tipos de execução SUBMIT_RUN e WORKFLOW_RUN. Para outras compute informações, consulte a tabela job_task_run_timeline. Não preenchido para linhas emitidas antes do final de agosto de 2024.

result_state

string

O resultado da execução do trabalho. Para valores possíveis, consulte Valores do estado do resultado.

termination_code

string

O código de encerramento da execução do trabalho. Para valores possíveis, consulte Valores do código de terminação. 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 de 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 terminação

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 de tabela de linha do tempo de execução de tarefas de jobs

A tabela de cronograma de execução da tarefa de trabalho é imutável e completa no momento em que é produzida.

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

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID da conta à qual esse job pertence.

workspace_id

string

O ID do workspace ao qual esse job pertence.

job_id

string

A ID do job. Essa chave é exclusiva apenas em um único workspace.

run_id

string

A ID da execução da tarefa.

job_run_id

string

O ID da execução do trabalho. Não preenchido para linhas emitidas antes do final de agosto de 2024.

parent_run_id

string

O ID da execução principal. Não preenchido para linhas emitidas antes do final de agosto de 2024.

period_start_time

carimbo de data/hora

A hora de início da tarefa ou do período de tempo. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC.

period_end_time

carimbo de data/hora

A hora de término da tarefa ou do período de tempo. As informações de fuso horário são registradas no final do valor com +00:00 representando UTC.

task_key

string

A key de referência para uma tarefa em um job. Essa key é exclusiva apenas em um único job.

compute_ids

matriz

Matriz que contém os IDs de compute usados pela tarefa do trabalho.

result_state

string

O resultado da execução da tarefa do job.

termination_code

string

O código de encerramento 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

Exemplos de consultas

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

Obter a versão mais recente dos jobs

Como as tabelas de jobs e job_tasks são tabelas de dimensões que mudam lentamente (SCD), um novo registro é criado sempre que uma alteração é feita. Para obter a versão mais recente de um job, você pode ordenar 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 jobs por workspace

Essa consulta obtém a contagem diária de jobs por workspace nos últimos sete 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 de jobs por workspace

Essa consulta retorna a contagem diária de jobs por workspace nos últimos sete dias, distribuída pelo resultado da execução do job. A consulta remove todos os registros em que os jobs estão em 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 jobs de maior duração

Essa consulta retorna o tempo médio das execuções de jobs, medido em segundos. Os registros são organizados por job. Uma coluna com os percentis 90 e 95 superiores mostra a duração média das execuções mais longas do job.

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

Job Tempo de execução do trabalho executado via runSubmit (ou seja, Airflow)

Essa consulta fornece um tempo de execução histórico para um trabalho específico com base no parâmetro run_name. Para que a consulta funcione, você deve definir o run_name.

O senhor também pode editar o período de tempo 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 job

Essa consulta fornece um tempo de execução histórico de um job específico. Para que a consulta funcione, é necessário definir um workspace_id e job_id.

O senhor também pode editar o período de tempo 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)

Jobs em execução em compute para múltiplas finalidades

Essa consulta se une à tabela do sistema compute.clusters para retornar jobs recentes que estejam em execução em compute para múltiplas finalidades em vez de compute de jobs.

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 job repetidas

Essa consulta coleta uma lista de execuções de trabalho repetidas com o número de novas tentativas para 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;