İşler sistem tablosu başvurusu
Önemli
Bu sistem tablosu Genel Önizleme aşamasındadır. Tabloya erişmek için şemanın kataloğunuzda system
etkinleştirilmesi gerekir. Daha fazla bilgi için bkz . Sistem tablosu şemalarını etkinleştirme.
Not
Şema lakeflow
daha önce olarak workflow
biliniyordu. Her iki şemanın içeriği de aynıdır. Şemayı lakeflow
görünür hale getirmek için ayrı olarak etkinleştirmeniz gerekir.
Bu makalede, hesabınızdaki lakeflow
işleri izlemek için sistem tablolarının nasıl kullanılacağına yönelik bir başvuru sağlanır. Bu tablolar, hesabınızdaki aynı bulut bölgesine dağıtılan tüm çalışma alanlarındaki kayıtları içerir. Başka bir bölgedeki kayıtları görmek için, o bölgede dağıtılan bir çalışma alanındaki tabloları görüntülemeniz gerekir.
system.lakeflow
bir hesap yöneticisi tarafından etkinleştirilmelidir. SystemSchemas API'sini kullanarak etkinleştirebilirsiniz.
İş maliyeti ve sistem durumu gözlemlenebilirliği için bu tabloları kullanma örnekleri için bkz . Sistem tablolarıyla iş maliyetlerini izleme.
Kullanılabilir iş tabloları
İşle ilgili tüm sistem tabloları şemada yer alır system.lakeflow
. Şu anda şema dört tablo barındırıyor:
jobs
: İşlerin oluşturulmasını, silinmesini ve temel bilgilerini izler.job_tasks
: İş görevlerinin oluşturulmasını, silinmesini ve temel bilgilerini izler.job_run_timeline
: İş çalıştırmalarının başlangıç, bitiş ve sonuç durumunu kaydeder.job_task_run_timeline
: İş görevlerinin başlangıç, bitiş ve sonuç durumunu kaydeder.
İş tablosu şeması
Tablo jobs
, yavaş değişen bir boyut tablosudur. Bir satır değiştiğinde, mantıksal olarak öncekinin yerini alan yeni bir satır yayılır.
Tablo yolu: Bu sistem tablosu konumunda system.lakeflow.jobs
bulunur.
Sütun adı | Veri türü | Açıklama |
---|---|---|
account_id |
Dize | Bu işin ait olduğu hesabın kimliği. |
workspace_id |
Dize | Bu işin ait olduğu çalışma alanının kimliği. |
job_id |
Dize | İşin kimliği. Bu anahtar yalnızca tek bir çalışma alanında benzersizdir. |
name |
Dize | İşin kullanıcı tarafından sağlanan adı. |
description |
Dize | İşin kullanıcı tarafından sağlanan açıklaması. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
creator_id |
Dize | İşi oluşturan sorumlunun kimliği. |
tags |
Dize | Bu işle ilişkili kullanıcı tarafından sağlanan özel etiketler. |
change_time |
timestamp | İşin en son değiştirildiği saat. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
delete_time |
timestamp | İşin kullanıcı tarafından silindiği zaman. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
run_as |
Dize | İş çalıştırması için izinleri kullanılan kullanıcı veya hizmet sorumlusunun kimliği. |
İş görev tablosu şeması
İş görevleri tablosu yavaş değişen bir boyut tablosudur. Bir satır değiştiğinde, mantıksal olarak öncekinin yerini alan yeni bir satır yayılır.
Tablo yolu: Bu sistem tablosu konumunda system.lakeflow.job_tasks
bulunur.
Sütun adı | Veri türü | Açıklama |
---|---|---|
account_id |
Dize | Bu işin ait olduğu hesabın kimliği. |
workspace_id |
Dize | Bu işin ait olduğu çalışma alanının kimliği. |
job_id |
Dize | İşin kimliği. Bu anahtar yalnızca tek bir çalışma alanında benzersizdir. |
task_key |
Dize | bir işteki görevin başvuru anahtarı. Bu anahtar yalnızca tek bir iş içinde benzersizdir. |
depends_on_keys |
dizi | Bu görevin tüm yukarı akış bağımlılıklarının görev anahtarları. |
change_time |
timestamp | Görevin en son değiştirildiği saat. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
delete_time |
timestamp | Bir görevin kullanıcı tarafından silindiği saat. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
İş çalıştırma zaman çizelgesi tablo şeması
İş çalıştırma zaman çizelgesi tablosu sabittir ve üretildiği sırada tamamlanır.
Tablo yolu: Bu sistem tablosu konumunda system.lakeflow.job_run_timeline
bulunur.
Sütun adı | Veri türü | Açıklama |
---|---|---|
account_id |
Dize | Bu işin ait olduğu hesabın kimliği. |
workspace_id |
Dize | Bu işin ait olduğu çalışma alanının kimliği. |
job_id |
Dize | İşin kimliği. Bu anahtar yalnızca tek bir çalışma alanında benzersizdir. |
run_id |
Dize | İş çalıştırmasının kimliği. |
period_start_time |
timestamp | Çalıştırmanın veya zaman aralığının başlangıç saati. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
period_end_time |
timestamp | Çalıştırmanın bitiş saati veya zaman aralığı. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
trigger_type |
Dize | Çalıştırmayı tetikleyebilen tetikleyici türü. Olası değerler için bkz . Tetikleyici türü değerleri |
run_type |
Dize | İş çalıştırmasının türü. Olası değerler için bkz . Çalıştırma türü değerleri. |
run_name |
Dize | Kullanıcı tarafından sağlanan çalıştırma adı bu iş çalıştırmasıyla ilişkilendirildi. |
compute_ids |
dizi | Üst iş çalıştırması için işlem kimliklerini içeren dizi. Tarafından SUBMIT_RUN kullanılan kümeyi tanımlamak ve WORKFLOW_RUN türleri çalıştırmak için kullanın. Diğer işlem bilgileri için tabloya job_task_run_timeline bakın. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
result_state |
Dize | İş çalıştırmasının sonucu. Olası değerler için bkz . Sonuç durumu değerleri. |
termination_code |
Dize | İş çalıştırmasının sonlandırma kodu. Olası değerler için bkz . Sonlandırma kodu değerleri. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
job_parameters |
map | İş çalıştırmasında kullanılan iş düzeyi parametreleri. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
Tetikleyici türü değerleri
Sütunun trigger_type
olası değerleri şunlardır:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
Çalıştırma türü değerleri
Sütunun run_type
olası değerleri şunlardır:
JOB_RUN
SUBMIT_RUN
: POST /api/2.1/jobs/runs/submit aracılığıyla oluşturulan tek seferlik çalıştırma.WORKFLOW_RUN
: not defteri iş akışından başlatılan iş çalıştırması.
Sonuç durumu değerleri
Sütunun result_state
olası değerleri şunlardır:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Sonlandırma kodu değerleri
Sütunun termination_code
olası değerleri şunlardır:
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
İş görevi çalıştırma zaman çizelgesi tablo şeması
İş görevi çalıştırma zaman çizelgesi tablosu sabittir ve üretildiği sırada tamamlanır.
Tablo yolu: Bu sistem tablosu konumunda system.lakeflow.job_task_run_timeline
bulunur.
Sütun adı | Veri türü | Açıklama |
---|---|---|
account_id |
Dize | Bu işin ait olduğu hesabın kimliği. |
workspace_id |
Dize | Bu işin ait olduğu çalışma alanının kimliği. |
job_id |
Dize | İşin kimliği. Bu anahtar yalnızca tek bir çalışma alanında benzersizdir. |
run_id |
Dize | Görev çalıştırmasının kimliği. |
job_run_id |
Dize | İş çalıştırmasının kimliği. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
parent_run_id |
Dize | Üst çalıştırmanın kimliği. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
period_start_time |
timestamp | Görevin veya zaman aralığının başlangıç saati. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
period_end_time |
timestamp | Görevin bitiş saati veya zaman aralığı. Saat dilimi bilgileri değerin sonunda UTC'yi temsil eden şekilde +00:00 kaydedilir. |
task_key |
Dize | bir işteki görevin başvuru anahtarı. Bu anahtar yalnızca tek bir iş içinde benzersizdir. |
compute_ids |
dizi | İş görevi tarafından kullanılan işlem kimliklerini içeren dizi. |
result_state |
Dize | İş görevi çalıştırmasının sonucu. |
termination_code |
Dize | Görev çalıştırmasının sonlandırma kodu. Bu tablonun altındaki olası değerlere bakın. Ağustos 2024'in sonları öncesinde yayılan satırlar için doldurulmuyor. |
Sütunun result_state
olası değerleri şunlardır:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
Sütunun termination_code
olası değerleri şunlardır:
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
Örnek sorgular
Bu bölüm, göl akışı tablolarından en iyi şekilde yararlanmak için kullanabileceğiniz örnek sorguları içerir.
- İşlerin en son sürümünü alma
- Çalışma alanına göre günlük iş sayısı
- Çalışma alanına göre günlük iş durumu dağıtımı
- En uzun süre çalışan işlere genel bakış
- runSubmit (örneğin) aracılığıyla yürütülen işler için iş çalışma zamanı. Hava akışı)
- İş çalıştırma analizi
- Tüm amaçlı işlem üzerinde çalışan işler
- Yeniden denenen iş çalıştırmaları
İşlerin en son sürümünü alma
jobs
ve job_tasks
tabloları boyut tablolarını yavaş yavaş değiştirdiğinden, her değişiklik yapıldığında yeni bir kayıt oluşturulur. İşin en son sürümünü almak için sütuna change_time
göre sipariş vekleyebilirsiniz.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
Çalışma alanına göre günlük iş sayısı
Bu sorgu, son 7 gün için çalışma alanına göre günlük iş sayısını alır:
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
Çalışma alanına göre günlük iş durumu dağıtımı
Bu sorgu, son 7 gün için çalışma alanına göre günlük iş sayısını döndürür ve iş çalıştırmasının sonucuna göre dağıtılır. Sorgu, işlerin beklemede veya çalışır durumda olduğu kayıtları kaldırır.
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
En uzun süre çalışan işlere genel bakış
Bu sorgu, saniye cinsinden ölçülen ortalama iş çalıştırma süresini döndürür. Kayıtlar işe göre düzenlenir. İlk 90 ve yüzde 95'lik bir sütun, işin en uzun çalıştırmalarının ortalama uzunluklarını gösterir.
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
runSubmit (örneğin) aracılığıyla yürütülen işler için iş çalışma zamanı. Hava akışı)
Bu sorgu, parametresini temel alan run_name
belirli bir iş için geçmiş çalışma zamanı sağlar. Sorgunun çalışması için değerini ayarlamanız run_name
gerekir.
Ayrıca, bölümdeki gün INTERVAL 60 DAYS
sayısını güncelleştirerek analiz süresini düzenleyebilirsiniz.
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
İş çalıştırma analizi
Bu sorgu belirli bir iş için geçmiş çalışma zamanı sağlar. Sorgunun çalışması için ve workspace_id
job_id
ayarlamanız gerekir.
Ayrıca, bölümdeki gün INTERVAL 60 DAYS
sayısını güncelleştirerek analiz süresini düzenleyebilirsiniz.
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)
Tüm amaçlı işlem üzerinde çalışan işler
Bu sorgu, iş hesaplaması compute.clusters
yerine çok amaçlı işlem üzerinde çalışan son işleri döndürmek için sistem tablosuyla birleşir.
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;
Yeniden denenen iş çalıştırmaları
Bu sorgu, her çalıştırma için yeniden deneme sayısıyla yeniden denenen iş çalıştırmalarının listesini toplar.
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;