Compartir a través de


Referencia de las tablas del sistema de trabajos

Nota:

El esquema lakeflow se conocía anteriormente como workflow. El contenido de ambos esquemas es idéntico. Para que el esquema lakeflow sea visible, debe habilitarlo por separado.

Este artículo es una referencia sobre cómo usar las tablas del sistema de lakeflow para supervisar los trabajos en tu cuenta. Estas tablas incluyen registros de todas las áreas de trabajo de la cuenta implementadas en la misma región de nube. Para ver los registros de otra región, debe ver las tablas de un área de trabajo implementada en esa región.

Requisitos

Tablas de trabajos disponibles

Todas las tablas del sistema relacionadas con trabajos residen en el esquema system.lakeflow. Actualmente, el esquema hospeda cuatro tablas:

Tabla Descripción Admite streaming Período de retención libre Incluye datos globales o regionales
trabajos (versión preliminar pública) Realiza un seguimiento de todos los trabajos creados en la cuenta 365 días Regional
job_tasks (versión preliminar pública) Realiza un seguimiento de todas las tareas de trabajo que se ejecutan en la cuenta 365 días Regional
job_run_timeline (versión preliminar pública) Realiza un seguimiento de las ejecuciones del trabajo y los metadatos relacionados 365 días Regional
job_task_run_timeline (versión preliminar pública) Realiza un seguimiento de las ejecuciones de tareas de trabajo y los metadatos relacionados 365 días Regional

Referencia detallada del esquema

En las secciones siguientes se proporcionan referencias de esquema para cada una de las tablas del sistema relacionadas con los trabajos.

Esquema de tabla de trabajos

La tabla jobs es una tabla de dimensiones que cambia lentamente (SCD2). Cuando cambia una fila, se emite una nueva fila, reemplazando lógicamente a la anterior.

ruta de acceso de tabla: system.lakeflow.jobs

Nombre de la columna Tipo de datos Descripción Notas
account_id string El identificador de la cuenta a la que pertenece este trabajo
workspace_id string El identificador del área de trabajo a la que pertenece este trabajo
job_id string Identificador del trabajo Solo único dentro de un único área de trabajo
name string Nombre del trabajo proporcionado por el usuario
description string Descripción proporcionada por el usuario del trabajo Este campo está vacío si tiene claves administradas por cliente configuradas.

No rellenado para las filas emitidas antes de finales de agosto de 2024
creator_id string Identificador de la entidad de seguridad que creó el trabajo
tags string Etiquetas personalizadas proporcionadas por el usuario asociadas a este trabajo
change_time timestamp Hora a la que se modificó por última vez el trabajo Zona horaria registrada como +00:00 (UTC)
delete_time timestamp Hora a la que el usuario eliminó el trabajo Zona horaria registrada como +00:00 (UTC)
run_as string El identificador del usuario o la entidad de servicio cuyos permisos se usan para la ejecución del trabajo

Ejemplo de consulta

-- 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 de tabla de tareas de trabajo

La tabla de tareas de trabajo es una tabla de dimensiones que cambia lentamente (SCD2). Cuando cambia una fila, se emite una nueva fila, reemplazando lógicamente a la anterior.

ruta de acceso de tabla: system.lakeflow.job_tasks

Nombre de la columna Tipo de datos Descripción Notas
account_id string El identificador de la cuenta a la que pertenece este trabajo
workspace_id string El identificador del área de trabajo a la que pertenece este trabajo
job_id string ID del trabajo Solo único dentro de un único área de trabajo
task_key string Clave de referencia de una tarea en un trabajo Solo único dentro de un único trabajo
depends_on_keys array Claves de tarea de todas las dependencias ascendentes de esta tarea
change_time timestamp Hora a la que se modificó por última vez la tarea Zona horaria registrada como +00:00 (UTC)
delete_time timestamp Hora en que el usuario eliminó una tarea Zona horaria registrada como +00:00 (UTC)

Ejemplo de consulta

-- 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 de tabla de escala de tiempo de ejecución de trabajo

La tabla de escala de tiempo de ejecución del trabajo es inmutable y se completa en el momento en que se genera.

ruta de acceso a la tabla: system.lakeflow.job_run_timeline

Nombre de la columna Tipo de datos Descripción Notas
account_id string El identificador de la cuenta a la que pertenece este trabajo
workspace_id string El identificador del área de trabajo a la que pertenece este trabajo
job_id string Identificador del trabajo Esta clave solo es única dentro de un único área de trabajo.
run_id string Identificador de la ejecución del trabajo
period_start_time timestamp Hora de inicio de la ejecución o durante el período de tiempo La información de zona horaria se registra al final del valor con +00:00 que representan UTC
period_end_time timestamp Hora de finalización de la ejecución o durante el período de tiempo La información de zona horaria se registra al final del valor con +00:00 que representan UTC
trigger_type string Tipo de desencadenador que puede desencadenar una ejecución Para conocer los valores posibles, consulte Valores de tipo de desencadenador.
run_type string Tipo de ejecución de trabajo Para ver los valores posibles, consulte Ejecutar valores de tipo
run_name string Nombre de ejecución proporcionado por el usuario asociado a esta ejecución de trabajo
compute_ids array Matriz que contiene los identificadores de proceso del trabajo para la ejecución del trabajo primario Use para identificar el clúster de trabajos usado por WORKFLOW_RUN tipos de ejecución. Para obtener otra información de proceso, consulte la job_task_run_timeline tabla .

No rellenado para las filas emitidas antes de finales de agosto de 2024
result_state string Resultado de la ejecución del trabajo Para consultar los posibles valores, vea Valores del estado de resultado
termination_code string Código de finalización de la ejecución del trabajo Para conocer los valores posibles, consulte Valores de código de finalización.

No rellenado para las filas emitidas antes de finales de agosto de 2024
job_parameters map Parámetros de nivel de trabajo usados en la ejecución del trabajo Las configuraciones en desuso de notebook_params no se incluyen en este campo.

No rellenado para las filas emitidas antes de finales de agosto de 2024

Ejemplo de consulta

-- 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 de tabla de escala de tiempo de ejecución de tareas de trabajo

La tabla de escala de tiempo de ejecución de la tarea de trabajo es inmutable y completa en el momento en que se genera.

ruta de acceso de tabla: system.lakeflow.job_task_run_timeline

Nombre de la columna Tipo de datos Descripción Notas
account_id string El identificador de la cuenta a la que pertenece este trabajo
workspace_id string El identificador del área de trabajo a la que pertenece este trabajo
job_id string Identificador del trabajo Solo único dentro de un único área de trabajo
run_id string Identificador de la ejecución de la tarea
job_run_id string Identificador de la ejecución del trabajo No rellenado para las filas emitidas antes de finales de agosto de 2024
parent_run_id string Identificador de la ejecución primaria No rellenado para las filas emitidas antes de finales de agosto de 2024
period_start_time timestamp Hora de inicio de la tarea o del período de tiempo La información de zona horaria se registra al final del valor con +00:00 que representan UTC
period_end_time timestamp Hora de finalización de la tarea o del período de tiempo La información de zona horaria se registra al final del valor con +00:00 que representan UTC
task_key string Clave de referencia de una tarea en un trabajo Esta clave solo es única dentro de un único trabajo.
compute_ids array La matriz compute_ids contiene identificadores de clústeres de trabajos, clústeres interactivos y almacenes de SQL usados por la tarea de trabajo.
result_state string Resultado de la ejecución de la tarea de trabajo Para ver los valores posibles, consulte Valores de estado de resultado
termination_code string Código de finalización de la ejecución de la tarea Para conocer los valores posibles, consulte Valores de código de finalización.

No rellenado para las filas emitidas antes de finales de agosto de 2024

Patrones de Combinación Comunes

En las secciones siguientes se proporcionan consultas de ejemplo que resaltan los patrones de combinación usados habitualmente para las tablas del sistema de trabajos.

Combinar los trabajos y las tablas de escala de tiempo de ejecución de trabajos

Enriquecer la ejecución del trabajo con un nombre de trabajo

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 la escala de tiempo de ejecución del trabajo y las tablas de uso

Enriquecer cada registro de facturación con metadatos de ejecución de trabajos

SELECT
    t1.*,
    t2.*
FROM system.billing.usage t1
    LEFT JOIN system.lakeflow.job_run_timeline t2
        ON t1.workspace_id = t2.workspace_id
            AND t1.usage_metadata.job_id = t2.job_id
            AND t1.usage_metadata.job_run_id = t2.run_id
            AND t1.usage_start_time >= date_trunc("Hour", t2.period_start_time)
            AND t1.usage_start_time < date_trunc("Hour", t2.period_end_time) + INTERVAL 1 HOUR
WHERE
    billing_origin_product="JOBS"

Calcular el costo por ejecución de un trabajo

Esta consulta se combina con la tabla del sistema billing.usage para calcular un costo por ejecución de trabajo.

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

Obtener registros de uso para trabajos de 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 el cronograma de ejecución de tareas y las tablas de clústeres

Enriquecer las ejecuciones de tareas de trabajo con metadatos de clústeres

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
  exploded_task_runs.*,
  clusters.*
FROM exploded_task_runs t1
  LEFT JOIN clusters t2
    USING (workspace_id, cluster_id)

Buscar trabajos que se ejecutan en un proceso de uso completo

Esta consulta se une a la de la tabla del sistema compute.clusters para devolver los trabajos recientes que se ejecutan en proceso multiuso en lugar de proceso de trabajos.

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
),
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;

Panel de supervisión de trabajos

En el panel siguiente se usan tablas del sistema para ayudarle a empezar a supervisar los trabajos y el estado operativo. Incluye casos de uso comunes, como el seguimiento del rendimiento del trabajo, la supervisión de errores y el uso de recursos.

Panel de observabilidad de costos de trabajos

Para obtener información sobre cómo descargar el panel, consulte Supervisión de costes y rendimiento de trabajos con tablas del sistema

Solución de problemas

La tarea no está registrada en la tabla lakeflow.jobs

Si un trabajo no está visible en las tablas del sistema:

  • El trabajo no se modificó en los últimos 365 días
    • Modifique cualquiera de los campos del trabajo presentes en el esquema para emitir un nuevo registro.
  • El trabajo se creó en otra región
  • Creación reciente de trabajos (retrasos en los datos)

No se puede encontrar un trabajo visto en la tabla job_run_timeline

No todas las ejecuciones de trabajos están visibles en todas partes. Aunque las entradas de JOB_RUN aparecen en todas las tablas relacionadas con el trabajo, WORKFLOW_RUN (ejecuciones de flujo de trabajo del cuaderno) solo se registran en job_run_timeline y SUBMIT_RUN (ejecuciones enviadas una sola vez) se registran únicamente en ambas tablas de cronología. Estas ejecuciones no se rellenan en otras tablas del sistema de trabajo, como jobs o job_tasks.

Consulte la tabla Tipos de ejecución siguiente para obtener un desglose detallado de dónde está visible y accesible cada tipo de ejecución.

Ejecución de trabajo no visible en la tabla billing.usage

En system.billing.usage, el usage_metadata.job_id solo se rellena para los trabajos que se ejecutan en computación en trabajos o computación sin servidor.

Además, los trabajos de WORKFLOW_RUN no tienen una atribución propia de usage_metadata.job_id o de usage_metadata.job_run_id en system.billing.usage. En su lugar, su uso de computación se atribuye al notebook principal que los activó. Esto significa que cuando un notebook inicia la ejecución de un flujo de trabajo, todos los costos de proceso aparecen en el uso del notebook principal, no como un trabajo de flujo de trabajo independiente.

Consulte referencia de metadatos de uso para obtener más información.

Calcular el costo de un trabajo que se ejecuta en una computación de propósito general

El cálculo preciso del costo para los trabajos que se ejecutan en recursos de cómputo dedicados no es posible con una precisión de 100%. Cuando un trabajo se ejecuta en un proceso interactivo (de uso completo), varias cargas de trabajo como cuadernos, consultas SQL u otros trabajos a menudo se ejecutan simultáneamente en ese mismo recurso de proceso. Dado que los recursos del clúster se comparten, no hay ninguna asignación directa de 1:1 entre los costos informáticos y las ejecuciones de trabajos individuales.

Para un seguimiento preciso del costo del trabajo, Databricks recomienda ejecutar trabajos en computación dedicada para trabajos o computación sin servidor, donde usage_metadata.job_id y usage_metadata.job_run_id permiten una atribución precisa de costos.

Si debe usar la computación de propósito general, puede hacer lo siguiente:

  • Supervise el uso general del clúster y los costes en system.billing.usage en función de usage_metadata.cluster_id.
  • Realice un seguimiento de las métricas del tiempo de ejecución del trabajo por separado.
  • Tenga en cuenta que cualquier estimación de costos será aproximada debido a los recursos compartidos.

Consulte referencia de metadatos de uso para obtener más información sobre la atribución de costes.

Valores de referencia

En la sección siguiente se incluyen referencias para seleccionar columnas en tablas relacionadas con trabajos.

Valores de tipo de desencadenador

Los valores posibles para la columna trigger_type son:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

Valores de tipo de ejecución

Los valores posibles para la columna run_type son:

Tipo Descripción Ubicación de la interfaz de usuario Punto de conexión de API Tablas del sistema
JOB_RUN Ejecución de trabajos estándar Interfaz de usuario de trabajos y ejecuciones de trabajos /jobs y /jobs/runs endpoints jobs, job_tasks, job_run_timeline, job_task_run_timeline
SUBMIT_RUN Ejecución única a través de POST /jobs/runs/submit Solo la interfaz de usuario de ejecuciones de trabajos /jobs/runs endpoints only job_run_timeline, job_task_run_timeline
WORKFLOW_RUN Ejecución iniciada desde flujo de trabajo del cuaderno No visible No es accesible cronograma_de_ejecución_de_tareas

Valores de estado del resultado

Los valores posibles para la columna result_state son:

Estado Descripción
SUCCEEDED La ejecución se completó correctamente
FAILED La ejecución se completó con un error
SKIPPED La ejecución nunca se realizó porque no se cumplió una condición
CANCELLED La ejecución se canceló a petición del usuario.
TIMED_OUT La ejecución se detuvo después de agotar el tiempo de espera
ERROR La ejecución se completó con un error
BLOCKED La ejecución se bloqueó en una dependencia ascendente

Valores de código de finalización

Los valores posibles para la columna termination_code son:

Código de terminación Descripción
SUCCESS La ejecución se completó correctamente
CANCELLED La ejecución fue cancelada durante la ejecución por la plataforma de Databricks; por ejemplo, si se superó la duración máxima de la ejecución
SKIPPED La ejecución nunca se llevó a cabo, por ejemplo, si se produjo un error en la ejecución de la tarea previa, no se cumplió la condición del tipo de dependencia o no había tareas pendientes para ejecutar.
DRIVER_ERROR La ejecución encontró un error al comunicarse con el controlador de Spark.
CLUSTER_ERROR Error en la ejecución debido a un error de clúster
REPOSITORY_CHECKOUT_FAILED No se pudo completar el pago debido a un error al comunicarse con el servicio de terceros.
INVALID_CLUSTER_REQUEST Error en la ejecución porque emitió una solicitud no válida para iniciar el clúster
WORKSPACE_RUN_LIMIT_EXCEEDED El espacio de trabajo ha alcanzado la cuota del número máximo de ejecuciones activas simultáneas. Considere la posibilidad de programar las ejecuciones en un período de tiempo mayor
FEATURE_DISABLED Error en la ejecución porque intentó acceder a una característica no disponible para el área de trabajo
CLUSTER_REQUEST_LIMIT_EXCEEDED El número de solicitudes de creación, inicio y tamaño del clúster ha superado el límite de velocidad asignado. Considere la posibilidad de distribuir la ejecución en un periodo de tiempo mayor.
STORAGE_ACCESS_ERROR Error en la ejecución debido a un error al acceder al almacenamiento de blobs del cliente
RUN_EXECUTION_ERROR La ejecución se completó con errores de tarea
UNAUTHORIZED_ERROR Error en la ejecución debido a un problema de permiso al acceder a un recurso
LIBRARY_INSTALLATION_ERROR Error en la ejecución al instalar la biblioteca solicitada por el usuario. Las causas pueden incluir, pero no se limitan a: La biblioteca proporcionada no es válida, no hay permisos suficientes para instalar la biblioteca, etc.
MAX_CONCURRENT_RUNS_EXCEEDED La ejecución programada supera el límite de ejecuciones simultáneas máximas establecidas para el trabajo.
MAX_SPARK_CONTEXTS_EXCEEDED La ejecución se programa en un clúster que ya ha alcanzado el número máximo de contextos que está configurado para crear.
RESOURCE_NOT_FOUND No existe un recurso necesario para la ejecución de la ejecución
INVALID_RUN_CONFIGURATION Error en la ejecución debido a una configuración no válida
CLOUD_FAILURE Error en la ejecución debido a un problema de proveedor de nube
MAX_JOB_QUEUE_SIZE_EXCEEDED Se omitió la ejecución debido a que se alcanzó el límite de tamaño del nivel de la cola de trabajo