Referência da tabela do sistema de trabalhos

Visualização

Este recurso está em visualização pública.

Este artigo fornece uma referência de como usar as tabelas do sistema workflow para monitorar o trabalho em seu site account. Essas tabelas incluem registros de todos os espaços de trabalho no seu account implantado dentro da mesma região cloud. Para ver os registros de outras regiões, é preciso acessar view as tabelas de um workspace implantado nessa região.

system.workflow deve ser ativado por um administrador do account. O senhor pode ativá-lo usando a API SystemSchemas.

Para obter exemplos sobre o uso dessas tabelas para Job cost and health observability, consulte Monitorar Job costs with system tables.

Disponível Job tables

Todas as tabelas do sistema relacionadas ao trabalho estão no esquema system.workflow. Atualmente, o esquema hospeda quatro tabelas:

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

  • job_tasks: Rastreia a criação, a exclusão e as informações básicas do site Job tarefa.

  • job_run_timeline: Registra o início, o fim e o estado resultante da execução do Job.

  • job_task_run_timeline: Registra o início, o fim e o estado resultante da Job tarefa.

Job esquema de tabela

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

A tabela usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID do site account ao qual este Job pertence.

workspace_id

string

O ID do site workspace ao qual este Job pertence.

job_id

string

O ID do site Job. Esse key é exclusivo apenas em um único workspace.

name

string

O nome fornecido pelo usuário do site Job.

creator_id

string

O ID do diretor que criou o site Job.

tags

string

O tags personalizado fornecido pelo usuário associado a esse Job.

change_time

timestamp

A hora em que o site Job foi modificado pela última vez.

delete_time

timestamp

A hora em que o Job foi excluído pelo usuário.

run_as

string

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

Job esquema da tabela de tarefas

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

A tabela usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID do site account ao qual este Job pertence.

workspace_id

string

O ID do site workspace ao qual este Job pertence.

job_id

string

O ID do site Job. Esse key é exclusivo apenas em um único workspace.

task_key

string

A referência key para uma tarefa em um Job. Esse key é exclusivo apenas em um único Job.

depends_on_keys

matriz

A chave da tarefa de todas as dependências upstream dessa tarefa.

change_time

timestamp

A hora em que a tarefa foi modificada pela última vez.

delete_time

timestamp

A hora em que uma tarefa foi excluída pelo usuário.

Job esquema de tabela da linha do tempo de execução

A tabela job_run_timeline é imutável e completa no momento em que é produzida.

A tabela usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID do site account ao qual este Job pertence.

workspace_id

string

O ID do site workspace ao qual este Job pertence.

job_id

string

O ID do site Job. Esse key é exclusivo apenas em um único workspace.

run_id

string

O ID da execução do Job.

period_start_time

timestamp

A hora de início da execução ou do período de tempo.

period_end_time

timestamp

A hora de término da execução ou do período de tempo.

trigger_type

string

O tipo de acionador que pode disparar uma execução.

result_state

string

O resultado da execução do Job. Veja os valores possíveis abaixo desta tabela.

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 trigger_type são:

  • CONTINUOUS

  • CRON

  • FILE_ARRIVAL

  • ONETIME

  • ONETIME_RETRY

Job tarefa execução esquema de tabela de linha do tempo

A tabela job_task_run_timeline é imutável e completa no momento em que é produzida.

A tabela usa o seguinte esquema:

Nome da coluna

Tipo de dados

Descrição

account_id

string

O ID do site account ao qual este Job pertence.

workspace_id

string

O ID do site workspace ao qual este Job pertence.

job_id

string

O ID do site Job. Esse key é exclusivo apenas em um único workspace.

run_id

string

O ID da execução da tarefa.

period_start_time

timestamp

O tempo de início para a tarefa ou para o período de tempo.

period_end_time

timestamp

A hora de término da tarefa ou do período de tempo.

task_key

string

A referência key para uma tarefa em um Job. Esse key é exclusivo apenas em um único Job.

compute_ids

matriz

Matriz que contém os IDs do armazém nãoserverless Job compute e nãoserverless SQL usados pela tarefa Job.

result_state

string

O resultado da execução da tarefa Job.

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

  • SUCCEEDED

  • FAILED

  • SKIPPED

  • CANCELLED

  • TIMED_OUT

  • ERROR

  • BLOCKED

Exemplo de consultas

Esta seção inclui exemplos de consultas que podem ser usadas para obter o máximo das tabelas de fluxo de trabalho.

Obter a versão mais recente do Job

Como as tabelas 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, o senhor pode fazer o pedido pela coluna change_time.

SELECT
  *,
  ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
  system.workflow.jobs QUALIFY rn=1

Contagem diária de Job por workspace

Essa consulta obtém a contagem diária de Job por workspace nos últimos 7 dias:

SELECT
  workspace_id,
  COUNT(DISTINCT run_id) as job_count,
  to_date(period_start_time) as date
FROM system.workflow.job_run_timeline
WHERE
  period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL

Distribuição diária do status Job por workspace

Essa consulta retorna a contagem diária de Job por workspace nos últimos 7 dias, distribuída pelo resultado da execução de Job. A consulta remove todos os registros em que o trabalho está 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.workflow.job_run_timeline
WHERE
  period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
  AND result_state IS NOT NULL
GROUP BY ALL

Visão geral do trabalho mais antigo

Essa consulta retorna o tempo médio de execução do Job, medido em segundos. Os registros são organizados por Job. As colunas dos percentis 90 e 95 mostram as durações médias das execuções mais longas do site 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.workflow.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.workflow.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 execução análise

Essa consulta fornece um histórico de tempo de execução para um site específico Job. Para que a consulta funcione, o senhor deve definir um workspace_id e um job_id.

O senhor também pode editar o período de tempo para análise atualizando a quantidade 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.workflow.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.workflow.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 executados em computação para todos os fins

Essa consulta se junta à tabela do sistema compute.clusters para retornar o trabalho recente que está sendo executado no site compute para todos os fins, em vez do trabalho compute.

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"
  QUALIFY rn=1
),
job_tasks_exploded AS (
  SELECT
    workspace_id,
    job_id,
    EXPLODE(compute_ids) as cluster_id
  FROM system.workflow.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;

Retried Job execução

Essa consulta coleta uma lista de tentativas de execução do Job com o número de tentativas para cada execução.

with repaired_runs as (
  SELECT
    workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
  FROM system.workflow.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;