İş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 workflowbiliniyordu. 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.lakeflowbir 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.jobsbulunur.

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_tasksbulunur.

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_timelinebulunur.

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:

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_timelinebulunur.

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

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_namegerekir.

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_idayarlamanı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;