Compartilhar via


Referência de tabela do sistema Jobs

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:

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.

Painel de observabilidade do Lakeflow

Visão geral dos trabalhos do painel de observabilidade do Lakeflow

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.usage com base em usage_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:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_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:

  • COMPLETED
  • FAILED
  • CANCELED

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_CALL
  • RETRY_ON_FAILURE
  • SERVICE_UPGRADE
  • SCHEMA_CHANGE
  • JOB_TASK
  • USER_ACTION
  • DBSQL_REQUEST
  • SETTINGS_CHANGE
  • SCHEMA_EXPLORATION
  • INFRASTRUCTURE_MAINTENANCE
  • START_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