مشاركة عبر


مرجع جدول نظام الوظائف

هام

يوجد جدول النظام هذا في المعاينة العامة. للوصول إلى الجدول، يجب تمكين المخطط في الكتالوج.system لمزيد من المعلومات، راجع تمكين مخططات جدول النظام.

إشعار

lakeflow كان المخطط يعرف سابقا باسم workflow. محتوى كلا المخططين متطابق. لجعل المخطط مرئيا lakeflow ، يجب تمكينه بشكل منفصل.

توفر هذه المقالة مرجعا لكيفية استخدام lakeflow جداول النظام لمراقبة المهام في حسابك. تتضمن هذه الجداول سجلات من جميع مساحات العمل في حسابك المنشورة في نفس منطقة السحابة. لمشاهدة السجلات من منطقة أخرى، تحتاج إلى عرض الجداول من مساحة عمل تم نشرها في تلك المنطقة.

system.lakeflow يجب تمكينه بواسطة مسؤول حساب. يمكنك تمكينه باستخدام واجهة برمجة تطبيقات SystemSchemas.

للحصول على أمثلة لاستخدام هذه الجداول لتكلفة الوظيفة وإمكانية المراقبة الصحية، راجع مراقبة تكاليف الوظائف باستخدام جداول النظام.

جداول الوظائف المتوفرة

تعيش جميع جداول النظام المتعلقة بالوظائف في system.lakeflow المخطط. حاليا، يستضيف المخطط أربعة جداول:

  • jobs: يتعقب الإنشاء والحذف والمعلومات الأساسية للوظائف.
  • job_tasks: يتعقب الإنشاء والحذف والمعلومات الأساسية للمهام الوظيفية.
  • job_run_timeline: يسجل البداية والنهاية والحالة الناتجة عن تشغيل المهمة.
  • job_task_run_timeline: يسجل بداية المهام الوظيفية وانتهاءها وحالتها الناتجة.

مخطط جدول الوظيفة

jobs الجدول هو جدول أبعاد متغير ببطء. عند تغيير صف، يتم إصدار صف جديد، ليحل محل الصف السابق منطقيا.

مسار الجدول: يقع جدول النظام هذا في system.lakeflow.jobs.

اسم العمود نوع البيانات ‏‏الوصف
account_id سلسلة معرف الحساب الذي تنتمي إليه هذه الوظيفة.
workspace_id سلسلة معرف مساحة العمل التي تنتمي إليها هذه المهمة.
job_id سلسلة معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة.
name سلسلة اسم الوظيفة الذي يوفره المستخدم.
description سلسلة الوصف الذي يوفره المستخدم للوظيفة. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.
creator_id سلسلة معرف المدير الذي أنشأ الوظيفة.
tags سلسلة العلامات المخصصة التي يوفرها المستخدم المقترنة بهذه المهمة.
change_time الطابع الزمني الوقت الذي تم فيه تعديل الوظيفة آخر مرة. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
delete_time الطابع الزمني الوقت الذي تم فيه حذف المهمة من قبل المستخدم. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
run_as سلسلة معرف المستخدم أو كيان الخدمة الذي يتم استخدام أذوناته لتشغيل المهمة.

مخطط جدول مهمة المهمة

جدول مهام الوظيفة هو جدول أبعاد متغير ببطء. عند تغيير صف، يتم إصدار صف جديد، ليحل محل الصف السابق منطقيا.

مسار الجدول: يقع جدول النظام هذا في system.lakeflow.job_tasks.

اسم العمود نوع البيانات ‏‏الوصف
account_id سلسلة معرف الحساب الذي تنتمي إليه هذه الوظيفة.
workspace_id سلسلة معرف مساحة العمل التي تنتمي إليها هذه المهمة.
job_id سلسلة معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة.
task_key سلسلة المفتاح المرجعي لمهمة في وظيفة. هذا المفتاح فريد فقط داخل وظيفة واحدة.
depends_on_keys صفيف مفاتيح المهام لجميع تبعيات المصدر لهذه المهمة.
change_time الطابع الزمني الوقت الذي تم فيه تعديل المهمة آخر مرة. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
delete_time الطابع الزمني الوقت الذي تم فيه حذف مهمة من قبل المستخدم. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.

مخطط جدول المخطط الزمني لتشغيل المهمة

جدول المخطط الزمني لتشغيل المهمة غير قابل للتغيير وكامل في وقت إنتاجه.

مسار الجدول: يقع جدول النظام هذا في system.lakeflow.job_run_timeline.

اسم العمود نوع البيانات ‏‏الوصف
account_id سلسلة معرف الحساب الذي تنتمي إليه هذه الوظيفة.
workspace_id سلسلة معرف مساحة العمل التي تنتمي إليها هذه المهمة.
job_id سلسلة معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة.
run_id سلسلة معرف تشغيل الوظيفة.
period_start_time الطابع الزمني وقت البدء للتشغيل أو للفترة الزمنية. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
period_end_time الطابع الزمني وقت انتهاء التشغيل أو الفترة الزمنية. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
trigger_type سلسلة نوع المشغل الذي يمكنه تشغيل. للحصول على القيم المحتملة، راجع قيم نوع المشغل
run_type سلسلة نوع تشغيل المهمة. للحصول على القيم المحتملة، راجع تشغيل قيم النوع.
run_name سلسلة اسم التشغيل الذي يوفره المستخدم مع تشغيل هذه المهمة.
compute_ids صفيف صفيف يحتوي على معرفات الحوسبة لتشغيل المهمة الأصل. يستخدم لتحديد نظام المجموعة المستخدم من قبل SUBMIT_RUN أنواع التشغيل.WORKFLOW_RUN للحصول على معلومات حساب أخرى، راجع job_task_run_timeline الجدول. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.
result_state سلسلة نتيجة تشغيل الوظيفة. للحصول على القيم المحتملة، راجع قيم حالة النتيجة.
termination_code سلسلة رمز إنهاء تشغيل المهمة. للحصول على القيم المحتملة، راجع قيم رمز الإنهاء. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.
job_parameters map المعلمات على مستوى الوظيفة المستخدمة في تشغيل الوظيفة. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.

قيم نوع المشغل

القيم المحتملة trigger_type للعمود هي:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

تشغيل قيم النوع

القيم المحتملة run_type للعمود هي:

قيم حالة النتيجة

القيم المحتملة result_state للعمود هي:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

قيم التعليمات البرمجية للإنهاء

القيم المحتملة termination_code للعمود هي:

  • 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

مخطط جدول المخطط الزمني لتشغيل مهمة المهمة

جدول المخطط الزمني لتشغيل مهمة الوظيفة غير قابل للتغيير وكامل في وقت إنتاجه.

مسار الجدول: يقع جدول النظام هذا في system.lakeflow.job_task_run_timeline.

اسم العمود نوع البيانات ‏‏الوصف
account_id سلسلة معرف الحساب الذي تنتمي إليه هذه الوظيفة.
workspace_id سلسلة معرف مساحة العمل التي تنتمي إليها هذه المهمة.
job_id سلسلة معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة.
run_id سلسلة معرف تشغيل المهمة.
job_run_id سلسلة معرف تشغيل الوظيفة. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.
parent_run_id سلسلة معرف تشغيل الأصل. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.
period_start_time الطابع الزمني وقت البدء للمهمة أو الفترة الزمنية. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
period_end_time الطابع الزمني وقت انتهاء المهمة أو الفترة الزمنية. يتم تسجيل معلومات المنطقة الزمنية في نهاية القيمة مع +00:00 تمثيل UTC.
task_key سلسلة المفتاح المرجعي لمهمة في وظيفة. هذا المفتاح فريد فقط داخل وظيفة واحدة.
compute_ids صفيف صفيف يحتوي على معرفات الحوسبة المستخدمة من قبل مهمة الوظيفة.
result_state سلسلة نتيجة تشغيل المهمة الوظيفية.
termination_code سلسلة رمز إنهاء تشغيل المهمة. راجع القيم المحتملة أسفل هذا الجدول. لم يتم ملؤها للصفوف المنبعثة قبل أواخر أغسطس 2024.

القيم المحتملة result_state للعمود هي:

  • SUCCEEDED
  • FAILED
  • SKIPPED
  • CANCELLED
  • TIMED_OUT
  • ERROR
  • BLOCKED

القيم المحتملة termination_code للعمود هي:

  • 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

مثال على الاستعلامات

يتضمن هذا القسم نماذج الاستعلامات التي يمكنك استخدامها لتحقيق أقصى استفادة من جداول تدفق البحيرة.

الحصول على أحدث إصدار من الوظائف

نظرا لأن الجدولين jobs و job_tasks يغيران جداول الأبعاد ببطء، يتم إنشاء سجل جديد في كل مرة يتم فيها إجراء تغيير. للحصول على أحدث إصدار من وظيفة، يمكنك الطلب حسب change_time العمود.

SELECT
  *,
  ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
  system.lakeflow.jobs QUALIFY rn=1

عدد الوظائف اليومية حسب مساحة العمل

يحصل هذا الاستعلام على عدد المهام اليومية حسب مساحة العمل لآخر 7 أيام:

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

توزيع حالة الوظيفة اليومية حسب مساحة العمل

يقوم هذا الاستعلام بإرجاع عدد الوظائف اليومية حسب مساحة العمل لآخر 7 أيام، موزعة حسب نتيجة تشغيل الوظيفة. يزيل الاستعلام أي سجلات تكون فيها المهام في حالة معلقة أو قيد التشغيل.

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

نظرة عامة على أطول الوظائف قيد التشغيل

يقوم هذا الاستعلام بإرجاع متوسط وقت تشغيل المهمة، مقاسا بالثوان. يتم تنظيم السجلات حسب الوظيفة. يظهر أعلى 90 عمودا وعمودا بنسبة 95 بالمائة متوسط أطوال أطول عمليات تشغيل الوظيفة.

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 (أي. تدفق الهواء)

يوفر هذا الاستعلام وقت تشغيل تاريخي لوظيفة معينة استنادا إلى المعلمة run_name . لكي يعمل الاستعلام، يجب عليك تعيين run_name.

يمكنك أيضا تحرير طول الوقت للتحليل عن طريق تحديث عدد الأيام في INTERVAL 60 DAYS المقطع.

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

تحليل تشغيل المهمة

يوفر هذا الاستعلام وقت تشغيل تاريخي لوظيفة معينة. لكي يعمل الاستعلام، يجب عليك تعيين workspace_id و job_id.

يمكنك أيضا تحرير طول الوقت للتحليل عن طريق تحديث عدد الأيام في INTERVAL 60 DAYS المقطع.

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)

الوظائف التي تعمل على الحوسبة لجميع الأغراض

ينضم هذا الاستعلام مع compute.clusters جدول النظام لإرجاع المهام الأخيرة التي يتم تشغيلها على حساب متعدد الأغراض بدلا من حساب الوظائف.

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;

تشغيل مهمة تمت إعادة المحاولة

يجمع هذا الاستعلام قائمة بالعمليات التي تمت إعادة محاولة تشغيلها مع عدد مرات إعادة المحاولة لكل تشغيل.

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;