Udostępnij za pośrednictwem


Dokumentacja tabeli systemu zadań

Ważne

Ta tabela systemowa jest dostępna w publicznej wersji zapoznawczej. Aby uzyskać dostęp do tabeli, schemat musi być włączony w system katalogu. Aby uzyskać więcej informacji, zobacz Włączanie schematów tabel systemowych.

Uwaga

Schemat lakeflow był wcześniej znany jako workflow. Zawartość obu schematów jest identyczna. Aby schemat był lakeflow widoczny, należy włączyć go oddzielnie.

Ten artykuł zawiera informacje dotyczące używania lakeflow tabel systemowych do monitorowania zadań na twoim koncie. Te tabele obejmują rekordy ze wszystkich obszarów roboczych na koncie wdrożonym w tym samym regionie chmury. Aby wyświetlić rekordy z innego regionu, musisz wyświetlić tabele z obszaru roboczego wdrożonego w tym regionie.

system.lakeflow musi być włączony przez administratora konta. Można ją włączyć przy użyciu interfejsu API SystemSchemas.

Aby zapoznać się z przykładami użycia tych tabel na potrzeby obserwowania kosztów zadań i kondycji, zobacz Monitorowanie kosztów zadań przy użyciu tabel systemowych.

Dostępne tabele zadań

Wszystkie tabele systemowe związane z zadaniami działają w schemacie system.lakeflow . Obecnie schemat hostuje cztery tabele:

  • jobs: śledzi tworzenie, usuwanie i podstawowe informacje o zadaniach.
  • job_tasks: śledzi tworzenie, usuwanie i podstawowe informacje o zadaniach zadań.
  • job_run_timeline: rejestruje stan rozpoczęcia, zakończenia i wynikowego uruchomienia zadania.
  • job_task_run_timeline: rejestruje stan rozpoczęcia, zakończenia i wynikowego zadania podrzędnego.

Schemat tabeli zadań

Tabela jobs jest powoli zmieniającym się tabelą wymiarów. Gdy wiersz ulegnie zmianie, nowy wiersz jest emitowany, logicznie zastępując poprzedni.

Tabela używa następującego schematu:

Nazwa kolumny Typ danych opis
account_id string Identyfikator konta, do którego należy to zadanie.
workspace_id string Identyfikator obszaru roboczego, do którego należy to zadanie.
job_id string Identyfikator zadania. Ten klucz jest unikatowy tylko w ramach jednego obszaru roboczego.
name string Podana przez użytkownika nazwa zadania.
description string Podany przez użytkownika opis zadania. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.
creator_id string Identyfikator podmiotu zabezpieczeń, który utworzył zadanie.
tags string Tagi niestandardowe dostarczone przez użytkownika skojarzone z tym zadaniem.
change_time timestamp Czas ostatniej modyfikacji zadania. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
delete_time timestamp Godzina usunięcia zadania przez użytkownika. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
run_as string Identyfikator użytkownika lub jednostki usługi, którego uprawnienia są używane do uruchomienia zadania.

Schemat tabeli zadań zadania

Tabela job_tasks jest powoli zmieniającym się tabelą wymiarów. Gdy wiersz ulegnie zmianie, nowy wiersz jest emitowany, logicznie zastępując poprzedni.

Tabela używa następującego schematu:

Nazwa kolumny Typ danych opis
account_id string Identyfikator konta, do którego należy to zadanie.
workspace_id string Identyfikator obszaru roboczego, do którego należy to zadanie.
job_id string Identyfikator zadania. Ten klucz jest unikatowy tylko w ramach jednego obszaru roboczego.
task_key string Klucz referencyjny zadania w zadaniu. Ten klucz jest unikatowy tylko w ramach jednego zadania.
depends_on_keys tablica Klucze zadań wszystkich nadrzędnych zależności tego zadania.
change_time timestamp Czas ostatniej modyfikacji zadania. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
delete_time timestamp Godzina usunięcia zadania przez użytkownika. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.

Schemat tabeli osi czasu uruchamiania zadania

Tabela job_run_timeline jest niezmienna i kompletna w momencie jego produkcji.

Tabela używa następującego schematu:

Nazwa kolumny Typ danych opis
account_id string Identyfikator konta, do którego należy to zadanie.
workspace_id string Identyfikator obszaru roboczego, do którego należy to zadanie.
job_id string Identyfikator zadania. Ten klucz jest unikatowy tylko w ramach jednego obszaru roboczego.
run_id string Identyfikator przebiegu zadania.
period_start_time timestamp Godzina rozpoczęcia przebiegu lub okresu. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
period_end_time timestamp Godzina zakończenia przebiegu lub okresu. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
trigger_type string Typ wyzwalacza, który może uruchamiać przebieg. Aby uzyskać informacje o możliwych wartościach, zobacz Wyzwalacz wartości typu
run_type string Typ uruchomienia zadania. Aby uzyskać informacje o możliwych wartościach, zobacz Run type values (Uruchamianie wartości typu).
run_name string Podana przez użytkownika nazwa przebiegu jest assosiated z tym uruchomieniem zadania.
compute_ids tablica Tablica zawierająca identyfikatory nieserwerowych zadań obliczeniowych i nieserwerowych magazynów SQL używanych przez uruchomienie zadania nadrzędnego. Aby uzyskać informacje o obliczeniach specyficznych dla zadania, zapoznaj się z tabelą job_task_run_timeline . Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.
result_state string Wynik uruchomienia zadania. Aby uzyskać informacje o możliwych wartościach, zobacz Wartości stanu wyników.
termination_code string Kod zakończenia uruchomienia zadania. Aby uzyskać możliwe wartości, zobacz Kończenie wartości kodu. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.
job_parameters map Parametry na poziomie zadania używane w przebiegu zadania. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.

Wartości typu wyzwalacza

Możliwe wartości dla kolumny trigger_type to:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

Wartości typu przebiegu

Możliwe wartości dla kolumny run_type to:

Wartości stanu wyniku

Możliwe wartości dla kolumny result_state to:

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

Wartości kodu zakończenia

Możliwe wartości dla kolumny termination_code to:

  • 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

Schemat tabeli osi czasu uruchamiania zadania zadania

Tabela job_task_run_timeline jest niezmienna i kompletna w momencie jego produkcji.

Tabela używa następującego schematu:

Nazwa kolumny Typ danych opis
account_id string Identyfikator konta, do którego należy to zadanie.
workspace_id string Identyfikator obszaru roboczego, do którego należy to zadanie.
job_id string Identyfikator zadania. Ten klucz jest unikatowy tylko w ramach jednego obszaru roboczego.
run_id string Identyfikator przebiegu zadania.
job_run_id string Identyfikator przebiegu zadania. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.
parent_run_id string Identyfikator uruchomienia nadrzędnego. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.
period_start_time timestamp Godzina rozpoczęcia zadania lub okresu. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
period_end_time timestamp Godzina zakończenia zadania lub okresu. Informacje o strefie czasowej są rejestrowane na końcu wartości reprezentującej +00:00 czas UTC.
task_key string Klucz referencyjny zadania w zadaniu. Ten klucz jest unikatowy tylko w ramach jednego zadania.
compute_ids tablica Tablica zawierająca identyfikatory nieserwerowych zadań obliczeniowych i nieserwerowych magazynów SQL używanych przez zadanie zadania.
result_state string Wynik uruchomienia zadania podrzędnego.
termination_code string Kod zakończenia przebiegu zadania. Zapoznaj się z możliwymi wartościami poniżej tej tabeli. Nie wypełniane dla wierszy emitowanych przed końcem sierpnia 2024 r.

Możliwe wartości dla kolumny result_state to:

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

Możliwe wartości dla kolumny termination_code to:

  • 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

Przykładowe zapytania

Ta sekcja zawiera przykładowe zapytania, których można użyć, aby jak najlepiej wykorzystać tabele typu lakeflow.

Pobieranie najnowszej wersji zadań

jobs Ponieważ tabele i job_tasks powoli zmieniają tabele wymiarów, nowy rekord jest tworzony za każdym razem, gdy zostanie wprowadzona zmiana. Aby uzyskać najnowszą wersję zadania, możesz zamówić według kolumny 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

Liczba codziennych zadań według obszaru roboczego

To zapytanie pobiera dzienną liczbę zadań według obszaru roboczego w ciągu ostatnich 7 dni:

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

Rozkład stanu codziennego zadania według obszaru roboczego

To zapytanie zwraca dzienną liczbę zadań według obszaru roboczego w ciągu ostatnich 7 dni rozdzielonych wynikiem uruchomienia zadania. Zapytanie usuwa wszystkie rekordy, w których zadania znajdują się w stanie oczekiwania lub uruchomienia.

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

Omówienie najdłużej uruchomionych zadań

To zapytanie zwraca średni czas uruchamiania zadania mierzony w sekundach. Rekordy są uporządkowane według zadania. W górnej 90 i 95 kolumnie percentylu przedstawiono średnie długości najdłuższych przebiegów zadania.

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

Czas wykonywania zadania dla zadań wykonywanych za pośrednictwem elementu runSubmit (tj. Przepływ powietrza)

To zapytanie udostępnia historyczne środowisko uruchomieniowe dla określonego zadania na podstawie parametru run_name . Aby zapytanie działało, należy ustawić wartość run_name.

Możesz również edytować czas analizy, aktualizując liczbę dni w INTERVAL 60 DAYS sekcji.

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

Analiza przebiegu zadania

To zapytanie udostępnia historyczne środowisko uruchomieniowe dla określonego zadania. Aby zapytanie działało, należy ustawić element workspace_id i job_id.

Możesz również edytować czas analizy, aktualizując liczbę dni w INTERVAL 60 DAYS sekcji.

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)

Zadania uruchomione w obliczeniach wszystkich celów

To zapytanie łączy się z tabelą systemową compute.clusters w celu zwrócenia ostatnich zadań, które są uruchomione w obliczeniach wszystkich celów zamiast obliczeń zadań.

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;

Ponowione uruchomienia zadania

To zapytanie zbiera listę ponownych uruchomień zadania z liczbą ponownych prób dla każdego przebiegu.

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;