Compartir vía


Referencia de las tablas del sistema de trabajos

Importante

Esta tabla del sistema está en versión preliminar pública. Para acceder a la tabla, el esquema debe estar habilitado en el catálogo system. Para obtener más información, consulte Habilitación de esquemas de tabla del sistema.

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.

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

system.lakeflow debe estar habilitado por un administrador de cuenta. Puede habilitarlo mediante la API SystemSchemas.

Para obtener ejemplos sobre cómo usar estas tablas para la observabilidad de los costos y el estado del trabajo, consulte Supervisión de los costos de trabajo con tablas del sistema.

Tablas de trabajos disponibles

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

  • jobs: realiza un seguimiento de la creación, eliminación e información básica de los trabajos.
  • job_tasks: realiza un seguimiento de la creación, eliminación e información básica de las tareas de trabajo.
  • job_run_timeline: registra el estado inicial, final y resultante de las ejecuciones de trabajos.
  • job_task_run_timeline: registra el estado inicial, final y resultante de las tareas de trabajo.

Esquema de tabla de trabajos

La tabla jobs es una tabla de dimensiones de variación lenta. Cuando cambia una fila, se emite una nueva fila, reemplazando lógicamente a la anterior.

Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.lakeflow.jobs.

Nombre de la columna Tipo de datos Descripción
account_id string Id. de la cuenta a la que pertenece este trabajo.
workspace_id string Id. del área de trabajo a la que pertenece este trabajo.
job_id string El id. de trabajo. Esta clave solo es única en una sola área de trabajo.
name string Nombre del trabajo que proporciona el usuario.
description string Descripción proporcionada por el usuario del trabajo. No se rellena para las filas emitidas antes de finales de agosto de 2024.
creator_id string Id. de la entidad de seguridad que ha creado el trabajo.
tags string Etiquetas personalizadas proporcionadas por el usuario asociadas a este trabajo.
change_time timestamp Hora a la que se modificó el trabajo por última vez. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.
delete_time timestamp Hora a la que el usuario eliminó el trabajo. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.
run_as string Id. del usuario o la entidad de servicio cuyos permisos se utilizan para la ejecución del trabajo.

Esquema de tabla de tareas de trabajo

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

Ruta de acceso de tabla: esta tabla del sistema se encuentra en system.lakeflow.job_tasks.

Nombre de la columna Tipo de datos Descripción
account_id string Id. de la cuenta a la que pertenece este trabajo.
workspace_id string Id. del área de trabajo a la que pertenece este trabajo.
job_id string El id. de trabajo. Esta clave solo es única en una sola área de trabajo.
task_key string Clave de referencia de una tarea de un trabajo. Esta clave solo es única en un solo 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ó la tarea por última vez. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.
delete_time timestamp Hora a la que el usuario eliminó una tarea. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.

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 de tabla: esta tabla del sistema se encuentra en system.lakeflow.job_run_timeline.

Nombre de la columna Tipo de datos Descripción
account_id string Id. de la cuenta a la que pertenece este trabajo.
workspace_id string Id. del área de trabajo a la que pertenece este trabajo.
job_id string El id. de trabajo. Esta clave solo es única en una sola área de trabajo.
run_id string Id. de la ejecución del trabajo.
period_start_time timestamp Hora de inicio de la ejecución o del período de tiempo. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.
period_end_time timestamp Hora de finalización de la ejecución o del período de tiempo. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC.
trigger_type string Tipo de desencadenador de una ejecución. Para conocer los valores posibles, consulte Valores de tipo de desencadenador.
run_type string Tipo de la ejecución del trabajo. Para conocer los valores posibles, consulte Valores de tipo de ejecución.
run_name string El nombre de ejecución proporcionado por el usuario se ha asociado con esta ejecución de trabajo.
compute_ids array Matriz que contiene los identificadores de proceso para la ejecución del trabajo primario. Se usa para identificar el clúster usado por SUBMIT_RUN los tipos de ejecución y WORKFLOW_RUN . Para obtener otra información de proceso, consulte la job_task_run_timeline tabla . No se rellena para las filas emitidas antes de finales de agosto de 2024.
result_state string Resultado de la ejecución del trabajo. Para ver los valores posibles, consulte Valores de estado del 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 se rellena para las filas emitidas antes de finales de agosto de 2024.
job_parameters map Parámetros de nivel de trabajo que se usan en la ejecución del trabajo. No se rellena para las filas emitidas antes de finales de agosto de 2024.

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:

Valores de estado del resultado

Los valores posibles para la columna result_state son:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

Valores de código de finalización

Los valores posibles para la columna termination_code son:

  • SUCCESS
  • CANCELLED
  • SKIPPED
  • DRIVER_ERROR
  • CLUSTER_ERROR
  • REPOSITORY_CHECKOUT_FAILED
  • INVALID_CLUSTER_REQUEST
  • WORKSPACE_RUN_LIMIT_EXCEEDED
  • FEATURE_DISABLED
  • CLUSTER_REQUEST_LIMIT_EXCEEDED
  • STORAGE_ACCESS_ERROR
  • RUN_EXECUTION_ERROR
  • UNAUTHORIZED_ERROR
  • LIBRARY_INSTALLATION_ERROR
  • MAX_CONCURRENT_RUNS_EXCEEDED
  • MAX_SPARK_CONTEXTS_EXCEEDED
  • RESOURCE_NOT_FOUND
  • INVALID_RUN_CONFIGURATION
  • CLOUD_FAILURE
  • MAX_JOB_QUEUE_SIZE_EXCEEDED

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: esta tabla del sistema se encuentra en system.lakeflow.job_task_run_timeline.

Nombre de la columna Tipo de datos Descripción
account_id string Id. de la cuenta a la que pertenece este trabajo.
workspace_id string Id. del área de trabajo a la que pertenece este trabajo.
job_id string El id. de trabajo. Esta clave solo es única en una sola área de trabajo.
run_id string Identificador de la ejecución de la tarea.
job_run_id string Id. de la ejecución del trabajo. No se rellena para las filas emitidas antes de finales de agosto de 2024.
parent_run_id string Id. del elemento primario. No se rellena 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 representa la hora 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 representa la hora UTC.
task_key string Clave de referencia de una tarea de un trabajo. Esta clave solo es única en un solo trabajo.
compute_ids array Matriz que contiene los identificadores de proceso utilizados por la tarea de trabajo.
result_state string Resultado de la ejecución de la tarea de trabajo.
termination_code string Código de finalización de la ejecución de la tarea. Vea los valores posibles después de esta tabla. No se rellena para las filas emitidas antes de finales de agosto de 2024.

Los valores posibles para la columna result_state son:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

Los valores posibles para la columna termination_code son:

  • SUCCESS
  • CANCELLED
  • SKIPPED
  • DRIVER_ERROR
  • CLUSTER_ERROR
  • REPOSITORY_CHECKOUT_FAILED
  • INVALID_CLUSTER_REQUEST
  • WORKSPACE_RUN_LIMIT_EXCEEDED
  • FEATURE_DISABLED
  • CLUSTER_REQUEST_LIMIT_EXCEEDED
  • STORAGE_ACCESS_ERROR
  • RUN_EXECUTION_ERROR
  • UNAUTHORIZED_ERROR
  • LIBRARY_INSTALLATION_ERROR
  • MAX_CONCURRENT_RUNS_EXCEEDED
  • MAX_SPARK_CONTEXTS_EXCEEDED
  • RESOURCE_NOT_FOUND
  • INVALID_RUN_CONFIGURATION
  • CLOUD_FAILURE
  • MAX_JOB_QUEUE_SIZE_EXCEEDED

Consultas de ejemplo

En esta sección se incluyen consultas de ejemplo que puede usar para sacar el máximo partido a las tablas de LakeFlow.

Obtención de la versión más reciente de los trabajos

Dado que las tablas jobs y job_tasks son tablas de dimensiones de variación lenta, se crea un nuevo registro cada vez que se realiza un cambio. Para obtener la versión más reciente de un trabajo, puede ordenar por la columna change_time.

SELECT
  *,
  ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
  system.lakeflow.jobs QUALIFY rn=1

Recuento diario de los trabajos por área de trabajo

Esta consulta obtiene el recuento diario de trabajos por área de trabajo de los últimos 7 días:

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

Distribución diaria del estado de trabajo por área de trabajo

Esta consulta devuelve el recuento diario de trabajos por área de trabajo de los últimos 7 días, distribuido por el resultado de la ejecución del trabajo. La consulta quita los registros en los que los trabajos estén en estado pendiente o en ejecución.

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

Introducción a los trabajos de ejecución más prolongada

Esta consulta devuelve el tiempo medio de ejecución de los trabajos, medido en segundos. Los registros se organizan por trabajo. Las columnas de límite de percentil 90 y 95 muestran las longitudes medias de las ejecuciones más largas del trabajo.

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
),
most_recent_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
    t1.workspace_id,
    t1.job_id,
    first(t2.name, TRUE) as name,
    COUNT(DISTINCT t1.run_id) as runs,
    MEAN(t1.duration) as mean_seconds,
    AVG(t1.duration) as avg_seconds,
    PERCENTILE(t1.duration, 0.9) as p90_seconds,
    PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
    job_run_duration t1
    LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100

Tiempo de ejecución del trabajo para los trabajos ejecutados a través de runSubmit (es decir, Airflow)

Esta consulta proporciona un tiempo de ejecución histórico para un trabajo específico basado en el parámetro run_name. Para que la consulta funcione, debe establecer el valor run_name.

También puede editar la duración del tiempo de análisis si actualiza la cantidad de días en la sección INTERVAL 60 DAYS.

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

Análisis de ejecución de trabajos

Esta consulta proporciona un tiempo de ejecución histórico para un trabajo específico. Para que la consulta funcione, debe establecer los valores workspace_id y job_id.

También puede editar la duración del tiempo de análisis si actualiza la cantidad de días en la sección INTERVAL 60 DAYS.

with job_run_duration as (
    SELECT
        workspace_id,
        job_id,
        run_id,
        min(period_start_time) as run_start,
        max(period_start_time) as run_end,
        CAST(SUM(period_end_time - period_start_time) AS LONG) as duration,
        FIRST(result_state, TRUE) as result_state
    FROM
        system.lakeflow.job_run_timeline
    WHERE
      period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
      AND workspace_id={workspace_id}
      AND job_id={job_id}
    GROUP BY ALL
    ORDER BY run_start DESC
),
most_recent_jobs as (
  SELECT
    *,
    ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
  FROM
    system.lakeflow.jobs QUALIFY rn=1
)
SELECT
    t1.workspace_id,
    t1.job_id,
    t2.name,
    t1.run_id,
    t1.run_start,
    t1.run_end,
    t1.duration,
    t1.result_state
FROM job_run_duration t1
    LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)

Trabajos que se ejecutan en un proceso multiuso

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;

Ejecuciones de trabajos reintentados

Esta consulta recopila una lista de ejecuciones de trabajos reintentados con el número de reintentos de cada ejecución.

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;