مرجع جدول نظام الوظائف
توفر هذه المقالة مرجعا لكيفية استخدام workflow
جداول النظام لمراقبة المهام في حسابك. تتضمن هذه الجداول سجلات من جميع مساحات العمل في حسابك المنشورة داخل نفس منطقة السحابة. لمشاهدة السجلات من مناطق أخرى، تحتاج إلى عرض الجداول من مساحة عمل تم نشرها في تلك المنطقة.
system.workflow
يجب تمكينه بواسطة مسؤول حساب. يمكنك تمكينه باستخدام واجهة برمجة تطبيقات SystemSchemas.
للحصول على أمثلة حول استخدام هذه الجداول لتكلفة الوظيفة وإمكانية مراقبة السلامة، راجع مراقبة تكاليف الوظائف باستخدام جداول النظام.
جداول الوظائف المتوفرة
تعيش جميع جداول النظام المتعلقة بالوظائف في system.workflow
المخطط. حاليا، يستضيف المخطط أربعة جداول:
jobs
: يتعقب الإنشاء والحذف والمعلومات الأساسية للوظائف.job_tasks
: يتعقب الإنشاء والحذف والمعلومات الأساسية للمهام الوظيفية.job_run_timeline
: يسجل البداية والنهاية والحالة الناتجة عن تشغيل المهمة.job_task_run_timeline
: يسجل بداية المهام الوظيفية وانتهاءها وحالتها الناتجة.
مخطط جدول الوظيفة
jobs
الجدول هو جدول أبعاد متغير ببطء. عند تغيير صف، يتم إصدار صف جديد، ليحل محل الصف السابق منطقيا.
يستخدم الجدول المخطط التالي:
اسم العمود | نوع البيانات | الوصف |
---|---|---|
account_id |
سلسلة | معرف الحساب الذي تنتمي إليه هذه الوظيفة. |
workspace_id |
سلسلة | معرف مساحة العمل التي تنتمي إليها هذه المهمة. |
job_id |
سلسلة | معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة. |
name |
سلسلة | اسم الوظيفة الذي يوفره المستخدم. |
creator_id |
سلسلة | معرف المدير الذي أنشأ الوظيفة. |
tags |
سلسلة | العلامات المخصصة التي يوفرها المستخدم المقترنة بهذه المهمة. |
change_time |
الطابع الزمني | الوقت الذي تم فيه تعديل الوظيفة آخر مرة. |
delete_time |
الطابع الزمني | الوقت الذي تم فيه حذف المهمة من قبل المستخدم. |
run_as |
سلسلة | معرف المستخدم أو كيان الخدمة الذي يتم استخدام أذوناته لتشغيل المهمة. |
مخطط جدول مهمة المهمة
job_tasks
الجدول هو جدول أبعاد متغير ببطء. عند تغيير صف، يتم إصدار صف جديد، ليحل محل الصف السابق منطقيا.
يستخدم الجدول المخطط التالي:
اسم العمود | نوع البيانات | الوصف |
---|---|---|
account_id |
سلسلة | معرف الحساب الذي تنتمي إليه هذه الوظيفة. |
workspace_id |
سلسلة | معرف مساحة العمل التي تنتمي إليها هذه المهمة. |
job_id |
سلسلة | معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة. |
task_key |
سلسلة | المفتاح المرجعي لمهمة في وظيفة. هذا المفتاح فريد فقط داخل وظيفة واحدة. |
depends_on_keys |
صفيف | مفاتيح المهام لجميع تبعيات المصدر لهذه المهمة. |
change_time |
الطابع الزمني | الوقت الذي تم فيه تعديل المهمة آخر مرة. |
delete_time |
الطابع الزمني | الوقت الذي تم فيه حذف مهمة من قبل المستخدم. |
مخطط جدول المخطط الزمني لتشغيل المهمة
job_run_timeline
الجدول غير قابل للتغيير وكامل في وقت إنتاجه.
يستخدم الجدول المخطط التالي:
اسم العمود | نوع البيانات | الوصف |
---|---|---|
account_id |
سلسلة | معرف الحساب الذي تنتمي إليه هذه الوظيفة. |
workspace_id |
سلسلة | معرف مساحة العمل التي تنتمي إليها هذه المهمة. |
job_id |
سلسلة | معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة. |
run_id |
سلسلة | معرف تشغيل الوظيفة. |
period_start_time |
الطابع الزمني | وقت البدء للتشغيل أو للفترة الزمنية. |
period_end_time |
الطابع الزمني | وقت انتهاء التشغيل أو الفترة الزمنية. |
trigger_type |
سلسلة | نوع المشغل الذي يمكنه تشغيل. |
result_state |
سلسلة | نتيجة تشغيل الوظيفة. راجع القيم المحتملة أسفل هذا الجدول. |
القيم المحتملة result_state
للعمود هي:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
القيم المحتملة trigger_type
للعمود هي:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
مخطط جدول المخطط الزمني لتشغيل مهمة المهمة
job_task_run_timeline
الجدول غير قابل للتغيير وكامل في وقت إنتاجه.
يستخدم الجدول المخطط التالي:
اسم العمود | نوع البيانات | الوصف |
---|---|---|
account_id |
سلسلة | معرف الحساب الذي تنتمي إليه هذه الوظيفة. |
workspace_id |
سلسلة | معرف مساحة العمل التي تنتمي إليها هذه المهمة. |
job_id |
سلسلة | معرف الوظيفة. هذا المفتاح فريد فقط داخل مساحة عمل واحدة. |
run_id |
سلسلة | معرف تشغيل المهمة. |
period_start_time |
الطابع الزمني | وقت البدء للمهمة أو الفترة الزمنية. |
period_end_time |
الطابع الزمني | وقت انتهاء المهمة أو الفترة الزمنية. |
task_key |
سلسلة | المفتاح المرجعي لمهمة في وظيفة. هذا المفتاح فريد فقط داخل وظيفة واحدة. |
compute_ids |
صفيف | صفيف يحتوي على معرفات الوظائف غير التي لا تحتوي على خادم حوسبة ومستودعات SQL بدون خادم التي تستخدمها مهمة الوظيفة. |
result_state |
سلسلة | نتيجة تشغيل المهمة الوظيفية. |
القيم المحتملة result_state
للعمود هي:
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
مثال على الاستعلامات
يتضمن هذا القسم نماذج الاستعلامات التي يمكنك استخدامها لتحقيق أقصى استفادة من جداول سير العمل.
- الحصول على أحدث إصدار من الوظائف
- عدد الوظائف اليومية حسب مساحة العمل
- توزيع حالة الوظيفة اليومية حسب مساحة العمل
- نظرة عامة على أطول الوظائف قيد التشغيل
- تحليل تشغيل المهمة
- الوظائف التي تعمل على الحوسبة لجميع الأغراض
- تشغيل مهمة تمت إعادة المحاولة
الحصول على أحدث إصدار من الوظائف
نظرا لأن الجدولين jobs
و job_tasks
يغيران جداول الأبعاد ببطء، يتم إنشاء سجل جديد في كل مرة يتم فيها إجراء تغيير. للحصول على أحدث إصدار من وظيفة، يمكنك الطلب حسب change_time
العمود.
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.workflow.jobs QUALIFY rn=1
عدد الوظائف اليومية حسب مساحة العمل
يحصل هذا الاستعلام على عدد المهام اليومية حسب مساحة العمل لآخر 7 أيام:
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
توزيع حالة الوظيفة اليومية حسب مساحة العمل
يقوم هذا الاستعلام بإرجاع عدد الوظائف اليومية حسب مساحة العمل لآخر 7 أيام، موزعة حسب نتيجة تشغيل الوظيفة. يزيل الاستعلام أي سجلات تكون فيها المهام في حالة معلقة أو قيد التشغيل.
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
نظرة عامة على أطول الوظائف قيد التشغيل
يقوم هذا الاستعلام بإرجاع متوسط وقت تشغيل المهمة، مقاسا بالثوان. يتم تنظيم السجلات حسب الوظيفة. يظهر أعلى 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.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
تحليل تشغيل المهمة
يوفر هذا الاستعلام وقت تشغيل تاريخي لوظيفة معينة. لكي يعمل الاستعلام، يجب عليك تعيين 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.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)
الوظائف التي تعمل على الحوسبة لجميع الأغراض
ينضم هذا الاستعلام مع 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.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;
تشغيل مهمة تمت إعادة المحاولة
يجمع هذا الاستعلام قائمة بالعمليات التي تمت إعادة محاولة تشغيلها مع عدد مرات إعادة المحاولة لكل تشغيل.
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;
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ