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:
JOB_RUN
SUBMIT_RUN
: ejecución única creada mediante POST /api/2.1/jobs/runs/submit.WORKFLOW_RUN
: ejecución del trabajo iniciada desde el flujo de trabajo del cuaderno.
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
- Recuento diario de los trabajos por área de trabajo
- Distribución diaria del estado de trabajo por área de trabajo
- Introducción a los trabajos de ejecución más prolongada
- Tiempo de ejecución del trabajo para los trabajos ejecutados a través de runSubmit (es decir, Airflow)
- Análisis de ejecución de trabajos
- Trabajos que se ejecutan en un proceso multiuso
- Ejecuciones de trabajos reintentados
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;