Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Note
O esquema lakeflow antigamente era conhecido como workflow. O conteúdo dos dois esquemas é idêntico.
Este artigo é uma referência para as tabelas do sistema lakeflow, que registram a atividade de trabalho em 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, você deve exibir as tabelas de um workspace implantado nessa região.
Requirements
- Para acessar essas tabelas do sistema, os usuários devem:
- Ser um administrador do metastore e um administrador de conta ou
- Tenha permissões de
USEeSELECTnos esquemas do sistema. Veja Conceder acesso às tabelas do sistema.
Tabelas de trabalhos disponíveis
Todas as tabelas de sistema relacionadas ao trabalho residem no system.lakeflow esquema. Atualmente, o esquema hospeda quatro tabelas:
| Table | Description | Dá suporte ao streaming | Período de retenção gratuito | Inclui dados globais ou regionais |
|---|---|---|---|---|
| tarefas (visualização pública) | Controla todos os trabalhos criados na conta | Yes | 365 dias | Regional |
| job_tasks (Visualização Pública) | Controla todas as tarefas de trabalho executadas na conta | Yes | 365 dias | Regional |
| job_run_timeline (Visualização Pública) | Rastrea as execuções de tarefas e os metadados relacionados | Yes | 365 dias | Regional |
| job_task_run_timeline (pré-visualização pública) | Controla execuções de tarefa de trabalho e metadados relacionados | Yes | 365 dias | Regional |
| pipelines (Visualização Pública) | Rastreia todos os pipelines criados na conta | Yes | 365 dias | Regional |
| pipeline_update_timeline (Visualização Pública) | Rastreia as atualizações de pipeline e os metadados relacionados | Yes | 365 dias | Regional |
Referência de esquema detalhada
As seções a seguir fornecem referências de esquema para cada uma das tabelas do sistema relacionadas a trabalhos.
Esquema da tabela de trabalhos
A tabela jobs é uma SCD2 (tabela de dimensões de alteração lenta). Quando uma linha é alterada, uma nova linha é emitida, substituindo logicamente a anterior.
Caminho da tabela: system.lakeflow.jobs
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual esta tarefa pertence | |
workspace_id |
cadeia | O ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
cadeia | A ID do trabalho | Somente único em um único espaço de trabalho |
name |
cadeia | O nome do trabalho fornecido pelo usuário | |
description |
cadeia | A descrição fornecida pelo usuário do trabalho | Esse campo estará vazio se você tiver chaves gerenciadas pelo cliente configuradas. |
creator_id |
cadeia | A ID da entidade de segurança que criou o trabalho | |
tags |
mapa | As tags personalizadas fornecidas pelo usuário associadas a este trabalho | |
change_time |
carimbo de data/hora | A hora da última modificação do trabalho | Fuso horário registrado como +00:00 (UTC) |
delete_time |
carimbo de data/hora | A hora em que o trabalho foi excluído pelo usuário | Fuso horário registrado como +00:00 (UTC) |
run_as |
cadeia | O ID do usuário ou do principal de serviço cujas permissões são usadas para a atualização do pipeline | |
trigger |
struct | A configuração do gatilho para a tarefa | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
trigger_type |
cadeia | O tipo de gatilho para a tarefa | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
run_as_user_name |
cadeia | O email do usuário ou da ID da entidade de serviço cujas permissões são usadas para a execução do trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
creator_user_name |
cadeia | O email do usuário ou a ID da entidade de serviço que criou a tarefa | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
paused |
boolean | Indica se o trabalho está em pausa | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
timeout_seconds |
long | A duração do tempo limite da tarefa em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
health_rules |
matriz | Conjunto de regras de integridade definidas para este trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
deployment |
struct | Informações de implantação para trabalhos gerenciados por fontes externas | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
create_time |
carimbo de data/hora | O momento em que esse trabalho foi criado. Fuso horário registrado como +00:00 (UTC). | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
Consulta de exemplo
-- Get the most recent version of a job
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Esquema da tabela da tarefa de trabalho
A tabela de tarefas de trabalho é uma SCD2 (tabela de dimensões de alteração lenta). Quando uma linha é alterada, uma nova linha é emitida, substituindo logicamente a anterior.
Caminho da tabela: system.lakeflow.job_tasks
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual esta tarefa pertence | |
workspace_id |
cadeia | O ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
cadeia | A ID do trabalho | Somente único em um único espaço de trabalho |
task_key |
cadeia | A chave de referência para uma tarefa em um trabalho | Somente exclusivo em um único trabalho |
depends_on_keys |
matriz | As chaves de tarefa de todas as dependências upstream dessa tarefa | |
change_time |
carimbo de data/hora | A hora em que a tarefa foi modificada pela última vez | Fuso horário registrado como +00:00 (UTC) |
delete_time |
carimbo de data/hora | A hora em que uma tarefa foi excluída pelo usuário | Fuso horário registrado como +00:00 (UTC) |
timeout_seconds |
long | A duração do tempo limite da tarefa em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
health_rules |
matriz | Conjunto de regras de integridade definidas para esta tarefa de trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
Consulta de exemplo
-- Get the most recent version of a job task
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.job_tasks QUALIFY rn=1
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: system.lakeflow.job_run_timeline
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual esta tarefa pertence | |
workspace_id |
cadeia | O ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
cadeia | A ID do trabalho | Essa chave só é exclusiva em um único workspace |
run_id |
cadeia | A ID da execução do trabalho | |
period_start_time |
carimbo de data/hora | A hora de início da corrida 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. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
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. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
trigger_type |
cadeia | O tipo de gatilho que pode disparar uma execução | Para obter valores possíveis, consulte Valores do tipo de gatilho |
run_type |
cadeia | Tipo de execução do trabalho | Para obter valores possíveis, consulte valores do tipo de execução |
run_name |
cadeia | O nome de execução fornecido pelo usuário associado a esta execução de trabalho | |
compute_ids |
matriz | Matriz que contém as IDs de computação de trabalhos para a execução do trabalho pai | Use para identificar o cluster de tarefas utilizado pelos tipos de execução de WORKFLOW_RUN. Para obter outras informações de computação, consulte a job_task_run_timeline tabela. |
result_state |
cadeia | O resultado da execução do trabalho | Para execuções com mais de uma hora divididas em várias linhas, essa coluna é preenchida apenas na linha que representa o final da execução. Para obter valores possíveis, consulte valores de estado do resultado. |
termination_code |
cadeia | O código de encerramento da execução do trabalho | Para execuções com mais de uma hora divididas em várias linhas, essa coluna é preenchida apenas na linha que representa o final da execução. Para obter os valores possíveis, consulte Valores do código de término. |
job_parameters |
mapa | Os parâmetros de nível de trabalho usados na execução do trabalho | Contém apenas os valores de job_parameters. Os campos de parâmetro preteridos (notebook_params, , python_paramspython_named_params, spark_submit_paramse sql_params) não estão incluídos. |
source_task_run_id |
cadeia | A ID da execução da tarefa de origem. Use esta coluna para identificar qual execução de tarefa disparou essa execução de trabalho. | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
root_task_run_id |
cadeia | O ID da execução da tarefa raiz. Use esta coluna para identificar qual execução de tarefa disparou essa execução de trabalho. | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
compute |
matriz | Detalhes sobre os recursos de computação usados na execução do trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
termination_type |
cadeia | O tipo de terminação para a execução do trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
setup_duration_seconds |
long | A duração da fase de configuração para a execução da tarefa em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
queue_duration_seconds |
long | O tempo gasto na fila na execução do trabalho em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
run_duration_seconds |
long | A duração total da execução do trabalho em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
cleanup_duration_seconds |
long | A duração da fase de limpeza para a execução do trabalho em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
execution_duration_seconds |
long | A duração da fase de execução para a execução da tarefa em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
Consulta de exemplo
-- This query gets the daily job count for a workspace for the last 7 days:
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
-- This query returns the daily job count for a workspace for the last 7 days, distributed by the outcome of the job run.
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
-- This query returns the average time of job runs, measured in seconds. The records are organized by job. A top 90 and a 95 percentile column show the average lengths of the job's longest runs.
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
)
SELECT
t1.workspace_id,
t1.job_id,
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
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
-- This query provides a historical runtime for a specific job based on the `run_name` parameter. For the query to work, you must set the `run_name`.
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
-- This query collects a list of retried job runs with the number of retries for each run.
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;
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: system.lakeflow.job_task_run_timeline
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual esta tarefa pertence | |
workspace_id |
cadeia | O ID do espaço de trabalho ao qual este trabalho pertence | |
job_id |
cadeia | A ID do trabalho | Somente único em um único espaço de trabalho |
run_id |
cadeia | A ID da execução da tarefa | |
job_run_id |
cadeia | A ID da execução do trabalho | |
parent_run_id |
cadeia | A ID da execução pai | |
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. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
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. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
task_key |
cadeia | A chave de referência para uma tarefa em um trabalho | Essa chave só é exclusiva em um único trabalho |
compute_ids |
matriz | A matriz compute_ids contém IDs de clusters de trabalho, clusters interativos e sql warehouses usados pela tarefa de trabalho | |
result_state |
cadeia | O resultado da execução da tarefa de trabalho | Para execuções de tarefa com mais de uma hora divididas em várias linhas, essa coluna é preenchida apenas na linha que representa o final da execução. Para obter valores possíveis, consulte valores de estado do resultado. |
termination_code |
cadeia | O código de encerramento da execução da tarefa | Para execuções de tarefa com mais de uma hora divididas em várias linhas, essa coluna é preenchida apenas na linha que representa o final da execução. Para obter os valores possíveis, consulte Valores do código de término. |
compute |
matriz | Detalhes sobre os recursos de computação usados na execução da tarefa de trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
termination_type |
cadeia | O tipo de finalização para a execução da tarefa | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
task_parameters |
mapa | Os parâmetros de nível de tarefa usados na execução da tarefa de trabalho | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
setup_duration_seconds |
long | A duração da fase de configuração da tarefa executada em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
cleanup_duration_seconds |
long | A duração da fase de limpeza da tarefa executada em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
execution_duration_seconds |
long | A duração da fase de execução da tarefa executada em segundos | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
Esquema de tabela de pipelines
A tabela de pipelines é uma SCD2 (tabela de dimensões de alteração lenta). Quando uma linha é alterada, uma nova linha é emitida, substituindo logicamente a anterior.
Caminho da tabela: system.lakeflow.pipelines
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual este pipeline pertence | |
workspace_id |
cadeia | O ID do workspace ao qual este pipeline pertence | |
pipeline_id |
cadeia | O ID do pipeline | Somente único em um único espaço de trabalho |
pipeline_type |
cadeia | O tipo do pipeline | Para obter os valores possíveis, consulte valores para tipos de pipeline |
name |
cadeia | O nome do pipeline fornecido pelo usuário | |
created_by |
cadeia | O email do usuário ou o ID do principal do serviço que criou o pipeline | |
run_as |
cadeia | O email do usuário ou o ID da entidade de serviço cujas permissões são usadas para a execução do pipeline | |
tags |
mapa | As tags personalizadas fornecidas pelo usuário associadas a este trabalho | |
settings |
struct | As configurações do pipeline | Ver as configurações do Pipeline |
configuration |
mapa | A configuração do pipeline fornecida pelo usuário | |
change_time |
carimbo de data/hora | O momento em que o pipeline foi modificado pela última vez | Fuso horário registrado como +00:00 (UTC) |
delete_time |
carimbo de data/hora | A hora em que o pipeline foi excluído pelo usuário | Fuso horário registrado como +00:00 (UTC) |
create_time |
carimbo de data/hora | A hora em que um pipeline foi criado pelo usuário. Fuso horário registrado como +00:00 (UTC). | Não preenchido para linhas emitidas antes do início de dezembro de 2025 |
Consulta de exemplo
-- Get the most recent version of a pipeline
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
-- Enrich billing logs with pipeline metadata
with latest_pipelines AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
)
SELECT
usage.*,
pipelines.*
FROM system.billing.usage
LEFT JOIN latest_pipelines
ON (usage.workspace_id = pipelines.workspace_id
AND usage.usage_metadata.dlt_pipeline_id = pipelines.pipeline_id)
WHERE
usage.usage_metadata.dlt_pipeline_id IS NOT NULL
Esquema da tabela de cronograma de atualização do pipeline
A tabela da linha do tempo de atualização do pipeline é imutável e completa no momento em que é produzida.
Caminho da tabela: system.lakeflow.pipeline_update_timeline
| Nome da coluna | Tipo de dados | Description | Notes |
|---|---|---|---|
account_id |
cadeia | O ID da conta à qual este pipeline pertence | |
workspace_id |
cadeia | O ID do workspace ao qual este pipeline pertence | |
pipeline_id |
cadeia | O ID do pipeline | Somente único em um único espaço de trabalho |
update_id |
cadeia | A ID da atualização do pipeline | Somente único em um único espaço de trabalho |
update_type |
cadeia | O tipo de atualização do pipeline | Para obter valores possíveis, consulte valores de tipo de atualização de pipeline |
request_id |
cadeia | A ID da solicitação. Ajuda a entender quantas vezes uma atualização teve que ser repetida/reiniciada | |
run_as_user_name |
cadeia | O email do usuário ou a ID do principal de serviço cujas permissões são usadas para a atualização do pipeline | |
trigger_type |
cadeia | O que disparou essa atualização | Para obter valores possíveis, consulte valores de tipo de gatilho de pipeline |
trigger_details |
struct | Os detalhes do gatilho do pipeline | Para ver os valores possíveis, consulte os detalhes sobre o tipo de gatilho de pipeline |
result_state |
cadeia | O resultado da atualização do pipeline | Para atualizações com duração superior a 1 hora que se estendem por várias linhas, essa coluna é preenchida somente na linha que representa o término da atualização. Para obter valores possíveis, consulte a referência de resultado do Pipeline. |
compute |
struct | Detalhes sobre o recurso de computação utilizado na atualização do pipeline | |
period_start_time |
carimbo de data/hora | A hora de início da atualização do pipeline ou da hora. O valor é armazenado como um timestamp UTC. | As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
period_end_time |
carimbo de data/hora | A hora de término da atualização do pipeline ou da hora. O valor é armazenado como um timestamp UTC. | As informações de fuso horário são registradas no final do valor, com +00:00 representando UTC. Para obter detalhes sobre como o Databricks divide as execuções longas em intervalos de uma hora, consulte a lógica de divisão da linha do tempo. |
refresh_selection |
matriz | Uma lista de tabelas a serem atualizadas sem atualização completa | |
full_refresh_selection |
matriz | Uma lista de tabelas a serem atualizadas com fullRefresh | |
reset_checkpoint_selection |
matriz | Uma lista de fluxos de streaming para limpar os pontos de verificação |
Consulta de exemplo
-- This query gets the daily pipeline update count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily pipeline update count for a workspace for the last 7 days, distributed by the outcome of the pipeline update.
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of pipeline updates, measured in seconds. The records are organized by pipeline. A top 90 and a 95 percentile column show the average lengths of the pipeline's longest updates.
with pipeline_update_duration as (
SELECT
workspace_id,
pipeline_id,
update_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.pipeline_id,
COUNT(DISTINCT t1.update_id) as update_count,
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
pipeline_update_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
Padrões de junção comuns
As seções a seguir fornecem consultas de exemplo que realçam padrões de junção comumente usados para tabelas do sistema de trabalhos.
Unir as tabelas de trabalhos e linha do tempo de execução de trabalhos
aprimorar a execução do trabalho com um nome de trabalho
with 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
job_run_timeline.*
jobs.name
FROM system.lakeflow.job_run_timeline
LEFT JOIN jobs USING (workspace_id, job_id)
Unir as tabelas de linha do tempo de execução de trabalhos e uso
Enriquecer cada log de faturamento com metadados de execução de tarefas
A consulta a seguir enriquece os logs de cobrança com metadados de execução de jobs do tipo clássico e sem servidor.
with aggregated_job_runs AS (
SELECT
j.workspace_id,
COALESCE(t.job_id, j.job_id) as origin_job_id,
COALESCE(t.job_run_id, j.run_id) AS origin_job_run_id,
j.job_id as billing_job_id,
j.run_id as billing_run_id,
CASE WHEN j.root_task_run_id IS NOT NULL THEN true ELSE false END AS is_workflow_run
FROM
system.lakeflow.job_run_timeline j
LEFT JOIN
system.lakeflow.job_task_run_timeline t
ON
j.workspace_id = t.workspace_id
AND j.root_task_run_id = t.run_id
WHERE j.period_start_time >= CURRENT_DATE() - INTERVAL 7 DAYS
GROUP BY ALL
),
billing_logs_enriched AS (
SELECT
t2.origin_job_id,
t2.origin_job_run_id,
t1.*
FROM system.billing.usage t1
INNER JOIN aggregated_job_runs t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.billing_job_id
AND t1.usage_metadata.job_run_id = t2.billing_run_id
WHERE
billing_origin_product="JOBS" AND usage_date >= CURRENT_DATE() - INTERVAL 7 DAYS
)
SELECT
workspace_id,
origin_job_id AS job_id,
origin_job_run_id AS run_id,
sku_name,
SUM(usage_quantity) as total_usage_quantity,
SUM(CASE WHEN usage_metadata.job_run_id != origin_job_run_id THEN usage_quantity ELSE 0 END) AS workflow_run_usage_quantity,
COUNT(DISTINCT usage_metadata.job_run_id) - 1 AS workflow_runs
FROM billing_logs_enriched
GROUP BY ALL
Calcular custo por execução de trabalho
Essa consulta une-se à tabela do sistema billing.usage para calcular um custo por execução de trabalho.
with jobs_usage AS (
SELECT
*,
usage_metadata.job_id,
usage_metadata.job_run_id as run_id,
identity_metadata.run_as as run_as
FROM system.billing.usage
WHERE billing_origin_product="JOBS"
),
jobs_usage_with_usd AS (
SELECT
jobs_usage.*,
usage_quantity * pricing.default as usage_usd
FROM jobs_usage
LEFT JOIN system.billing.list_prices pricing ON
jobs_usage.sku_name = pricing.sku_name
AND pricing.price_start_time <= jobs_usage.usage_start_time
AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
AND pricing.currency_code="USD"
),
jobs_usage_aggregated AS (
SELECT
workspace_id,
job_id,
run_id,
FIRST(run_as, TRUE) as run_as,
sku_name,
SUM(usage_usd) as usage_usd,
SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
)
SELECT
t1.*,
MIN(period_start_time) as run_start_time,
MAX(period_end_time) as run_end_time,
FIRST(result_state, TRUE) as result_state
FROM jobs_usage_aggregated t1
LEFT JOIN system.lakeflow.job_run_timeline t2 USING (workspace_id, job_id, run_id)
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 100
Obter os logs de uso para trabalhos SUBMIT_RUN
SELECT
*
FROM system.billing.usage
WHERE
EXISTS (
SELECT 1
FROM system.lakeflow.job_run_timeline
WHERE
job_run_timeline.job_id = usage_metadata.job_id
AND run_name = :run_name
AND workspace_id = :workspace_id
)
Unir as tabelas de linha do tempo de execução de tarefas de trabalho e clusters
Enriquecer a execução das tarefas de trabalho com metadados de clusters
with clusters as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters QUALIFY rn=1
),
exploded_task_runs AS (
SELECT
*,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE array_size(compute_ids) > 0
)
SELECT
*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)
Encontre trabalhos em execução na computação de uso geral
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 da 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
GROUP BY ALL
),
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;
Localizar trabalhos que não foram executados nos últimos 30 dias
Essa consulta une as tabelas do sistema lakeflow.jobs e lakeflow.job_run_timeline para retornar trabalhos que não foram executados nos últimos 30 dias.
with latest_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
),
latest_not_deleted_jobs AS (
SELECT
workspace_id,
job_id,
name,
change_time,
tags
FROM latest_jobs WHERE delete_time IS NULL
),
last_seen_job_timestamp AS (
SELECT
workspace_id,
job_id,
MAX(period_start_time) as last_executed_at
FROM system.lakeflow.job_run_timeline
WHERE
run_type="JOB_RUN"
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
t1.name,
t1.change_time as last_modified_at,
t2.last_executed_at,
t1.tags
FROM latest_not_deleted_jobs t1
LEFT JOIN last_seen_job_timestamp t2
USING (workspace_id, job_id)
WHERE
(t2.last_executed_at <= CURRENT_DATE() - INTERVAL 30 DAYS) OR (t2.last_executed_at IS NULL)
ORDER BY last_executed_at ASC
Painel de acompanhamento de tarefas
O painel a seguir usa tabelas do sistema para ajudá-lo a começar a monitorar seus trabalhos e integridade operacional. Ele inclui casos de uso comuns, como acompanhamento de desempenho do trabalho, monitoramento de falhas e utilização de recursos.
Para obter informações sobre como baixar o painel, consulte Monitorar custos de trabalho & desempenho com tabelas do sistema
Troubleshooting
Trabalho não está registrado na tabela lakeflow.jobs
Se um trabalho não estiver visível nas tabelas do sistema:
- O trabalho não foi modificado nos últimos 365 dias
- Modifique qualquer um dos campos do trabalho presentes no esquema para emitir um novo registro.
- O trabalho foi criado em uma região diferente
- Criação recente de trabalhos (atraso da tabela)
Não é possível encontrar um trabalho visto na job_run_timeline tabela
Nem todas as execuções de tarefas são visíveis em todos os lugares. Embora as entradas JOB_RUN apareçam em todas as tabelas relacionadas ao trabalho, WORKFLOW_RUN (execuções de fluxo de trabalho do notebook) são registradas apenas em job_run_timeline e SUBMIT_RUN (execuções enviadas uma vez) são registradas apenas em ambas as tabelas da linha do tempo. Essas execuções não são preenchidas em outras tabelas do sistema de trabalho, como jobs ou job_tasks.
Consulte a tabela De tipos de execução abaixo para obter um detalhamento de onde cada tipo de execução é visível e acessível.
Execução de tarefa não visível na tabela billing.usage
Em system.billing.usage, o usage_metadata.job_id só é preenchido para trabalhos executados em computação de trabalho ou computação sem servidor.
Além disso, os trabalhos WORKFLOW_RUN não têm sua própria atribuição de usage_metadata.job_id ou usage_metadata.job_run_id em system.billing.usage.
Em vez disso, o uso de computação deles é atribuído ao notebook pai que os acionou.
Isso significa que, quando um notebook inicia um fluxo de trabalho, todos os custos de computação aparecem como uso do notebook pai, não como um trabalho de fluxo de trabalho separado.
Consulte a referência de metadados de uso para mais informações.
Calcular o custo de um trabalho em execução em uma computação de uso geral
Não é possível calcular o custo exato de trabalhos em execução na computação para todas as finalidades com 100% de precisão. Quando um trabalho é executado em uma computação interativa (para todos os fins), várias cargas de trabalho, como notebooks, consultas SQL ou outros trabalhos, geralmente são executadas simultaneamente no mesmo recurso de computação. Como os recursos do cluster são compartilhados, não há nenhum mapeamento direto 1:1 entre os custos de computação e as execuções de trabalho individuais.
Para um acompanhamento preciso de custos de trabalho, o Databricks recomenda a execução de trabalhos em computação de trabalho dedicada ou computação sem servidor, em que o usage_metadata.job_id e usage_metadata.job_run_id permitem a atribuição de custo precisa.
Se você precisar usar a computação de todas as finalidades, poderá:
- Monitore o uso e os custos gerais do cluster em
system.billing.usagecom base emusage_metadata.cluster_id. - Acompanhe as métricas de tempo de execução da tarefa separadamente.
- Considere que qualquer estimativa de custo será aproximada devido aos recursos compartilhados.
Consulte Referência de metadados de uso para obter mais informações sobre a atribuição de custo.
Valores de referência
A seção a seguir inclui referências para colunas selecionadas em tabelas relacionadas a trabalhos.
Lógica de fatiamento nas tabelas da linha do tempo
As colunas period_start_time e period_end_time nas tabelas job_run_timeline e job_task_run_timeline registram o período ativo de uma execução de trabalho ou de tarefa.
:::warning Alteração importante
A partir de 19 de janeiro de 2026, novas linhas inseridas nas tabelas cronológicas usarão uma lógica de fatiamento alinhada à hora do relógio. As linhas existentes permanecerão inalteradas.
Os segmentos são criados em intervalos de uma hora com base na hora de início da execução. Por exemplo, um trabalho a partir das 16h47 cria fatias das 16h47 às 17h47, das 17h47 às 18h47 e assim por diante.
As fatias se alinharão aos limites de hora de relógio. Por exemplo, um trabalho iniciando às 16h47 criará fatias das 16h47 às 17h, das 17h às 18h, das 18h às 19h e assim por diante. Consulte a lógica de fatiamento alinhada à hora do relógio para obter detalhes.
:::
Cada linha registra até uma hora de runtime. As execuções que durarem mais de 1 hora serão registradas em diversas linhas. Esse fatiamento garante a granularidade horária para monitorar trabalhos de execução prolongada.
Note
Se uma execução nunca tiver sido iniciada, será representada por uma linha em que period_start_time é igual a period_end_time. Isso indica que não há runtime ativo. Para entender por que a execução não foi iniciada, verifique a termination_code coluna.
Tarefas de execução curta
Para execuções com menos de 1 hora, uma única linha é emitida, com period_start_time definido como a hora de início da execução e period_end_time como a hora de término da execução.
Por exemplo, um trabalho iniciado às 12:13 UTC e encerrado às 12:45 UTC é representado por uma única linha:
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-06-08T12:13:01.605 | 2025-06-08T12:45:06.009 |
Trabalhos de execução longa
Para execuções que duram mais de 1 hora, várias linhas são emitidas com o mesmo run_id, cada uma representando até uma hora da duração da execução:
- A primeira linha começa na hora de início real da execução e termina no final da primeira hora de execução.
- As linhas intermediárias (se houver) se estendem pelas janelas horárias completas, alinhadas à fatia anterior
period_end_time. - A última linha começa no início da fatia anterior e termina na hora de término real da execução.
Por exemplo, um trabalho que foi executado das 16h47 UTC às 20h28 UTC é dividido em várias linhas. Cada linha representa uma hora de atividade, exceto pela última linha, que pode ser menor:
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T16:47:55.992 | 2025-07-01T17:47:56.434 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T17:47:56.434 | 2025-07-01T18:47:58.876 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T18:47:58.876 | 2025-07-01T19:47:59.682 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T19:47:59.682 | 2025-07-01T20:28:29.743 |
Lógica de divisão sincronizada com o horário do relógio
Note
Essa lógica de fatiamento se aplica a novas linhas nas tabelas da linha do tempo de trabalhos a partir de 19 de janeiro de 2026.
A partir de 19 de janeiro de 2026, as tabelas cronológicas usam o fatiamento alinhado com a hora do relógio. Todas as fatias de tempo se alinham aos limites padrão da hora do relógio.
Para processos com menos de 1 hora que iniciam e terminam na mesma hora do relógio, uma única linha é emitida.
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-12-08T12:13:01.605 | 2025-12-08T12:45:06.009 |
Para execuções de tarefas que cruzam os limites de horas cheias, várias linhas são emitidas com fatias alinhadas às horas do relógio.
- A primeira linha começa na hora de início real da execução e termina no próximo limite da hora do relógio.
- Linhas intermediárias (se houver) abrangem horas de relógio completas. Por exemplo: 14h às 15h e 15h às 16h.
- A última linha começa em um limite de hora de relógio e termina na hora de término real da execução.
Por exemplo, um trabalho executado de 1h25 UTC às 3h40 UTC é particionado em três linhas:
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T01:25:00.000 | 2025-12-01T02:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T02:00:00.000 | 2025-12-01T03:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T03:00:00.000 | 2025-12-01T03:40:00.000 |
Valores do tipo de gatilho
job_run_timeline Na tabela, os valores possíveis para a trigger_type coluna são:
CONTINUOUSCRONFILE_ARRIVALONETIMEONETIME_RETRY
Valores do tipo de execução
job_run_timeline Na tabela, os valores possíveis para a run_type coluna são:
| Tipo | Description | Localização da interface do usuário | Ponto de Extremidade de API | Tabelas do sistema |
|---|---|---|---|---|
JOB_RUN |
Execução de trabalho padrão | Interface do usuário de Trabalhos e Execuções de Trabalho | pontos de extremidade /jobs e /jobs/runs | trabalhos, tarefas_de_trabalho, cronograma_de_execução_de_trabalho, cronograma_de_execução_de_tarefa_de_trabalho |
SUBMIT_RUN |
Execução única por meio de POST /jobs/runs/submit | Somente Interface do Usuário de Execuções de Trabalho | Somente pontos de extremidade /jobs/runs | cronograma_de_execução_de_tarefa_job, cronograma_de_execução_de_tarefa_de_trabalho_job |
WORKFLOW_RUN |
Execução iniciada a partir do fluxo de trabalho do notebook | Não visível | Não acessível | job_run_timeline |
Valores do estado do resultado
Nas tabelas job_task_run_timeline e job_run_timeline, os possíveis valores para a coluna result_state são:
| State | Description |
|---|---|
SUCCEEDED |
A execução foi concluída com êxito. |
FAILED |
A execução foi concluída com um erro. |
SKIPPED |
A execução nunca foi realizada porque uma condição não foi atendida. |
CANCELLED |
A execução foi cancelada a pedido do usuário. |
TIMED_OUT |
A execução foi interrompida depois de atingir o tempo limite. |
ERROR |
A execução foi concluída com um erro. |
BLOCKED |
A execução foi bloqueada em uma dependência upstream. |
NULL |
A linha representa uma fatia intermediária de uma tarefa de execução prolongada. O result_state só está disponível na linha que representa o final do processo. |
Valores do código de encerramento
Nas tabelas job_task_run_timeline e job_run_timeline, os possíveis valores para a coluna termination_code são:
| Código de término | Description |
|---|---|
SUCCESS |
A execução foi concluída com êxito. |
CANCELLED |
A execução foi cancelada durante a execução pela plataforma Databricks; por exemplo, se a duração máxima da execução foi excedida. |
SKIPPED |
A execução nunca ocorreu, por exemplo, se a execução da tarefa anterior tiver falhado, se a condição do tipo de dependência não tiver sido atendida ou se não havia tarefas a serem executadas. |
DRIVER_ERROR |
A execução encontrou um erro durante a comunicação com o Spark Driver. |
CLUSTER_ERROR |
A execução falhou devido a um erro de cluster. |
REPOSITORY_CHECKOUT_FAILED |
Falha ao concluir o check-out devido a um erro na comunicação com o serviço de terceiros. |
INVALID_CLUSTER_REQUEST |
A execução falhou porque emitiu uma solicitação inválida para iniciar o cluster. |
WORKSPACE_RUN_LIMIT_EXCEEDED |
O workspace atingiu o limite para o número máximo de executações simultâneas ativas. Considere agendar as execuções em um período maior. |
FEATURE_DISABLED |
A execução falhou porque tentou acessar um recurso indisponível para o workspace. |
CLUSTER_REQUEST_LIMIT_EXCEEDED |
O número de solicitações de criação, inicialização e aumento de capacidade de cluster excedeu o limite de taxa permitido. Considere distribuir a execução ao longo de um período maior. |
STORAGE_ACCESS_ERROR |
A execução falhou devido a um erro ao acessar o armazenamento de blobs do cliente. |
RUN_EXECUTION_ERROR |
A execução foi concluída com falhas de tarefa. |
UNAUTHORIZED_ERROR |
A execução falhou devido a um problema de permissão ao acessar um recurso. |
LIBRARY_INSTALLATION_ERROR |
A execução falhou durante a instalação da biblioteca solicitada pelo usuário. As causas podem incluir, mas não se limitam a: a biblioteca fornecida é inválida ou permissões insuficientes para instalar a biblioteca. |
MAX_CONCURRENT_RUNS_EXCEEDED |
A execução agendada excede o limite máximo de execuções simultâneas definidas para o trabalho. |
MAX_SPARK_CONTEXTS_EXCEEDED |
A execução é agendada em um cluster que já atingiu o número máximo de contextos que está configurado para criar. |
RESOURCE_NOT_FOUND |
Um recurso necessário para executar a execução não existe. |
INVALID_RUN_CONFIGURATION |
A execução falhou devido a uma configuração inválida. |
CLOUD_FAILURE |
A execução falhou devido a um problema de provedor de nuvem. |
MAX_JOB_QUEUE_SIZE_EXCEEDED |
A execução foi ignorada devido ao atingimento do limite de tamanho da fila no nível de trabalho. |
Valores de tipo de pipeline
pipelines Na tabela, os valores possíveis para a pipeline_type coluna são:
| Tipo de pipeline | Description |
|---|---|
ETL_PIPELINE |
Pipeline padrão |
MATERIALIZED_VIEW |
Exibições materializadas no Databricks SQL |
STREAMING_TABLE |
Tabelas de streaming no Databricks SQL |
INGESTION_PIPELINE |
Ingestor do Lakeflow Connect |
INGESTION_GATEWAY |
Ingestor de gateway do Lakeflow Connect |
Referência de resultado do pipeline
pipeline_update_timeline Na tabela, os valores possíveis para a result_state coluna são:
COMPLETEDFAILEDCANCELED
Referência de configurações de pipeline
pipelines Na tabela, os valores possíveis para a settings coluna são:
| Value | Description |
|---|---|
photon |
Um flag que indica se o Photon deve ser utilizado para executar o pipeline. |
development |
Um indicador que mostra se o pipeline deve ser executado em modo de desenvolvimento ou de produção |
continuous |
Um sinalizador que indica se o pipeline deve ser executado continuamente |
serverless |
Um sinalizador que indica se o pipeline deve ser executado em um cluster sem servidor |
edition |
A edição do produto para executar o pipeline |
channel |
A versão do runtime do pipeline a ser usada |
Valores de tipos de atualização do pipeline
pipeline_update_timeline Na tabela, os valores possíveis para a update_type coluna são:
API_CALLRETRY_ON_FAILURESERVICE_UPGRADESCHEMA_CHANGEJOB_TASKUSER_ACTIONDBSQL_REQUESTSETTINGS_CHANGESCHEMA_EXPLORATIONINFRASTRUCTURE_MAINTENANCESTART_RESOURCES
Valores de tipo de gatilho de pipeline
pipeline_update_timeline Na tabela, os valores possíveis para a trigger_type coluna são:
| Value | Description |
|---|---|
job_task |
Detalhes da tarefa de trabalho que disparou a atualização do pipeline |
Detalhes sobre o tipo de gatilho de um pipeline
Na tabela pipeline_update_timeline, os valores possíveis para a estrutura trigger_type.job_task são:
| Value | Description | Notes |
|---|---|---|
job_id |
O ID do trabalho que disparou a atualização do pipeline | O SQL_SCHEDULE valor indica que isso job_task foi agendado como parte do código SQL |
job_task_run_id |
O ID da execução da tarefa que disparou a atualização do pipeline | O SQL_SCHEDULE valor indica que isso job_task foi agendado como parte do código SQL |
performance_target |
Populado somente para atualizações de pipeline sem servidor | Ou PERFORMANCE_OPTIMIZED ou STANDARD |