Auftragssystemtabellenreferenz
Wichtig
Diese Systemtabelle befindet sich in der Public Preview. Um auf die Tabelle zuzugreifen, muss das Schema in Ihrem system
Katalog aktiviert sein. Weitere Informationen finden Sie unter Aktivieren des Systemtabellenschemas.
Hinweis
Das Schema lakeflow
wurde früher als workflow
bezeichnet. Der Inhalt beider Schemas ist identisch. Damit das lakeflow
-Schema sichtbar wird, muss es separat aktiviert werden.
Dieser Artikel enthält eine Referenz zur Verwendung der lakeflow
-Systemtabellen zum Überwachen von Aufträgen in Ihrem Konto. Diese Tabellen enthalten Datensätze aus allen Arbeitsbereichen in Ihrem Konto, die in derselben Cloudregion bereitgestellt wurden. Um Datensätze aus anderen Regionen anzuzeigen, müssen Sie die Tabellen aus einem Arbeitsbereich anzeigen, der in der betreffenden Region bereitgestellt worden ist.
system.lakeflow
muss von einem Kontoadministrator aktiviert werden. Sie können es mithilfe der SystemSchemas-API aktivieren.
Beispiele für die Verwendung dieser Tabellen für die Kostenüberwachung von Arbeitsplätzen und Integrität finden Sie unter Überwachen von Auftragskosten mit Systemtabellen.
Verfügbare Auftragstabellen
Alle auftragsbezogenen Systemtabellen befinden sich im system.lakeflow
Schema. Derzeit hostet das Schema vier Tabellen:
jobs
: Verfolgt die Erstellung, Löschung und grundlegende Informationen von Aufträgen.job_tasks
: Verfolgt die Erstellung, Löschung und grundlegende Informationen zu Auftragsaufgaben.job_run_timeline
: Zeichnet Anfang, Ende und resultierenden Status von Auftragsausführungen auf.job_task_run_timeline
: Zeichnet Anfang, Ende und resultierenden Status von Auftragsaufgaben auf.
Auftragstabellenschema
Die jobs
-Tabelle ist eine sich langsam ändernde Dimensionstabelle. Wenn eine Zeile geändert wird, wird eine neue Zeile ausgegeben, die logisch die vorherige Zeile ersetzt.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.lakeflow.jobs
.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
account_id |
string | Die ID des Kontos, zu dem dieser Auftrag gehört. |
workspace_id |
Zeichenfolge | Die ID des Arbeitsbereichs, zu dem dieser Auftrag gehört. |
job_id |
Zeichenfolge | Der ID der Stelle. Dieser Schlüssel ist nur innerhalb eines einzelnen Arbeitsbereichs eindeutig. |
name |
Zeichenfolge | Der vom Benutzer angegebene Name des Auftrags. |
description |
Zeichenfolge | Die vom Benutzer bereitgestellte Beschreibung des Auftrags. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
creator_id |
Zeichenfolge | Die ID des Prinzipals, der den Auftrag erstellt hat. |
tags |
Zeichenfolge | Die vom Benutzer bereitgestellten benutzerdefinierten Tags, die diesem Auftrag zugeordnet sind. |
change_time |
Zeitstempel | Der Zeitpunkt, an dem der Auftrag zuletzt geändert wurde. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
delete_time |
Zeitstempel | Der Zeitpunkt, zu dem der Auftrag vom Benutzer gelöscht wurde. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
run_as |
Zeichenfolge | Die ID des Benutzer- oder Dienstprinzipals, dessen Berechtigungen für die Ausführung des Auftrags verwendet werden. |
Auftragsaufgabentabellenschema
Die Tabelle "Auftragsaufgaben" ist eine langsam ändernde Dimensionstabelle. Wenn eine Zeile geändert wird, wird eine neue Zeile ausgegeben, die logisch die vorherige Zeile ersetzt.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.lakeflow.job_tasks
.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
account_id |
string | Die ID des Kontos, zu dem dieser Auftrag gehört. |
workspace_id |
Zeichenfolge | Die ID des Arbeitsbereichs, zu dem dieser Auftrag gehört. |
job_id |
Zeichenfolge | Der ID der Stelle. Dieser Schlüssel ist nur innerhalb eines einzelnen Arbeitsbereichs eindeutig. |
task_key |
Zeichenfolge | Der Referenzschlüssel für einen Vorgang in einem Auftrag. Dieser Schlüssel ist nur innerhalb eines einzelnen Auftrags eindeutig. |
depends_on_keys |
array | Die Aufgabenschlüssel aller vorgelagerten Abhängigkeiten dieser Aufgabe. |
change_time |
Zeitstempel | Der Zeitpunkt, an dem die Aufgabe zuletzt geändert wurde. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
delete_time |
Zeitstempel | Der Zeitpunkt, zu dem eine Aufgabe vom Benutzer gelöscht wurde. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
Zeitachsentabellenschema für Auftragsausführung
Die Zeitachsentabelle für die Auftragsausführung ist unveränderlich und zum Zeitpunkt der Produktion abgeschlossen.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.lakeflow.job_run_timeline
.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
account_id |
string | Die ID des Kontos, zu dem dieser Auftrag gehört. |
workspace_id |
Zeichenfolge | Die ID des Arbeitsbereichs, zu dem dieser Auftrag gehört. |
job_id |
Zeichenfolge | Der ID der Stelle. Dieser Schlüssel ist nur innerhalb eines einzelnen Arbeitsbereichs eindeutig. |
run_id |
Zeichenfolge | Die ID des Auftragsausführung. |
period_start_time |
Zeitstempel | Die Startzeit für die Ausführung oder für den Zeitraum. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
period_end_time |
Zeitstempel | Die Endzeit für die Ausführung oder für den Zeitraum. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
trigger_type |
Zeichenfolge | Der Triggertyp, der eine Ausführung auslösen kann. Mögliche Werte finden Sie unter Triggertypwerte |
run_type |
Zeichenfolge | Der Typ der Auftragsausführung. Mögliche Werte finden Sie unter Ausführungstypwerte. |
run_name |
Zeichenfolge | Der vom Benutzer bereitgestellte Ausführungsname, der dieser Auftragsausführung zugeordnet ist. |
compute_ids |
array | Array mit den Compute-IDs für den übergeordneten Auftrag wird ausgeführt. Wird verwendet, um Cluster zu identifizieren, der von SUBMIT_RUN typen verwendet und WORKFLOW_RUN ausgeführt wird. Weitere Berechnungsinformationen finden Sie in der job_task_run_timeline Tabelle. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
result_state |
Zeichenfolge | Das Ergebnis des Auftragsausführung. Mögliche Werte finden Sie unter Ergebnisstatuswerte. |
termination_code |
Zeichenfolge | Der Beendigungscode der Auftragsausführung. Mögliche Werte finden Sie unter Beendigungscodewerte. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
job_parameters |
Karte | Die Parameter auf Auftragsebene, die in der Auftragsausführung verwendet werden. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
Triggertypwerte
Die möglichen Werte für die trigger_type
Spalte sind:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Ausführungstypwerte
Die möglichen Werte für die run_type
Spalte sind:
JOB_RUN
SUBMIT_RUN
: Einmalige Ausführung, die über POST /api/2.1/jobs/runs/submit erstellt wurde.WORKFLOW_RUN
: Auftrag wird vom Notebookworkflow initiiert.
Ergebnisstatuswerte
Die möglichen Werte für die result_state
Spalte sind:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Beendigungscodewerte
Die möglichen Werte für die termination_code
Spalte sind:
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
Auftragsaufgabe: Zeitachsentabellenschema ausführen
Die Zeitachsentabelle für die Auftragsausführung ist unveränderlich und zum Zeitpunkt der Produktion abgeschlossen.
Tabellenpfad: Diese Systemtabelle befindet sich unter system.lakeflow.job_task_run_timeline
.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
account_id |
string | Die ID des Kontos, zu dem dieser Auftrag gehört. |
workspace_id |
Zeichenfolge | Die ID des Arbeitsbereichs, zu dem dieser Auftrag gehört. |
job_id |
Zeichenfolge | Der ID der Stelle. Dieser Schlüssel ist nur innerhalb eines einzelnen Arbeitsbereichs eindeutig. |
run_id |
Zeichenfolge | Die ID der Aufgabenausführung. |
job_run_id |
Zeichenfolge | Die ID des Auftragsausführung. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
parent_run_id |
Zeichenfolge | Die ID der übergeordneten Ausführung. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
period_start_time |
Zeitstempel | Die Startzeit für die Aufgabe oder für den Zeitraum. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
period_end_time |
Zeitstempel | Die Endzeit für die Aufgabe oder für den Zeitraum. Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. |
task_key |
Zeichenfolge | Der Referenzschlüssel für einen Vorgang in einem Auftrag. Dieser Schlüssel ist nur innerhalb eines einzelnen Auftrags eindeutig. |
compute_ids |
array | Array, das die IDs der Berechnung enthält, die von der Auftragsaufgabe verwendet werden. |
result_state |
Zeichenfolge | Das Ergebnis der Ausführung der Auftragsaufgabe. |
termination_code |
Zeichenfolge | Der Beendigungscode der Aufgabenausführung. Weitere Informationen finden Sie in den möglichen Werten unter dieser Tabelle. Nicht für Zeilen ausgefüllt, die vor Ende August 2024 ausgegeben wurden. |
Die möglichen Werte für die result_state
Spalte sind:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Die möglichen Werte für die termination_code
Spalte sind:
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
Beispielabfragen
Dieser Abschnitt enthält Beispielabfragen, mit deren Hilfe Sie die LakeFlow-Tabellen optimal nutzen können.
- Abrufen der neuesten Version von Aufträgen
- Tägliche Auftragsanzahl nach Arbeitsbereich
- Tägliche Auftragsstatusverteilung nach Arbeitsbereich
- Übersicht über am Längsten ausgeführte Aufträge
- Ausführungszeit des Auftrags für Aufträge, die über runSubmit ausgeführt werden (d. h. Lufströmung)
- Auftragsausführungsanalyse
- Aufträge, die auf All-Purpose Compute ausgeführt werden
- Wiederholter Auftrag wird ausgeführt
Abrufen der neuesten Version von Aufträgen
Da die jobs
und job_tasks
Tabellen langsam geändert werden, wird jedes Mal, wenn eine Änderung vorgenommen wird, ein neuer Datensatz erstellt. Um die neueste Version eines Auftrags zu erhalten, können Sie nach der change_time
Spalte sortieren.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Tägliche Auftragsanzahl nach Arbeitsbereich
Diese Abfrage ruft die tägliche Auftragsanzahl nach Arbeitsbereich für die letzten 7 Tage ab:
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
Tägliche Auftragsstatusverteilung nach Arbeitsbereich
Diese Abfrage gibt die tägliche Auftragsanzahl nach Arbeitsbereich für die letzten 7 Tage zurück, verteilt durch das Ergebnis der Auftragsausführung. Die Abfrage entfernt alle Datensätze, bei denen sich die Aufträge in einem ausstehenden oder ausgeführten Zustand befinden.
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
Übersicht über am Längsten ausgeführte Aufträge
Diese Abfrage gibt die durchschnittliche Ausführungszeit des Auftrags zurück, gemessen in Sekunden. Die Datensätze werden nach Auftrag organisiert. Eine Top-90-Perzentil- und eine 95-Perzentil-Spalte zeigen die durchschnittliche Länge der längsten Ausführungen des Jobs.
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
Ausführungszeit des Auftrags für Aufträge, die über runSubmit ausgeführt werden (d. h. Lufströmung)
Diese Abfrage stellt eine verlaufsbezogene Laufzeit für einen bestimmten Auftrag basierend auf dem run_name
-Parameter bereit. Damit die Abfrage funktioniert, müssen Sie run_name
festlegen.
Sie können auch die Dauer der Analyse bearbeiten, indem Sie die Anzahl der Tage im INTERVAL 60 DAYS
Abschnitt aktualisieren.
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
Auftragsausführungsanalyse
Diese Abfrage stellt eine verlaufsbezogene Laufzeit für einen bestimmten Auftrag bereit. Damit die Abfrage funktioniert, müssen Sie ein workspace_id
und job_id
einstellen.
Sie können auch die Dauer der Analyse bearbeiten, indem Sie die Anzahl der Tage im INTERVAL 60 DAYS
Abschnitt aktualisieren.
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)
Aufträge, die auf All-Purpose Compute ausgeführt werden
Diese Abfrage wird mit der compute.clusters
Systemtabelle verknüpft, um zuletzt ausgeführte Aufträge zurückzugeben, die auf All-Purpose Compute ausgeführt werden, anstatt auf Jobs Compute.
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;
Wiederholter Auftrag wird ausgeführt
Diese Abfrage sammelt eine Liste der wiederholten Auftragsausführungen mit der Anzahl der Wiederholungen für jede Ausführung.
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;