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.
Observação
Essas tabelas não estão disponíveis na região asia-south1
.
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 |
---|---|---|
|
string |
O ID do site account ao qual este Job pertence. |
|
string |
O ID do site workspace ao qual este Job pertence. |
|
string |
O ID do site Job. Esse key é exclusivo apenas em um único workspace. |
|
string |
O nome fornecido pelo usuário do site Job. |
|
string |
O ID do diretor que criou o site Job. |
|
string |
O tags personalizado fornecido pelo usuário associado a esse Job. |
|
timestamp |
A hora em que o site Job foi modificado pela última vez. |
|
timestamp |
A hora em que o Job foi excluído pelo usuário. |
|
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 |
---|---|---|
|
string |
O ID do site account ao qual este Job pertence. |
|
string |
O ID do site workspace ao qual este Job pertence. |
|
string |
O ID do site Job. Esse key é exclusivo apenas em um único workspace. |
|
string |
A referência key para uma tarefa em um Job. Esse key é exclusivo apenas em um único Job. |
|
matriz |
A chave da tarefa de todas as dependências upstream dessa tarefa. |
|
timestamp |
A hora em que a tarefa foi modificada pela última vez. |
|
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 |
---|---|---|
|
string |
O ID do site account ao qual este Job pertence. |
|
string |
O ID do site workspace ao qual este Job pertence. |
|
string |
O ID do site Job. Esse key é exclusivo apenas em um único workspace. |
|
string |
O ID da execução do Job. |
|
timestamp |
A hora de início da execução ou do período de tempo. |
|
timestamp |
A hora de término da execução ou do período de tempo. |
|
string |
O tipo de acionador que pode disparar uma execução. |
|
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 |
---|---|---|
|
string |
O ID do site account ao qual este Job pertence. |
|
string |
O ID do site workspace ao qual este Job pertence. |
|
string |
O ID do site Job. Esse key é exclusivo apenas em um único workspace. |
|
string |
O ID da execução da tarefa. |
|
timestamp |
O tempo de início para a tarefa ou para o período de tempo. |
|
timestamp |
A hora de término da tarefa ou do período de tempo. |
|
string |
A referência key para uma tarefa em um Job. Esse key é exclusivo apenas em um único Job. |
|
matriz |
Matriz que contém os IDs do armazém nãoserverless Job compute e nãoserverless SQL usados pela tarefa Job. |
|
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" OR cluster_source="API"
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;