Systemtabellreferens för jobb
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion. Schemat måste vara aktiverat för att visas i katalogen system
. Mer information finns i Aktivera systemtabellscheman
Kommentar
Schemat lakeflow
kallades workflow
tidigare . Innehållet i båda schemana är identiskt. Om du vill göra lakeflow
schemat synligt måste du aktivera det separat.
Den här artikeln innehåller en referens för hur du använder lakeflow
systemtabellerna för att övervaka jobb i ditt konto. Dessa tabeller innehåller poster från alla arbetsytor i ditt konto som distribuerats i samma molnregion. Om du vill se poster från en annan region måste du visa tabellerna från en arbetsyta som distribuerats i den regionen.
system.lakeflow
måste aktiveras av en kontoadministratör. Du kan aktivera den med hjälp av SystemSchemas-API:et.
Exempel på hur du använder dessa tabeller för jobbkostnader och hälsoobservabilitet finns i Övervaka jobbkostnader med systemtabeller.
Tillgängliga jobbtabeller
Alla jobbrelaterade systemtabeller finns i system.lakeflow
schemat. Schemat är för närvarande värd för fyra tabeller:
jobs
: Spårar skapande, borttagning och grundläggande information om jobb.job_tasks
: Spårar skapande, borttagning och grundläggande information om jobbuppgifter.job_run_timeline
: Registrerar start, slut och resulterande tillstånd för jobbkörningar.job_task_run_timeline
: Registrerar start, slut och resulterande tillstånd för jobbaktiviteter.
Schema för jobbtabell
Tabellen jobs
är en långsamt föränderlig dimensionstabell. När en rad ändras genereras en ny rad, vilket logiskt ersätter den föregående.
Tabellen använder följande schema:
Kolumnnamn | Datatyp | beskrivning |
---|---|---|
account_id |
sträng | ID:t för det konto som jobbet tillhör. |
workspace_id |
sträng | ID:t för arbetsytan som det här jobbet tillhör. |
job_id |
sträng | Jobbets ID. Den här nyckeln är bara unik på en enda arbetsyta. |
name |
sträng | Det angivna namnet på jobbet. |
creator_id |
sträng | ID:t för huvudkontot som skapade jobbet. |
tags |
sträng | De anpassade taggar som har angetts av användaren som är associerade med det här jobbet. |
change_time |
timestamp | Den tid då jobbet senast ändrades. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
delete_time |
timestamp | Den tid då jobbet togs bort av användaren. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
run_as |
sträng | ID för användaren eller tjänstens huvudnamn vars behörigheter används för jobbkörningen. |
Schema för jobbaktivitetstabell
Tabellen job_tasks
är en långsamt föränderlig dimensionstabell. När en rad ändras genereras en ny rad, vilket logiskt ersätter den föregående.
Tabellen använder följande schema:
Kolumnnamn | Datatyp | beskrivning |
---|---|---|
account_id |
sträng | ID:t för det konto som jobbet tillhör. |
workspace_id |
sträng | ID:t för arbetsytan som det här jobbet tillhör. |
job_id |
sträng | Jobbets ID. Den här nyckeln är bara unik på en enda arbetsyta. |
task_key |
sträng | Referensnyckeln för en uppgift i ett jobb. Den här nyckeln är bara unik i ett enda jobb. |
depends_on_keys |
matris | Aktivitetsnycklarna för alla överordnade beroenden för den här aktiviteten. |
change_time |
timestamp | Den tid då aktiviteten senast ändrades. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
delete_time |
timestamp | Den tid då en uppgift togs bort av användaren. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
Schema för tidslinje för jobbkörning
Tabellen job_run_timeline
är oföränderlig och fullständig när den skapas.
Tabellen använder följande schema:
Kolumnnamn | Datatyp | beskrivning |
---|---|---|
account_id |
sträng | ID:t för det konto som jobbet tillhör. |
workspace_id |
sträng | ID:t för arbetsytan som det här jobbet tillhör. |
job_id |
sträng | Jobbets ID. Den här nyckeln är bara unik på en enda arbetsyta. |
run_id |
sträng | ID:t för jobbkörningen. |
period_start_time |
timestamp | Starttiden för körningen eller för tidsperioden. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
period_end_time |
timestamp | Sluttiden för körningen eller för tidsperioden. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
trigger_type |
sträng | Den typ av utlösare som kan utlösa en körning. |
result_state |
sträng | Resultatet av jobbkörningen. Se möjliga värden under den här tabellen. |
Möjliga värden för result_state
kolumnen är:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Möjliga värden för trigger_type
kolumnen är:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Schema för schema för tidslinje för jobbaktivitetskörning
Tabellen job_task_run_timeline
är oföränderlig och fullständig när den skapas.
Tabellen använder följande schema:
Kolumnnamn | Datatyp | beskrivning |
---|---|---|
account_id |
sträng | ID:t för det konto som jobbet tillhör. |
workspace_id |
sträng | ID:t för arbetsytan som det här jobbet tillhör. |
job_id |
sträng | Jobbets ID. Den här nyckeln är bara unik på en enda arbetsyta. |
run_id |
sträng | ID:t för aktivitetskörningen. |
period_start_time |
timestamp | Starttiden för aktiviteten eller för tidsperioden. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
period_end_time |
timestamp | Sluttiden för aktiviteten eller för tidsperioden. Tidszonsinformation registreras i slutet av värdet där +00:00 UTC representeras. |
task_key |
sträng | Referensnyckeln för en uppgift i ett jobb. Den här nyckeln är bara unik i ett enda jobb. |
compute_ids |
matris | Matris som innehåller ID:erna för beräkning av icke-serverlösa jobb och icke-serverlösa SQL-lager som används av jobbaktiviteten. |
result_state |
sträng | Resultatet av jobbaktivitetskörningen. |
Möjliga värden för result_state
kolumnen är:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Exempelfrågor
Det här avsnittet innehåller exempelfrågor som du kan använda för att få ut mesta möjliga av lakeflow-tabellerna.
- Hämta den senaste versionen av jobb
- Antal dagliga jobb per arbetsyta
- Daglig jobbstatusfördelning per arbetsyta
- Översikt över jobb som körs längst
- Analys av jobbkörning
- Jobb som körs på all-purpose compute
- Jobbkörningar som har gjorts om
Hämta den senaste versionen av jobb
Eftersom tabellerna jobs
och job_tasks
långsamt ändrar dimensionstabeller skapas en ny post varje gång en ändring görs. Om du vill hämta den senaste versionen av ett jobb kan du beställa efter change_time
kolumnen.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Antal dagliga jobb per arbetsyta
Den här frågan hämtar det dagliga antalet jobb per arbetsyta under de senaste 7 dagarna:
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
Daglig jobbstatusfördelning per arbetsyta
Den här frågan returnerar det dagliga antalet jobb per arbetsyta under de senaste 7 dagarna, fördelat på resultatet av jobbkörningen. Frågan tar bort alla poster där jobben är i ett väntande eller körs-tillstånd.
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
Översikt över jobb som körs längst
Den här frågan returnerar den genomsnittliga tiden för jobbkörningar, mätt i sekunder. Posterna ordnas efter jobb. En kolumn med topp 90 och 95 percentil visar den genomsnittliga längden på jobbets längsta körningar.
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
Analys av jobbkörning
Den här frågan ger en historisk körning för ett visst jobb. För att frågan ska fungera måste du ange en workspace_id
och job_id
.
Du kan också redigera tiden för analys genom att uppdatera antalet dagar i INTERVAL 60 DAYS
avsnittet.
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)
Jobb som körs på all-purpose compute
Den här frågan ansluter till systemtabellen compute.clusters
för att returnera de senaste jobben som körs på all-purpose compute i stället för jobbberäkning.
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;
Jobbkörningar som har gjorts om
Den här frågan samlar in en lista över nya jobbkörningar med antalet återförsök för varje körning.
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;