التقاط دورة حياة البيانات وعرضها باستخدام كتالوج Unity

يمكنك استخدام كتالوج Unity لالتقاط دورة حياة بيانات وقت التشغيل عبر الاستعلامات التي يتم تشغيلها على Azure Databricks. دورة حياة البيانات معتمدة لجميع اللغات ويتم التقاطها وصولا إلى مستوى العمود. تتضمن بيانات دورة حياة البيانات دفاتر الملاحظات وسير العمل ولوحات المعلومات المتعلقة بالاستعلام. يمكن تصور دورة الحياة في مستكشف الكتالوج في الوقت الفعلي تقريبا واستردادها باستخدام Databricks REST API.

إشعار

يمكنك أيضا عرض بيانات دورة حياة البيانات والاستعلام عن بياناتها باستخدام جداول نظام دورة حياة البيانات (معاينة عامة). لمزيد من المعلومات، راجع مرجع جداول نظام دورة حياة البيانات.

يتم تجميع دورة حياة البيانات عبر جميع مساحات العمل المرفقة بمخزن بيانات تعريف كتالوج Unity. وهذا يعني أن دورة الحياة التي تم التقاطها في مساحة عمل واحدة مرئية في أي مشاركة مساحة عمل أخرى في metastore. يجب أن يكون لدى المستخدمين الأذونات الصحيحة لعرض بيانات دورة الحياة. يتم الاحتفاظ ببيانات دورة حياة البيانات لمدة سنة واحدة.

توضح هذه المقالة كيفية تصور دورة حياة البيانات باستخدام مستكشف الكتالوج وواجهة برمجة تطبيقات REST. للحصول على معلومات حول تعقب دورة حياة نموذج التعلم الآلي، راجع تعقب دورة حياة البيانات لنموذج في كتالوج Unity.

المتطلبات

فيما يلي مطلوب لالتقاط دورة حياة البيانات باستخدام كتالوج Unity:

  • يجب تمكين كتالوج Unity لمساحة العمل.

  • يجب تسجيل الجداول في مخزن بيانات تعريف كتالوج Unity.

  • يجب أن تستخدم الاستعلامات Spark DataFrame (على سبيل المثال، وظائف Spark SQL التي ترجع DataFrame) أو واجهات Databricks SQL. للحصول على أمثلة على استعلامات Databricks SQL وPySpark، راجع الأمثلة.

  • لعرض دورة حياة جدول أو طريقة عرض، يجب أن يكون لدى المستخدمين الامتياز على الأقل BROWSE في الكتالوج الأصل للجدول أو طريقة العرض.

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

  • لعرض دورة حياة البنية الأساسية لبرنامج ربط العمليات التجارية الممكنة لكتالوج Unity، يجب أن يكون لديك CAN_VIEW أذونات على البنية الأساسية لبرنامج ربط العمليات التجارية.

  • قد تحتاج إلى تحديث قواعد جدار الحماية الصادر للسماح بالاتصال بنقطة نهاية Event Hub في وحدة التحكم Azure Databricks. ينطبق هذا عادة إذا تم نشر مساحة عمل Azure Databricks في الشبكة الظاهرية الخاصة بك (المعروفة أيضا باسم حقن الشبكة الظاهرية). للحصول على نقطة نهاية Event Hub لمنطقة مساحة العمل الخاصة بك، راجع Metastore وتخزين البيانات الاصطناعية Blob وتخزين جداول النظام وتخزين Blob السجل وعناوين IP لنقطة نهاية مركز الأحداث. للحصول على معلومات حول إعداد المسارات المعرفة من قبل المستخدم (UDR) ل Azure Databricks، راجع إعدادات المسار المعرفة من قبل المستخدم ل Azure Databricks.

القيود

  • يتم دعم الدفق بين جداول Delta فقط في Databricks Runtime 11.3 LTS أو أعلى.

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

    يمكنك تصفية بيانات دورة حياة البيانات حسب الإطار الزمني. عند تحديد "كافة النسب"، يتم عرض بيانات دورة الحياة التي تم جمعها بدءا من يونيو 2023.

  • لا تتوفر مهام سير العمل التي تستخدم طلب Jobs API runs submit عند عرض دورة حياة البيانات. لا يزال يتم التقاط دورة حياة مستوى الجدول والعمود عند استخدام runs submit الطلب، ولكن لا يتم التقاط الارتباط إلى التشغيل.

  • يلتقط كتالوج Unity دورة حياة البيانات إلى مستوى العمود قدر الإمكان. ومع ذلك، هناك بعض الحالات التي لا يمكن فيها التقاط دورة حياة على مستوى العمود.

  • يتم دعم دورة حياة العمود فقط عندما تتم الإشارة إلى كل من المصدر والهدف بواسطة اسم الجدول (مثال: select * from <catalog>.<schema>.<table>). لا يمكن التقاط دورة حياة العمود إذا تمت معالجة المصدر أو الهدف حسب المسار (مثال: select * from delta."s3://<bucket>/<path>").

  • إذا تمت إعادة تسمية جدول، فلن يتم التقاط دورة حياة للجدول الذي تمت إعادة تسميته.

  • إذا كنت تستخدم نقاط التحقق لمجموعة بيانات Spark SQL، فلن يتم التقاط دورة الحياة. راجع pyspark.sql.DataFrame.checkpoint في وثائق Apache Spark.

  • يلتقط كتالوج Unity دورة حياة البيانات من خطوط أنابيب Delta Live Tables في معظم الحالات. ومع ذلك، في بعض الحالات، لا يمكن ضمان تغطية دورة الحياة الكاملة، مثل عندما تستخدم المسارات واجهة برمجة تطبيقات APPLY CHANGES أو جداول TEMPORARY.

امثله

إشعار

  • تستخدم الأمثلة التالية اسم 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 وانقر فوق بحث lineage_data.lineagedemo.dinner في Databricks.

  2. ضمن جداول، انقر فوق dinner الجدول.

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

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

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

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

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

  7. لعرض دورة حياة مستوى العمود، انقر فوق عمود في الرسم البياني لإظهار ارتباطات إلى أعمدة ذات صلة. على سبيل المثال، يؤدي النقر فوق العمود "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 وانقر فوق بحث lineage_data.lineagedemo.price في Databricks.

  4. ضمن جداول، انقر فوق price الجدول.

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

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

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

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

يتم تسجيل دورة حياة البيانات أيضا لأي سير عمل يقرأ أو يكتب في كتالوج 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 وانقر فوق بحث lineage_data.lineagedemo.menu في Databricks.

  8. ضمن جداول عرض كافة الجداول، انقر فوق menu الجدول.

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

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

لإظهار عرض دورة حياة البيانات للوحة معلومات SQL، استخدم الخطوات التالية:

  1. انتقل إلى الصفحة المقصودة ل Azure Databricks وافتح مستكشف الكتالوج بالنقر فوق كتالوج في الشريط الجانبي.
  2. انقر فوق اسم الكتالوج، وانقر فوق دورة حياة البيانات، وحدد menu الجدول. يمكنك أيضا استخدام مربع النص بحث في الجداول في الشريط العلوي للبحث عن menu الجدول.
  3. انقر فوق إجراءات > إنشاء لوحة معلومات سريعة.
  4. حدد الأعمدة لإضافتها إلى لوحة المعلومات وانقر فوق إنشاء.
  5. في مربع البحث في الشريط العلوي من مساحة عمل Azure Databricks، أدخل lineage_data.lineagedemo.menu وانقر فوق بحث lineage_data.lineagedemo.menu في Databricks.
  6. ضمن جداول عرض كافة الجداول، انقر فوق 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 يوما.

واجهة برمجة تطبيقات دورة حياة البيانات

تسمح لك واجهة برمجة تطبيقات دورة حياة البيانات باسترداد دورة حياة الجدول والأعمدة.

هام

للوصول إلى واجهات برمجة تطبيقات 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"
    }
  ]
}