Informazioni di riferimento sulla tabella di sistema dei processi
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo fornisce informazioni di riferimento su come usare le tabelle di sistema per monitorare i workflow
processi nell'account. Queste tabelle includono i record di tutte le aree di lavoro nell'account distribuito all'interno della stessa area cloud. Per visualizzare i record di altre aree, è necessario visualizzare le tabelle da un'area di lavoro distribuita in tale area.
system.workflow
deve essere abilitato da un amministratore dell'account. È possibile abilitarlo usando l'API SystemSchemas.
Per esempi sull'uso di queste tabelle per i costi dei processi e l'osservabilità dell'integrità, vedere Monitorare i costi dei processi con le tabelle di sistema.
Tabelle dei processi disponibili
Tutte le tabelle di sistema correlate ai processi si trovano nello system.workflow
schema. Attualmente, lo schema ospita quattro tabelle:
jobs
: tiene traccia della creazione, dell'eliminazione e delle informazioni di base dei processi.job_tasks
: tiene traccia della creazione, dell'eliminazione e delle informazioni di base delle attività di processo.job_run_timeline
: registra l'avvio, la fine e lo stato risultante delle esecuzioni del processo.job_task_run_timeline
: registra l'inizio, la fine e lo stato risultante delle attività del processo.
Schema della tabella dei processi
La jobs
tabella è una tabella delle dimensioni a modifica lenta. Quando una riga viene modificata, viene generata una nuova riga, sostituendo logicamente quella precedente.
La tabella usa lo schema seguente:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
account_id |
stringa | ID dell'account a cui appartiene il processo. |
workspace_id |
string | ID dell'area di lavoro a cui appartiene il processo. |
job_id |
string | L'ID della mansione. Questa chiave è univoca solo all'interno di una singola area di lavoro. |
name |
string | Nome fornito dall'utente del processo. |
creator_id |
string | ID dell'entità che ha creato il processo. |
tags |
string | Tag personalizzati forniti dall'utente associati a questo processo. |
change_time |
timestamp | Ora dell'ultima modifica del processo. |
delete_time |
timestamp | Ora in cui il processo è stato eliminato dall'utente. |
run_as |
string | ID dell'utente o dell'entità servizio le cui autorizzazioni vengono usate per l'esecuzione del processo. |
Schema della tabella delle attività processo
La job_tasks
tabella è una tabella delle dimensioni a modifica lenta. Quando una riga viene modificata, viene generata una nuova riga, sostituendo logicamente quella precedente.
La tabella usa lo schema seguente:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
account_id |
stringa | ID dell'account a cui appartiene il processo. |
workspace_id |
string | ID dell'area di lavoro a cui appartiene il processo. |
job_id |
string | L'ID della mansione. Questa chiave è univoca solo all'interno di una singola area di lavoro. |
task_key |
string | Chiave di riferimento per un'attività in un processo. Questa chiave è univoca solo all'interno di un singolo processo. |
depends_on_keys |
array | Chiavi di attività di tutte le dipendenze upstream di questa attività. |
change_time |
timestamp | Ora dell'ultima modifica dell'attività. |
delete_time |
timestamp | Ora in cui un'attività è stata eliminata dall'utente. |
Schema della tabella sequenza temporale dell'esecuzione del processo
La job_run_timeline
tabella non è modificabile e viene completata al momento della produzione.
La tabella usa lo schema seguente:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
account_id |
stringa | ID dell'account a cui appartiene il processo. |
workspace_id |
string | ID dell'area di lavoro a cui appartiene il processo. |
job_id |
string | L'ID della mansione. Questa chiave è univoca solo all'interno di una singola area di lavoro. |
run_id |
string | ID dell'esecuzione del processo. |
period_start_time |
timestamp | Ora di inizio per l'esecuzione o per il periodo di tempo. |
period_end_time |
timestamp | Ora di fine per l'esecuzione o per il periodo di tempo. |
trigger_type |
string | Tipo di trigger che può generare un'esecuzione. |
result_state |
string | Risultato dell'esecuzione del processo. Vedere i valori possibili sotto questa tabella. |
I valori possibili per la result_state
colonna sono:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
I valori possibili per la trigger_type
colonna sono:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Schema della tabella sequenza temporale esecuzione attività processo
La job_task_run_timeline
tabella non è modificabile e viene completata al momento della produzione.
La tabella usa lo schema seguente:
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
account_id |
stringa | ID dell'account a cui appartiene il processo. |
workspace_id |
string | ID dell'area di lavoro a cui appartiene il processo. |
job_id |
string | L'ID della mansione. Questa chiave è univoca solo all'interno di una singola area di lavoro. |
run_id |
string | ID dell'esecuzione dell'attività. |
period_start_time |
timestamp | Ora di inizio per l'attività o per il periodo di tempo. |
period_end_time |
timestamp | Ora di fine per l'attività o per il periodo di tempo. |
task_key |
string | Chiave di riferimento per un'attività in un processo. Questa chiave è univoca solo all'interno di un singolo processo. |
compute_ids |
array | Matrice contenente gli ID dei processi non serverless di calcolo e dei warehouse SQL non serverless usati dall'attività di processo. |
result_state |
string | Risultato dell'esecuzione dell'attività di processo. |
I valori possibili per la result_state
colonna sono:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Query di esempio
Questa sezione include query di esempio che è possibile usare per sfruttare al meglio le tabelle del flusso di lavoro.
- Ottenere la versione più recente dei processi
- Numero di processi giornalieri per area di lavoro
- Distribuzione giornaliera dello stato del processo in base all'area di lavoro
- Panoramica dei processi con esecuzione più lunga
- Analisi dell'esecuzione del processo
- Processi in esecuzione in un ambiente di calcolo all-purpose
- Esecuzioni di processi ripetuti
Ottenere la versione più recente dei processi
Poiché le jobs
tabelle e job_tasks
cambiano lentamente le tabelle delle dimensioni, viene creato un nuovo record ogni volta che viene apportata una modifica. Per ottenere la versione più recente di un processo, è possibile ordinare in base alla change_time
colonna .
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.workflow.jobs QUALIFY rn=1
Numero di processi giornalieri per area di lavoro
Questa query ottiene il numero di processi giornalieri per area di lavoro per gli ultimi 7 giorni:
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.workflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
Distribuzione giornaliera dello stato del processo in base all'area di lavoro
Questa query restituisce il conteggio giornaliero dei processi per area di lavoro per gli ultimi 7 giorni, distribuiti dal risultato dell'esecuzione del processo. La query rimuove tutti i record in cui i processi si trovano in uno stato in sospeso o in esecuzione.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.workflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
Panoramica dei processi con esecuzione più lunga
Questa query restituisce il tempo medio di esecuzione del processo, misurato in secondi. I record sono organizzati per processo. Una colonna top 90 e 95 percentile mostra le lunghezze medie delle esecuzioni più lunghe del processo.
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.workflow.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.workflow.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
Analisi dell'esecuzione del processo
Questa query fornisce un runtime cronologico per un processo specifico. Affinché la query funzioni, è necessario impostare un workspace_id
e job_id
.
È anche possibile modificare l'intervallo di tempo per l'analisi aggiornando la quantità di giorni nella INTERVAL 60 DAYS
sezione .
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.workflow.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.workflow.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)
Processi in esecuzione in un ambiente di calcolo all-purpose
Questa query viene unita alla compute.clusters
tabella di sistema per restituire i processi recenti in esecuzione in un ambiente di calcolo all-purpose anziché nell'ambiente di calcolo dei processi.
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.workflow.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;
Esecuzioni di processi ripetuti
Questa query raccoglie un elenco di esecuzioni di processi ripetuti con il numero di tentativi per ogni esecuzione.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.workflow.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;
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per