Auftragssystemtabellenreferenz
Wichtig
Dieses Feature befindet sich in der Public Preview. Das Schema muss aktiviert sein, damit es im system
-Katalog sichtbar ist. 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.
Die Tabelle verwendet das folgende Schema:
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. |
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 job_tasks
-Tabelle ist eine sich langsam ändernde Dimensionstabelle. Wenn eine Zeile geändert wird, wird eine neue Zeile ausgegeben, die logisch die vorherige Zeile ersetzt.
Die Tabelle verwendet das folgende Schema:
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 job_run_timeline
Tabelle ist unveränderlich und zum Zeitpunkt der Produktion vollständig.
Die Tabelle verwendet das folgende Schema:
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. |
result_state |
Zeichenfolge | Das Ergebnis des Auftragsausführung. Weitere Informationen finden Sie in den möglichen Werten unter dieser Tabelle. |
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 trigger_type
Spalte sind:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Auftragsaufgabe: Zeitachsentabellenschema ausführen
Die job_task_run_timeline
Tabelle ist unveränderlich und zum Zeitpunkt der Produktion vollständig.
Die Tabelle verwendet das folgende Schema:
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. |
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 mit den IDs des nicht serverlosen Jobs Compute und nicht der serverlosen SQL-Lagerhäuser, die von der Auftragsaufgabe verwendet werden. |
result_state |
Zeichenfolge | Das Ergebnis der Ausführung der Auftragsaufgabe. |
Die möglichen Werte für die result_state
Spalte sind:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
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
- 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
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;