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:
JOB_RUN
SUBMIT_RUN
: Jednorazowe uruchomienie utworzone za pośrednictwem polecenia POST /api/2.1/jobs/runs/submit.WORKFLOW_RUN
: Uruchomienie zadania zainicjowane z przepływu pracy notesu.
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ń
- Liczba codziennych zadań według obszaru roboczego
- Rozkład stanu codziennego zadania według obszaru roboczego
- Omówienie najdłużej uruchomionych zadań
- Czas wykonywania zadania dla zadań wykonywanych za pośrednictwem elementu runSubmit (tj. Przepływ powietrza)
- Analiza przebiegu zadania
- Zadania uruchomione w obliczeniach wszystkich celów
- Ponowione uruchomienia zadania
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;