Dela via


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 workflowtidigare . 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.lakeflowmå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

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;