Freigeben über


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:

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

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;