Referência da tabela do sistema de trabalhos
Importante
Esta funcionalidade está em Pré-visualização Pública.
Este artigo fornece uma referência de como usar as workflow
tabelas do sistema para monitorar trabalhos em sua conta. Essas tabelas incluem registros de todos os espaços de trabalho em sua conta implantados na mesma região de nuvem. Para ver registros de outras regiões, você precisa exibir as tabelas de um espaço de trabalho implantado nessa região.
system.workflow
deve ser ativado por um administrador de conta. Você pode habilitá-lo usando a API SystemSchemas.
Para obter exemplos sobre como usar essas tabelas para custo de trabalho e observabilidade de integridade, consulte Monitorar custos de trabalho com tabelas do sistema.
Tabelas de trabalho disponíveis
Todas as tabelas do sistema relacionadas a trabalhos vivem no system.workflow
esquema. Atualmente, o esquema hospeda quatro tabelas:
jobs
: Rastreia a criação, exclusão e informações básicas de trabalhos.job_tasks
: Rastreia a criação, exclusão e informações básicas de tarefas de trabalho.job_run_timeline
: Registra o início, o fim e o estado resultante das execuções de trabalho.job_task_run_timeline
: Registra o início, o fim e o estado resultante das tarefas de trabalho.
Esquema da tabela de trabalho
A jobs
tabela é uma tabela de dimensões que muda lentamente. Quando uma linha muda, uma nova linha é emitida, substituindo logicamente a anterior.
A tabela usa o seguinte esquema:
Nome da coluna | Tipo de dados | Description |
---|---|---|
account_id |
string | O ID da conta a que 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 espaço de trabalho. |
name |
string | O nome do trabalho fornecido pelo usuário. |
creator_id |
string | A ID do principal que criou o trabalho. |
tags |
string | As tags personalizadas fornecidas pelo usuário associadas a este trabalho. |
change_time |
carimbo de data/hora | A hora em que o trabalho foi modificado pela última vez. |
delete_time |
carimbo de data/hora | A hora em que o trabalho foi excluído pelo usuário. |
run_as |
string | A ID do usuário ou entidade de serviço cujas permissões são usadas para a execução do trabalho. |
Esquema da tabela de tarefas de trabalho
A job_tasks
tabela é uma tabela de dimensões que muda lentamente. Quando uma linha muda, uma nova linha é emitida, substituindo logicamente a anterior.
A tabela usa o seguinte esquema:
Nome da coluna | Tipo de dados | Description |
---|---|---|
account_id |
string | O ID da conta a que 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 espaço de trabalho. |
task_key |
string | A chave de referência para uma tarefa em um trabalho. Essa chave só é única dentro de um único trabalho. |
depends_on_keys |
matriz | As chaves de tarefa de todas as dependências upstream desta tarefa. |
change_time |
carimbo de data/hora | A hora em que a tarefa foi modificada pela última vez. |
delete_time |
carimbo de data/hora | A hora em que uma tarefa foi excluída pelo usuário. |
Esquema da tabela cronológica de execução do trabalho
A job_run_timeline
tabela é imutável e completa no momento em que é produzida.
A tabela usa o seguinte esquema:
Nome da coluna | Tipo de dados | Description |
---|---|---|
account_id |
string | O ID da conta a que 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 espaço de trabalho. |
run_id |
string | A ID do trabalho executado. |
period_start_time |
carimbo de data/hora | A hora de início para a execução ou para o período de tempo. |
period_end_time |
carimbo de data/hora | A hora de término para a execução ou para o período de tempo. |
trigger_type |
string | O tipo de gatilho que pode disparar uma corrida. |
result_state |
string | O resultado da execução do trabalho. Veja os valores possíveis abaixo desta tabela. |
Os valores possíveis para a result_state
coluna são:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Os valores possíveis para a trigger_type
coluna são:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Esquema da tabela cronológica de execução da tarefa de trabalho
A job_task_run_timeline
tabela é imutável e completa no momento em que é produzida.
A tabela usa o seguinte esquema:
Nome da coluna | Tipo de dados | Description |
---|---|---|
account_id |
string | O ID da conta a que 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 espaço de trabalho. |
run_id |
string | A ID da tarefa executada. |
period_start_time |
carimbo de data/hora | A hora de início da tarefa ou do período de tempo. |
period_end_time |
carimbo de data/hora | A hora de término da tarefa ou do período de tempo. |
task_key |
string | A chave de referência para uma tarefa em um trabalho. Essa chave só é única dentro de um único trabalho. |
compute_ids |
matriz | Matriz que contém as IDs dos armazéns SQL de trabalhos sem servidor, computação e não sem servidor usados pela tarefa de trabalho. |
result_state |
string | O resultado da execução da tarefa de trabalho. |
Os valores possíveis para a result_state
coluna são:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Consultas de exemplo
Esta seção inclui consultas de exemplo que você pode usar para aproveitar ao máximo as tabelas de fluxo de trabalho.
- Obtenha a versão mais recente das vagas
- Contagem diária de trabalhos por espaço de trabalho
- Distribuição diária do status do trabalho por espaço de trabalho
- Visão geral dos trabalhos de execução mais longa
- Análise de execução de trabalho
- Trabalhos executados em computação multiuso
- Execuções de trabalho repetidas
Obtenha a versão mais recente das vagas
Como as tabelas e job_tasks
estão mudando lentamente as jobs
tabelas de dimensão, um novo registro é criado toda vez que uma alteração é feita. Para obter a versão mais recente de um trabalho, você pode ordenar pela change_time
coluna.
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 trabalhos por espaço de trabalho
Esta consulta obtém a contagem diária de trabalhos por espaço de trabalho dos ú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 do trabalho por espaço de trabalho
Esta 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.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 dos trabalhos de execução mais longa
Essa consulta retorna o tempo médio de execução do trabalho, medido em segundos. Os registros são organizados por trabalho. Uma coluna de percentil 90 e 95 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.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
Análise de execução de trabalho
Esta consulta fornece um tempo de execução 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 de tempo para análise atualizando a quantidade de dias na INTERVAL 60 DAYS
seção.
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 multiuso
Essa consulta se une à tabela do compute.clusters
sistema para retornar trabalhos recentes que estão sendo executados em computação multiuso em vez de trabalhos computados.
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;
Execuções de trabalho 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.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;
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários