التقاط دورة حياة البيانات وعرضها باستخدام كتالوج Unity
توضح هذه المقالة كيفية التقاط دورة حياة البيانات وتصورها باستخدام مستكشف الكتالوج وجداول نظام دورة حياة البيانات وواجهة برمجة تطبيقات REST.
يمكنك استخدام كتالوج Unity لالتقاط دورة حياة بيانات وقت التشغيل عبر الاستعلامات التي يتم تشغيلها على Azure Databricks. دورة حياة البيانات معتمدة لجميع اللغات ويتم التقاطها وصولا إلى مستوى العمود. تتضمن بيانات دورة حياة البيانات دفاتر الملاحظات والوظائف ولوحات المعلومات المتعلقة بالاستعلام. يمكن تصور دورة الحياة في مستكشف الكتالوج في الوقت الفعلي تقريبا واستردادها برمجيا باستخدام جداول نظام دورة حياة البيانات وواجهة برمجة تطبيقات Rest Databricks.
يتم تجميع دورة حياة البيانات عبر جميع مساحات العمل المرفقة بمخزن بيانات تعريف كتالوج Unity. وهذا يعني أن دورة الحياة التي تم التقاطها في مساحة عمل واحدة مرئية في أي مشاركة مساحة عمل أخرى في metastore. يجب أن يكون لدى المستخدمين الأذونات الصحيحة لعرض بيانات دورة الحياة. يتم الاحتفاظ ببيانات دورة حياة البيانات لمدة سنة واحدة.
الصورة التالية هي رسم بياني نموذجي عن دورة حياة البيانات. تتم معالجة وظائف دورة حياة البيانات والأمثلة المحددة لاحقا في هذه المقالة.
للحصول على معلومات حول تعقب دورة حياة نموذج التعلم الآلي، راجع تعقب دورة حياة البيانات لنموذج في كتالوج Unity.
المتطلبات
فيما يلي مطلوب لالتقاط دورة حياة البيانات باستخدام كتالوج Unity:
يجب تمكين كتالوج Unity لمساحة العمل.
يجب تسجيل الجداول في مخزن بيانات تعريف كتالوج Unity.
يجب أن تستخدم الاستعلامات Spark DataFrame (على سبيل المثال، وظائف Spark SQL التي ترجع DataFrame) أو واجهات Databricks SQL. للحصول على أمثلة على استعلامات Databricks SQL وPySpark، راجع الأمثلة.
لعرض دورة حياة جدول أو طريقة عرض، يجب أن يكون لدى المستخدمين الامتياز على الأقل
BROWSE
في الكتالوج الأصل للجدول أو طريقة العرض. يجب أن يكون الكتالوج الأصل أيضا قابلا للوصول من مساحة العمل. راجع تقييد وصول الكتالوج إلى مساحات عمل معينة.لعرض معلومات دورة حياة دفاتر الملاحظات أو المهام أو لوحات المعلومات، يجب أن يكون لدى المستخدمين أذونات على هذه العناصر كما هو محدد بواسطة إعدادات التحكم بالوصول في مساحة العمل. راجع أذونات دورة حياة البيانات.
لعرض دورة حياة البنية الأساسية لبرنامج ربط العمليات التجارية الممكنة لكتالوج Unity، يجب أن يكون لديك
CAN_VIEW
أذونات على البنية الأساسية لبرنامج ربط العمليات التجارية.يتطلب تتبع دورة حياة البيانات للتدفق بين جداول دلتا Databricks Runtime 11.3 LTS أو أعلى.
يتطلب تعقب دورة حياة الأعمدة لأحمال عمل Delta Live Tables Databricks Runtime 13.3 LTS أو أعلى.
قد تحتاج إلى تحديث قواعد جدار الحماية الصادرة للسماح بالاتصال بنقطة نهاية مراكز الأحداث في مستوى التحكم Azure Databricks. ينطبق هذا عادة إذا تم نشر مساحة عمل Azure Databricks في الشبكة الظاهرية الخاصة بك (المعروفة أيضا باسم حقن الشبكة الظاهرية). للحصول على نقطة نهاية مراكز الأحداث لمنطقة مساحة العمل الخاصة بك، راجع Metastore وتخزين البيانات الاصطناعية Blob وتخزين جداول النظام وتخزين Blob السجل وعناوين IP لنقطة نهاية مراكز الأحداث. للحصول على معلومات حول إعداد المسارات المعرفة من قبل المستخدم (UDR) ل Azure Databricks، راجع إعدادات المسار المعرفة من قبل المستخدم ل Azure Databricks.
امثله
إشعار
تستخدم الأمثلة التالية اسم
lineage_data
الكتالوج واسمlineagedemo
المخطط . لاستخدام كتالوج ومخطط مختلفين، قم بتغيير الأسماء المستخدمة في الأمثلة.لإكمال هذا المثال، يجب أن يكون لديك
CREATE
وامتيازاتUSE SCHEMA
على مخطط. يمكن لمسؤول metastore أو مالك الكتالوج أو مالك المخطط منح هذه الامتيازات. على سبيل المثال، لمنح جميع المستخدمين في المجموعة "data_engineers" الإذن لإنشاء جداول فيlineagedemo
المخطط في الكتالوجlineage_data
، يمكن للمستخدم الذي لديه أحد الامتيازات أو الأدوار المذكورة أعلاه تشغيل الاستعلامات التالية:CREATE SCHEMA lineage_data.lineagedemo; GRANT USE SCHEMA, CREATE on SCHEMA lineage_data.lineagedemo to `data_engineers`;
التقاط دورة حياة البيانات واستكشافها
لالتقاط بيانات دورة حياة البيانات:
انتقل إلى الصفحة المقصودة ل Azure Databricks، وانقر فوق جديد في الشريط الجانبي، وحدد دفتر الملاحظات من القائمة.
أدخل اسما لدفتر الملاحظات وحدد SQL في اللغة الافتراضية.
في نظام المجموعة، حدد نظام مجموعة مع الوصول إلى كتالوج Unity.
انقر فوق Create.
في خلية دفتر الملاحظات الأولى، أدخل الاستعلامات التالية:
CREATE TABLE IF NOT EXISTS lineage_data.lineagedemo.menu ( recipe_id INT, app string, main string, dessert string ); INSERT INTO lineage_data.lineagedemo.menu (recipe_id, app, main, dessert) VALUES (1,"Ceviche", "Tacos", "Flan"), (2,"Tomato Soup", "Souffle", "Creme Brulee"), (3,"Chips","Grilled Cheese","Cheesecake"); CREATE TABLE lineage_data.lineagedemo.dinner AS SELECT recipe_id, concat(app," + ", main," + ",dessert) AS full_menu FROM lineage_data.lineagedemo.menu
لتشغيل الاستعلامات، انقر في الخلية واضغط على shift+enter أو انقر وحدد Run Cell.
لاستخدام مستكشف الكتالوج لعرض دورة حياة البيانات التي تم إنشاؤها بواسطة هذه الاستعلامات:
في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث
lineage_data.lineagedemo.dinner
عن الجدول وحدده.حدد علامة التبويب دورة الحياة. تظهر لوحة دورة الحياة وتعرض الجداول ذات الصلة (في هذا المثال هو
menu
الجدول).لعرض رسم بياني تفاعلي لنواة البيانات، انقر فوق عرض الرسم البياني دورة حياة البيانات. بشكل افتراضي، يتم عرض مستوى واحد في الرسم البياني. انقر فوق الأيقونة الموجودة على عقدة للكشف عن المزيد من الاتصالات إذا كانت متوفرة.
انقر فوق سهم يربط العقد في الرسم البياني دورة الحياة لفتح لوحة اتصال دورة الحياة. تعرض لوحة اتصال دورة حياة البيانات تفاصيل حول الاتصال، بما في ذلك جداول المصدر والهدف ودفاتر الملاحظات والمهام.
لإظهار دفتر الملاحظات المقترن
dinner
بالجدول، حدد دفتر الملاحظات في لوحة اتصال دورة حياة البيانات أو أغلق الرسم البياني لنسل البيانات وانقر فوق دفاتر الملاحظات. لفتح دفتر الملاحظات في علامة تبويب جديدة، انقر فوق اسم دفتر الملاحظات.لعرض دورة حياة مستوى العمود، انقر فوق عمود في الرسم البياني لإظهار ارتباطات إلى أعمدة ذات صلة. على سبيل المثال، يؤدي النقر فوق العمود "full_menu" إلى إظهار الأعمدة المصدر التي تم اشتقاق العمود منها:
لعرض دورة حياة البيانات باستخدام لغة مختلفة، على سبيل المثال، Python:
افتح دفتر الملاحظات الذي أنشأته مسبقا، وأنشئ خلية جديدة، وأدخل التعليمة البرمجية ل Python التالية:
%python from pyspark.sql.functions import rand, round df = spark.range(3).withColumn("price", round(10*rand(seed=42),2)).withColumnRenamed("id","recipe_id") df.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.price") dinner = spark.read.table("lineage_data.lineagedemo.dinner") price = spark.read.table("lineage_data.lineagedemo.price") dinner_price = dinner.join(price, on="recipe_id") dinner_price.write.mode("overwrite").saveAsTable("lineage_data.lineagedemo.dinner_price")
قم بتشغيل الخلية بالنقر في الخلية والضغط على shift+enter أو النقر فوق تشغيل الخلية وتحديدها.
في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث
lineage_data.lineagedemo.price
عن الجدول وحدده.انتقل إلى علامة التبويب دورة حياة البيانات وانقر فوق عرض الرسم البياني النسب. انقر فوق الأيقونات لاستكشاف دورة حياة البيانات التي تم إنشاؤها بواسطة الاستعلامات.
انقر فوق سهم يربط العقد في الرسم البياني دورة الحياة لفتح لوحة اتصال دورة الحياة. تعرض لوحة اتصال دورة حياة البيانات تفاصيل حول الاتصال، بما في ذلك جداول المصدر والهدف ودفاتر الملاحظات والمهام.
التقاط دورة حياة سير العمل وعرضها
يتم تسجيل دورة حياة البيانات أيضا لأي سير عمل يقرأ أو يكتب في كتالوج Unity. لعرض دورة حياة سير عمل Azure Databricks:
انقر فوق جديد في الشريط الجانبي وحدد دفتر الملاحظات من القائمة.
أدخل اسما لدفتر الملاحظات وحدد SQL في اللغة الافتراضية.
انقر فوق Create.
في خلية دفتر الملاحظات الأولى، أدخل الاستعلام التالي:
SELECT * FROM lineage_data.lineagedemo.menu
انقر فوق جدولة في الشريط العلوي. في مربع حوار الجدول، حدد يدوي، وحدد مجموعة مع حق الوصول إلى كتالوج Unity، وانقر فوق إنشاء.
انقر فوق تشغيل الآن.
في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث
lineage_data.lineagedemo.menu
عن الجدول وحدده.على علامة التبويب دورة حياة البيانات، انقر فوق مهام سير العمل، وحدد علامة التبويب انتقال البيانات من الخادم . يظهر اسم الوظيفة ضمن اسم الوظيفة كمستهلك للجدول
menu
.
التقاط دورة حياة لوحة المعلومات وعرضها
لإنشاء لوحة معلومات وعرض دورة حياة البيانات الخاصة بها:
انتقل إلى الصفحة المقصودة ل Azure Databricks وافتح مستكشف الكتالوج بالنقر فوق كتالوج في الشريط الجانبي.
انقر فوق اسم الكتالوج، وانقر فوق دورة حياة البيانات، وحدد
menu
الجدول. يمكنك أيضا استخدام مربع البحث في الشريط العلوي للبحث عنmenu
الجدول.انقر فوق فتح في لوحة معلومات.
حدد الأعمدة التي تريد إضافتها إلى لوحة المعلومات وانقر فوق إنشاء.
نشر لوحة المعلومات.
يتم تعقب لوحات المعلومات المنشورة فقط في دورة حياة البيانات.
في المربع بحث في الشريط العلوي، ابحث
lineage_data.lineagedemo.menu
عن الجدول وحدده.على علامة التبويب دورة حياة البيانات، انقر فوق لوحات المعلومات. تظهر لوحة المعلومات ضمن اسم لوحة المعلومات كمستهلك لجدول القائمة.
أذونات دورة حياة البيانات
تشترك الرسوم البيانية لنواة البيانات في نفس نموذج الإذن مثل كتالوج Unity. إذا لم يكن لدى BROWSE
المستخدم امتياز أو SELECT
على جدول، فلن يتمكن من استكشاف دورة حياة البيانات. بالإضافة إلى ذلك، يمكن للمستخدمين رؤية دفاتر الملاحظات والوظائف ولوحات المعلومات التي لديهم الإذن بعرضها فقط. على سبيل المثال، إذا قمت بتشغيل الأوامر التالية لمستخدم userA
غير مسؤول :
GRANT USE SCHEMA on lineage_data.lineagedemo to `userA@company.com`;
GRANT SELECT on lineage_data.lineagedemo.menu to `userA@company.com`;
عند userA
عرض الرسم البياني لنضول البيانات للجدول lineage_data.lineagedemo.menu
، سيرون menu
الجدول. لن يتمكنوا من رؤية معلومات حول الجداول المقترنة، مثل جدول انتقال البيانات من الخادم lineage_data.lineagedemo.dinner
. dinner
يتم عرض الجدول كعقدة masked
في العرض إلى userA
، ولا userA
يمكن توسيع الرسم البياني للكشف عن جداول انتقال البيانات من الجداول التي ليس لديها إذن للوصول إليها.
إذا قمت بتشغيل الأمر التالي لمنح BROWSE
الإذن لمستخدم userB
غير مسؤول :
GRANT BROWSE on lineage_data to `userA@company.com`;
userB
يمكنه الآن عرض الرسم البياني النسب لأي جدول في lineage_data
المخطط.
لمزيد من المعلومات حول إدارة الوصول إلى الكائنات القابلة للتأمين في كتالوج Unity، راجع إدارة الامتيازات في كتالوج Unity. لمزيد من المعلومات حول إدارة الوصول إلى كائنات مساحة العمل مثل دفاتر الملاحظات والمهام ولوحات المعلومات، راجع قوائم التحكم في الوصول.
حذف بيانات دورة حياة البيانات
تحذير
تحذف الإرشادات التالية جميع الكائنات المخزنة في كتالوج Unity. استخدم هذه الإرشادات فقط إذا لزم الأمر. على سبيل المثال، لتلبية متطلبات التوافق.
لحذف بيانات دورة حياة البيانات، يجب حذف metastore الذي يدير كائنات كتالوج Unity. لمزيد من المعلومات حول حذف metastore، راجع حذف metastore. سيتم حذف البيانات في غضون 90 يوما.
بيانات دورة حياة الاستعلام باستخدام جداول النظام
يمكنك استخدام جداول نظام دورة حياة البيانات للاستعلام برمجيا عن بيانات دورة حياة البيانات. للحصول على إرشادات مفصلة، راجع مراقبة الاستخدام باستخدام جداول النظام ومرجع جداول نظام دورة حياة البيانات.
إذا كانت مساحة العمل الخاصة بك في منطقة لا تدعم جداول نظام دورة حياة البيانات، يمكنك بدلا من ذلك استخدام Data Lineage REST API لاسترداد بيانات دورة حياة البيانات برمجيا.
استرداد دورة حياة البيانات باستخدام واجهة برمجة تطبيقات REST دورة حياة البيانات
تسمح لك واجهة برمجة تطبيقات دورة حياة البيانات باسترداد دورة حياة الجدول والأعمدة. ومع ذلك، إذا كانت مساحة العمل الخاصة بك في منطقة تدعم جداول نظام دورة حياة البيانات، يجب استخدام استعلامات جدول النظام بدلا من واجهة برمجة تطبيقات REST. تعد جداول النظام خيارا أفضل للاسترداد البرمجي لبيانات دورة حياة البيانات. تدعم معظم المناطق جداول نظام دورة حياة البيانات.
هام
للوصول إلى واجهات برمجة تطبيقات Databricks REST، يجب عليك المصادقة.
استرداد دورة حياة الجدول
يسترد هذا المثال بيانات dinner
دورة حياة الجدول.
طلب
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/table-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "include_entity_lineage": true}'
استبدل <workspace-instance>
.
يستخدم هذا المثال ملف .netrc .
استجابة
{
"upstreams": [
{
"tableInfo": {
"name": "menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
],
"downstreams": [
{
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
},
{
"tableInfo": {
"name": "dinner_price",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_type": "TABLE"
},
"notebookInfos": [
{
"workspace_id": 4169371664718798,
"notebook_id": 1111169262439324
}
]
}
]
}
استرداد دورة حياة الأعمدة
يسترد هذا المثال بيانات العمود للجدول dinner
.
طلب
curl --netrc -X GET \
-H 'Content-Type: application/json' \
https://<workspace-instance>/api/2.0/lineage-tracking/column-lineage \
-d '{"table_name": "lineage_data.lineagedemo.dinner", "column_name": "dessert"}'
استبدل <workspace-instance>
.
يستخدم هذا المثال ملف .netrc .
استجابة
{
"upstream_cols": [
{
"name": "dessert",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "main",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
},
{
"name": "app",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "menu",
"table_type": "TABLE"
}
],
"downstream_cols": [
{
"name": "full_menu",
"catalog_name": "lineage_data",
"schema_name": "lineagedemo",
"table_name": "dinner_price",
"table_type": "TABLE"
}
]
}
القيود
- نظرا لأن دورة الحياة يتم حسابها على نافذة متداولة لمدة عام واحد، لا يتم عرض دورة الحياة التي تم جمعها منذ أكثر من عام. على سبيل المثال، إذا كانت مهمة أو استعلام يقرأ البيانات من الجدول A ويكتب إلى الجدول B، يتم عرض الارتباط بين الجدول A والجدول B لمدة سنة واحدة فقط. يمكنك تصفية بيانات دورة حياة البيانات حسب الإطار الزمني ضمن نافذة سنة واحدة.
- لا تتوفر المهام التي تستخدم طلب واجهة برمجة تطبيقات
runs submit
الوظائف عند عرض دورة حياة البيانات. لا يزال يتم التقاط دورة حياة مستوى الجدول والعمود عند استخدامruns submit
الطلب، ولكن لا يتم التقاط الارتباط إلى التشغيل. - يلتقط كتالوج Unity دورة حياة البيانات إلى مستوى العمود قدر الإمكان. ومع ذلك، هناك بعض الحالات التي لا يمكن فيها التقاط دورة حياة على مستوى العمود.
- يتم دعم دورة حياة العمود فقط عندما تتم الإشارة إلى كل من المصدر والهدف بواسطة اسم الجدول (مثال:
select * from <catalog>.<schema>.<table>
). لا يمكن التقاط دورة حياة العمود إذا تمت معالجة المصدر أو الهدف بواسطة المسار (مثال:select * from delta."s3://<bucket>/<path>"
). - إذا تمت إعادة تسمية جدول أو طريقة عرض، فلن يتم التقاط دورة حياة للجدول أو طريقة العرض التي تمت إعادة تسميتها.
- إذا تمت إعادة تسمية مخطط أو كتالوج، فلن يتم التقاط دورة حياة الجداول وطرق العرض ضمن الكتالوج أو المخطط الذي تمت إعادة تسميته.
- إذا كنت تستخدم نقاط التحقق لمجموعة بيانات Spark SQL، فلن يتم التقاط دورة الحياة.
- يلتقط كتالوج Unity دورة حياة البيانات من خطوط أنابيب Delta Live Tables في معظم الحالات. ومع ذلك، في بعض الحالات، لا يمكن ضمان تغطية دورة الحياة الكاملة، مثل عندما تستخدم المسارات واجهة برمجة تطبيقات APPLY CHANGES أو جداول TEMPORARY.
- لا تلتقط دورة حياة البيانات دالات Stack.
- لا يتم التقاط طرق العرض المؤقتة العمومية في دورة حياة البيانات.
- لا يتم التقاط الجداول الموجودة ضمن
system.information_schema
في دورة حياة البيانات.