التقاط دورة حياة البيانات وعرضها باستخدام كتالوج 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`;
    

التقاط دورة حياة البيانات واستكشافها

لالتقاط بيانات دورة حياة البيانات:

  1. انتقل إلى الصفحة المقصودة ل Azure Databricks، وانقر فوق أيقونة جديدة جديد في الشريط الجانبي، وحدد دفتر الملاحظات من القائمة.

  2. أدخل اسما لدفتر الملاحظات وحدد SQL في اللغة الافتراضية.

  3. في نظام المجموعة، حدد نظام مجموعة مع الوصول إلى كتالوج Unity.

  4. انقر فوق Create.

  5. في خلية دفتر الملاحظات الأولى، أدخل الاستعلامات التالية:

    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
    
  6. لتشغيل الاستعلامات، انقر في الخلية واضغط على shift+enter أو انقر وحدد قائمة التشغيل Run Cell.

لاستخدام مستكشف الكتالوج لعرض دورة حياة البيانات التي تم إنشاؤها بواسطة هذه الاستعلامات:

  1. في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث lineage_data.lineagedemo.dinner عن الجدول وحدده.

  2. حدد علامة التبويب دورة الحياة. تظهر لوحة دورة الحياة وتعرض الجداول ذات الصلة (في هذا المثال هو menu الجدول).

  3. لعرض رسم بياني تفاعلي لنواة البيانات، انقر فوق عرض الرسم البياني دورة حياة البيانات. بشكل افتراضي، يتم عرض مستوى واحد في الرسم البياني. انقر فوق الأيقونة الموجودة أيقونة علامة الجمع على عقدة للكشف عن المزيد من الاتصالات إذا كانت متوفرة.

  4. انقر فوق سهم يربط العقد في الرسم البياني دورة الحياة لفتح لوحة اتصال دورة الحياة. تعرض لوحة اتصال دورة حياة البيانات تفاصيل حول الاتصال، بما في ذلك جداول المصدر والهدف ودفاتر الملاحظات والمهام.

    رسم بياني عن دورة حياة البيانات

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

  6. لعرض دورة حياة مستوى العمود، انقر فوق عمود في الرسم البياني لإظهار ارتباطات إلى أعمدة ذات صلة. على سبيل المثال، يؤدي النقر فوق العمود "full_menu" إلى إظهار الأعمدة المصدر التي تم اشتقاق العمود منها:

    دورة حياة عمود القائمة الكاملة

لعرض دورة حياة البيانات باستخدام لغة مختلفة، على سبيل المثال، Python:

  1. افتح دفتر الملاحظات الذي أنشأته مسبقا، وأنشئ خلية جديدة، وأدخل التعليمة البرمجية ل 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")
    
  2. قم بتشغيل الخلية بالنقر في الخلية والضغط على shift+enter أو النقر فوق قائمة التشغيل تشغيل الخلية وتحديدها.

  3. في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث lineage_data.lineagedemo.price عن الجدول وحدده.

  4. انتقل إلى علامة التبويب دورة حياة البيانات وانقر فوق عرض الرسم البياني النسب. انقر فوق الأيقونات أيقونة علامة الجمع لاستكشاف دورة حياة البيانات التي تم إنشاؤها بواسطة الاستعلامات.

    رسم بياني موسع لنواة الحياة

  5. انقر فوق سهم يربط العقد في الرسم البياني دورة الحياة لفتح لوحة اتصال دورة الحياة. تعرض لوحة اتصال دورة حياة البيانات تفاصيل حول الاتصال، بما في ذلك جداول المصدر والهدف ودفاتر الملاحظات والمهام.

التقاط دورة حياة سير العمل وعرضها

يتم تسجيل دورة حياة البيانات أيضا لأي سير عمل يقرأ أو يكتب في كتالوج Unity. لعرض دورة حياة سير عمل Azure Databricks:

  1. انقر فوق أيقونة جديدة جديد في الشريط الجانبي وحدد دفتر الملاحظات من القائمة.

  2. أدخل اسما لدفتر الملاحظات وحدد SQL في اللغة الافتراضية.

  3. انقر فوق Create.

  4. في خلية دفتر الملاحظات الأولى، أدخل الاستعلام التالي:

    SELECT * FROM lineage_data.lineagedemo.menu
    
  5. انقر فوق جدولة في الشريط العلوي. في مربع حوار الجدول، حدد يدوي، وحدد مجموعة مع حق الوصول إلى كتالوج Unity، وانقر فوق إنشاء.

  6. انقر فوق تشغيل الآن.

  7. في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، ابحث lineage_data.lineagedemo.menu عن الجدول وحدده.

  8. على علامة التبويب دورة حياة البيانات، انقر فوق مهام سير العمل، وحدد علامة التبويب انتقال البيانات من الخادم . يظهر اسم الوظيفة ضمن اسم الوظيفة كمستهلك للجدول menu .

التقاط دورة حياة لوحة المعلومات وعرضها

لإنشاء لوحة معلومات وعرض دورة حياة البيانات الخاصة بها:

  1. انتقل إلى الصفحة المقصودة ل Azure Databricks وافتح مستكشف الكتالوج بالنقر فوق كتالوج في الشريط الجانبي.

  2. انقر فوق اسم الكتالوج، وانقر فوق دورة حياة البيانات، وحدد menu الجدول. يمكنك أيضا استخدام مربع البحث في الشريط العلوي للبحث عن menu الجدول.

  3. انقر فوق فتح في لوحة معلومات.

  4. حدد الأعمدة التي تريد إضافتها إلى لوحة المعلومات وانقر فوق إنشاء.

  5. نشر لوحة المعلومات.

    يتم تعقب لوحات المعلومات المنشورة فقط في دورة حياة البيانات.

  6. في المربع بحث في الشريط العلوي، ابحث lineage_data.lineagedemo.menu عن الجدول وحدده.

  7. على علامة التبويب دورة حياة البيانات، انقر فوق لوحات المعلومات. تظهر لوحة المعلومات ضمن اسم لوحة المعلومات كمستهلك لجدول القائمة.

أذونات دورة حياة البيانات

تشترك الرسوم البيانية لنواة البيانات في نفس نموذج الإذن مثل كتالوج 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 في دورة حياة البيانات.