Referens till systemtabell för jobb
Kommentar
Det lakeflow
schemat kallades tidigare workflow
. Innehållet i båda schemana är identiskt. För att göra lakeflow
schemat synligt måste du aktivera det separat.
Den här artikeln är en referens för hur du använder lakeflow
systemtabeller 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 finns i den regionen.
Krav
- Schemat
system.lakeflow
måste aktiveras av en kontoadministratör. Se Aktivera systemtabellscheman. - För att få åtkomst till dessa systemtabeller måste användarna antingen:
- Vara både metaarkivadministratör och kontoadministratör, eller
- Ha
USE
ochSELECT
behörigheter för systemscheman. Se Bevilja åtkomst till systemtabeller.
Tillgängliga jobbtabeller
Alla jobbrelaterade systemtabeller finns i schemat för system.lakeflow
. Schemat är för närvarande värd för fyra tabeller:
Bord | beskrivning | Stöder direktuppspelning | Fri kvarhållningsperiod | Innehåller globala eller regionala data |
---|---|---|---|---|
jobb (offentlig förhandsversion) | Spårar alla jobb som skapats i kontot | Ja | 365 dagar | Regional |
job_tasks (offentlig förhandsversion) | Spårar alla jobbaktiviteter som körs i kontot | Ja | 365 dagar | Regional |
job_run_timeline (offentlig förhandsversion) | Spårar jobbkörningar och relaterade metadata | Ja | 365 dagar | Regional |
job_task_run_timeline (offentlig förhandsversion) | Spårar jobbtaskkörningar och relaterad metadata | Ja | 365 dagar | Regional |
Detaljerad schemareferens
Följande avsnitt innehåller schemareferenser för var och en av de jobbrelaterade systemtabellerna.
Tabellschema för jobb
Tabellen jobs
är en långsamt föränderlig dimensionstabell (SCD2). När en rad ändras genereras en ny rad, vilket logiskt ersätter den föregående.
Tabellsökväg: system.lakeflow.jobs
Kolumnnamn | Datatyp | beskrivning | Anteckningar |
---|---|---|---|
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 | Endast unikt inom en enda arbetsyta |
name |
sträng | Det användarlevererade namnet på jobbet | |
description |
sträng | Beskrivningen av jobbet som användaren har angett | Det här fältet är tomt om du har kundhanterade nycklar konfigurerade. Fylls inte i för rader som genereras före slutet av augusti 2024 |
creator_id |
sträng | ID:t för huvudmannen som skapade aktiviteten | |
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 | Tidszon som registrerats som +00:00 (UTC) |
delete_time |
timestamp | Den tid då jobbet togs bort av användaren | Tidszon som registrerats som +00:00 (UTC) |
run_as |
sträng | ID för användaren eller tjänstens huvudnamn vars behörigheter används för jobbkörningen |
Exempelfråga
-- Get the most recent version of a job
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Schema för jobbuppgiftstabell
Tabellen för jobbuppgifter är en långsamt föränderlig dimensionstabell (SCD2). När en rad ändras genereras en ny rad, vilket logiskt ersätter den föregående.
Tabellsökväg: system.lakeflow.job_tasks
Kolumnnamn | Datatyp | beskrivning | Anteckningar |
---|---|---|---|
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 | Endast unikt inom en enda arbetsyta |
task_key |
sträng | Referensnyckeln för en uppgift i ett jobb | Endast unikt inom 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 | Tidszon som registrerats som +00:00 (UTC) |
delete_time |
timestamp | Den tid då en uppgift togs bort av användaren | Tidszon som registrerats som +00:00 (UTC) |
Exempelfråga
-- Get the most recent version of a job task
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.job_tasks QUALIFY rn=1
tabellschema för jobbkörning
Tidslinjetabellen för jobben är oföränderlig och slutförd när den skapas.
Tabellsökväg: system.lakeflow.job_run_timeline
Kolumnnamn | Datatyp | beskrivning | Anteckningar |
---|---|---|---|
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 med +00:00 som representerar UTC |
period_end_time |
timestamp | Sluttiden för körningen eller för tidsperioden | Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC |
trigger_type |
sträng | Typen av trigger som kan starta en körning | Möjliga värden finns under utlösartyper |
run_type |
sträng | Typ av jobbkörning | Möjliga värden finns i Körningstypvärden |
run_name |
sträng | Det användarinställda körningsnamnet som är associerat med den här jobbkörningen | |
compute_ids |
matris | Matris som innehåller jobbberäknings-ID:t för den överordnade jobbkörningen | Används för att identifiera jobbkluster som används av WORKFLOW_RUN körtyper. Annan beräkningsinformation finns i tabellen job_task_run_timeline .Fylls inte i för rader som genereras före slutet av augusti 2024 |
result_state |
sträng | Resultatet av jobbkörningen | För möjliga värden, se Resultattillståndsvärdena |
termination_code |
sträng | Avslutningskoden för jobbkörningen | För möjliga värden, se Avslutningskodvärden. Fylls inte i för rader som genereras före slutet av augusti 2024 |
job_parameters |
map | De parametrar på jobbnivå som används i jobbkörningen | De inaktuella notebook_params-inställningarna ingår inte i det här fältet. Fylls inte i för rader som genereras före slutet av augusti 2024 |
Exempelfråga
-- This query gets the daily job count for a workspace for the last 7 days:
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
-- This query returns the daily job count for a workspace for the last 7 days, distributed by the outcome of the job run.
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
-- This query returns the average time of job runs, measured in seconds. The records are organized by job. A top 90 and a 95 percentile column show the average lengths of the job's longest runs.
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
)
SELECT
t1.workspace_id,
t1.job_id,
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
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
-- This query provides a historical runtime for a specific job based on the `run_name` parameter. For the query to work, you must set the `run_name`.
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
-- This query collects a list of retried job runs with the number of retries for each run.
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;
tabellschema för jobbkörningstidslinje
Tidslinjetabellen för jobbkörningsuppgiften är oföränderlig och slutförd när den framställs.
Tabellsökväg: system.lakeflow.job_task_run_timeline
Kolumnnamn | Datatyp | beskrivning | Anteckningar |
---|---|---|---|
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 | Endast unikt inom en enda arbetsyta |
run_id |
sträng | ID för aktivitetskörningen | |
job_run_id |
sträng | ID:t för jobbkörningen | Fylls inte i för rader som genereras före slutet av augusti 2024 |
parent_run_id |
sträng | ID för den överordnade körningen | Fylls inte i för rader som genereras före slutet av augusti 2024 |
period_start_time |
timestamp | Starttiden för aktiviteten eller för tidsperioden | Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC |
period_end_time |
timestamp | Sluttiden för aktiviteten eller för tidsperioden | Tidszonsinformation registreras i slutet av värdet med +00:00 som representerar UTC |
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 | Matrisen compute_ids innehåller ID:t för jobbkluster, interaktiva kluster och SQL-lager som används av jobbaktiviteten | |
result_state |
sträng | Resultatet av jobbaktivitetskörningen | För möjliga värden, se Resultattillståndsvärdena |
termination_code |
sträng | Avslutningskoden för aktivitetskörningen | För möjliga värden, se Avslutningskodvärden. Fylls inte i för rader som genereras före slutet av augusti 2024 |
Vanliga kopplingsmönster
Följande avsnitt innehåller exempelfrågor som markerar vanliga kopplingsmönster för jobbsystemtabeller.
Ansluta till tidslinjetabeller för jobb och jobbkörning
Enrich-jobbkörning med ett jobbnamn
with 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
job_run_timeline.*
jobs.name
FROM system.lakeflow.job_run_timeline
LEFT JOIN jobs USING (workspace_id, job_id)
Anslut till tidslinjen för jobbkörningen och användningstabellerna
Utöka varje faktureringslogg med jobbkörningsmetadata
SELECT
t1.*,
t2.*
FROM system.billing.usage t1
LEFT JOIN system.lakeflow.job_run_timeline t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.job_id
AND t1.usage_metadata.job_run_id = t2.run_id
AND t1.usage_start_time >= date_trunc("Hour", t2.period_start_time)
AND t1.usage_start_time < date_trunc("Hour", t2.period_end_time) + INTERVAL 1 HOUR
WHERE
billing_origin_product="JOBS"
Beräkna kostnad per jobbkörning
Den här frågan ansluter till systemtabellen billing.usage
för att beräkna en kostnad per jobbkörning.
with jobs_usage AS (
SELECT
*,
usage_metadata.job_id,
usage_metadata.job_run_id as run_id,
identity_metadata.run_as as run_as
FROM system.billing.usage
WHERE billing_origin_product="JOBS"
),
jobs_usage_with_usd AS (
SELECT
jobs_usage.*,
usage_quantity * pricing.default as usage_usd
FROM jobs_usage
LEFT JOIN system.billing.list_prices pricing ON
jobs_usage.sku_name = pricing.sku_name
AND pricing.price_start_time <= jobs_usage.usage_start_time
AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
AND pricing.currency_code="USD"
),
jobs_usage_aggregated AS (
SELECT
workspace_id,
job_id,
run_id,
FIRST(run_as, TRUE) as run_as,
sku_name,
SUM(usage_usd) as usage_usd,
SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
)
SELECT
t1.*,
MIN(period_start_time) as run_start_time,
MAX(period_end_time) as run_end_time,
FIRST(result_state, TRUE) as result_state
FROM jobs_usage_aggregated t1
LEFT JOIN system.lakeflow.job_run_timeline t2 USING (workspace_id, job_id, run_id)
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 100
Hämta användningsloggar för ett SUBMIT_RUN jobb
SELECT
*
FROM system.billing.usage
WHERE
EXISTS (
SELECT 1
FROM system.lakeflow.job_run_timeline
WHERE
job_run_timeline.job_id = usage_metadata.job_id
AND run_name = :run_name
AND workspace_id = :workspace_id
)
Anslut till tidslinjen för jobbaktivitetskörningen och klustertabeller
Enrich-jobbaktivitet körs med klustermetadata
with clusters as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters QUALIFY rn=1
),
exploded_task_runs AS (
SELECT
*,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE array_size(compute_ids) > 0
)
SELECT
exploded_task_runs.*,
clusters.*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)
Hitta jobb som körs på allmän beräkningsmiljö
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;
övervakningsinstrumentpanel för jobb
Följande instrumentpanel använder systemtabeller för att hjälpa dig att komma igång med att övervaka dina jobb och driftshälsa. Den innehåller vanliga användningsfall som spårning av jobbprestanda, felövervakning och resursanvändning.
För information om hur du laddar ner instrumentpanelen, se Övervaka jobbkostnader & och prestanda med systemtabeller.
Felsökning
jobb loggas inte i tabell lakeflow.jobs
Om ett jobb inte visas i systemtabellerna:
- Jobbet har inte ändrats under de senaste 365 dagarna
- Ändra något av jobbets fält som finns i schemat för att generera en ny post.
- Jobbet skapades i en annan region
- Senaste jobbskapande (tabellfördröjning)
Det går inte att hitta ett jobb som visas i tabellen job_run_timeline
Alla jobbkörningar visas inte överallt. Även om JOB_RUN
-poster visas i alla jobbrelaterade tabeller, registreras WORKFLOW_RUN
(körningar av notebook-arbetsflöden) endast i job_run_timeline
och SUBMIT_RUN
(körningar som skickas en gång) registreras endast i tidslinjetabellerna. Dessa körningar fylls inte i andra jobbsystemtabeller som jobs
eller job_tasks
.
Se tabellen Körningstyper nedan för en detaljerad uppdelning av var varje typ av körning kan ses och nås.
Jobbkörningen visas inte i billing.usage
tabell
I system.billing.usage
fylls usage_metadata.job_id
bara i för jobb som körs på jobbberäkning eller serverlös beräkning.
Dessutom har WORKFLOW_RUN
jobb inte egna usage_metadata.job_id
eller usage_metadata.job_run_id
tilldelning i system.billing.usage
.
I stället tillskrivs deras beräkningsanvändning den överordnade anteckningsboken som utlöste dem.
Det innebär att när en notebook-fil startar en arbetsflödeskörning visas alla beräkningskostnader under den överordnade notebook-filens användning, inte som ett separat arbetsflödesjobb.
Mer information finns i -referensen för användningsmetadata.
Beräkna kostnaden för ett jobb som körs på universell datorkraft
Exakt kostnadsberäkning för jobb som körs på specialiserad beräkningsresurs är inte möjlig med 100% noggrannhet. När ett jobb körs på en interaktiv (all-purpose) beräkning körs ofta flera arbetsbelastningar som notebook-filer, SQL-frågor eller andra jobb samtidigt på samma beräkningsresurs. Eftersom klusterresurserna delas finns det ingen direkt 1:1-mappning mellan beräkningskostnader och enskilda jobbkörningar.
För korrekt jobbkostnadsspårning rekommenderar Databricks att du kör jobb på dedikerad jobbberäkning eller serverlös beräkning, där usage_metadata.job_id
och usage_metadata.job_run_id
möjliggör exakt kostnadsattribution.
Om du måste använda all-purpose compute kan du:
- Övervaka övergripande klusteranvändning och kostnader i
system.billing.usage
baserat påusage_metadata.cluster_id
. - Spåra jobbkörningsmått separat.
- Tänk på att alla kostnadsuppskattningar kommer att vara ungefärliga på grund av delade resurser.
Mer information om kostnadstillskrivning finns i referens för användningsmetadata.
Referensvärden
Följande avsnitt innehåller referenser för utvalda kolumner i jobbrelaterade tabeller.
utlösartypsvärden
Möjliga värden för kolumnen trigger_type
är:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Kör typvärden
Möjliga värden för kolumnen run_type
är:
Typ | beskrivning | UI-plats | API-slutpunkt | Systemtabeller |
---|---|---|---|---|
JOB_RUN |
Standardjobbutförande | Jobb & jobb kör användargränssnittet | /jobs och /jobs/runs ändpunkter | jobb, arbetsuppgifter, körtid för jobb, körtid för arbetsuppgift |
SUBMIT_RUN |
Engångskörning via POST /jobs/runs/submit | Endast jobbkörningsanvändargränssnittet | /jobs/runs endpoint enbart | jobbkörningslinje, arbetstidslinje för jobbuppgifter |
WORKFLOW_RUN |
Kör initierat från notebook-arbetsflöde | Inte synlig | Inte tillgänglig | jobbkörningstidslinje |
Resultatstatusvärden
Möjliga värden för kolumnen result_state
är:
Stat | beskrivning |
---|---|
SUCCEEDED |
Körningen har slutförts framgångsrikt |
FAILED |
Körningen slutfördes med ett fel |
SKIPPED |
Körning utfördes aldrig eftersom ett villkor inte uppfylldes |
CANCELLED |
Körningen avbröts på användarens begäran |
TIMED_OUT |
Körningen stoppades efter att tidsgränsen nåtts |
ERROR |
Körningen slutfördes med ett fel |
BLOCKED |
Körningen blockerades på grund av ett uppströmsberoende |
Avslutningskodvärden
Möjliga värden för kolumnen termination_code
är:
Avslutningskod | beskrivning |
---|---|
SUCCESS |
Körningen har slutförts |
CANCELLED |
Körningen avbröts av Databricks-plattformen under utförandet, till exempel om den maximala körningstiden överskreds. |
SKIPPED |
Körningen utfördes aldrig, till exempel om den föregående aktivitetskörningen misslyckades, beroendevillkoret inte uppfylldes eller om det inte fanns några aktuella uppgifter att köra |
DRIVER_ERROR |
Körningen påträffade ett fel vid kommunikation med Spark-drivrutinen |
CLUSTER_ERROR |
Körningen misslyckades på grund av ett klusterfel |
REPOSITORY_CHECKOUT_FAILED |
Det gick inte att slutföra utcheckningen på grund av ett fel vid kommunikation med tjänsten från tredje part |
INVALID_CLUSTER_REQUEST |
Körningen misslyckades eftersom den utfärdade en ogiltig begäran om att starta klustret |
WORKSPACE_RUN_LIMIT_EXCEEDED |
Arbetsytan har nått kvoten för det maximala antalet samtidiga aktiva körningar. Överväg att schemalägga körningarna över en större tidsram |
FEATURE_DISABLED |
Körningen misslyckades eftersom den försökte komma åt en funktionalitet som inte är tillgänglig för arbetsytan |
CLUSTER_REQUEST_LIMIT_EXCEEDED |
Antalet begäranden om att skapa, starta och utvidga kluster har överskridit den tilldelade hastighetsgränsen. Överväg att sprida körningens genomförande över en större tidsram |
STORAGE_ACCESS_ERROR |
Körningen misslyckades på grund av ett fel vid åtkomst till kundens bloblagringssystem |
RUN_EXECUTION_ERROR |
Körningen slutfördes med aktivitetsfel |
UNAUTHORIZED_ERROR |
Körningen misslyckades på grund av ett behörighetsproblem vid åtkomst till en resurs |
LIBRARY_INSTALLATION_ERROR |
Körningen misslyckades när det användar begärda biblioteket skulle installeras. Orsakerna kan vara, men är inte begränsade till: Det angivna biblioteket är ogiltigt, det finns inte tillräckliga behörigheter för att installera biblioteket och så vidare |
MAX_CONCURRENT_RUNS_EXCEEDED |
Den schemalagda körningen överskrider gränsen för maximala samtidiga körningar som angetts för jobbet |
MAX_SPARK_CONTEXTS_EXCEEDED |
Körningen är schemalagd i ett kluster som redan har nått det maximala antalet kontexter som den har konfigurerats för att skapa |
RESOURCE_NOT_FOUND |
En resurs som krävs för körningen finns inte |
INVALID_RUN_CONFIGURATION |
Körningen misslyckades på grund av en ogiltig konfiguration |
CLOUD_FAILURE |
Körningen misslyckades på grund av ett problem med molnleverantören |
MAX_JOB_QUEUE_SIZE_EXCEEDED |
Körningen hoppades över på grund av att köstorleksgränsen på jobbnivå nåddes |