تشغيل الاستعلامات الموحدة على Salesforce Data Cloud

توضح هذه المقالة كيفية إعداد Lakehouse Federation لتشغيل الاستعلامات الموحدة على بيانات Salesforce Data Cloud التي لا تتم إدارتها بواسطة Azure Databricks. لمعرفة المزيد حول Lakehouse Federation، راجع ما هو Lakehouse Federation؟.

للاتصال بقاعدة بيانات Salesforce Data Cloud باستخدام Lakehouse Federation، يجب عليك إنشاء ما يلي في مخزن metastore لكتالوج Azure Databricks Unity:

  • اتصال بقاعدة بيانات Salesforce Data Cloud.
  • كتالوج خارجي يعكس قاعدة بيانات Salesforce Data Cloud في كتالوج Unity بحيث يمكنك استخدام بناء جملة استعلام كتالوج Unity وأدوات إدارة البيانات لإدارة وصول مستخدم Azure Databricks إلى قاعدة البيانات.

قبل البدء

متطلبات مساحة العمل:

  • مساحة العمل ممكنة ل Unity Catalog.

متطلبات الحساب:

  • اتصال الشبكة من نظام مجموعة Databricks Runtime أو مستودع SQL إلى أنظمة قاعدة البيانات الهدف. راجع توصيات الشبكات ل Lakehouse Federation.
  • يجب أن تستخدم مجموعات Azure Databricks Databricks وقت تشغيل Databricks 15.2 أو أعلى ووضع الوصول المشترك أو الفردي للمستخدم.
  • يجب أن تكون مستودعات SQL Pro أو Serverless ويجب أن تستخدم 2024.30 أو أعلى.

الأذونات المطلوبة:

  • لإنشاء اتصال، يجب أن تكون مسؤول metastore أو مستخدما لديه CREATE CONNECTION الامتياز على مخزن بيانات تعريف كتالوج Unity المرفق بمساحة العمل.
  • لإنشاء كتالوج خارجي، يجب أن يكون لديك CREATE CATALOG الإذن على metastore وأن تكون إما مالك الاتصال أو أن يكون لديك CREATE FOREIGN CATALOG امتياز على الاتصال.

يتم تحديد متطلبات إذن إضافية في كل مقطع يستند إلى المهام التالية.

إنشاء تطبيق متصل ب Salesforce

تسمح تطبيقات Salesforce المتصلة لتطبيق خارجي بالتكامل مع Salesforce باستخدام واجهات برمجة التطبيقات والبروتوكولات القياسية. يصف هذا القسم كيفية إنشاء تطبيق متصل باستخدام SSO للسماح ل Databricks بالمصادقة مع Salesforce.

إشعار

للحصول على إرشادات أكثر تفصيلا، راجع إنشاء تطبيق متصل في وثائق Salesforce Data Cloud.

لإنشاء تطبيق متصل ب Salesforce، قم بما يلي:

  1. في الزاوية العلوية اليسرى من Data Cloud، انقر فوق Setup.
  2. ضمن أدوات النظام الأساسي، انقر فوق إدارة التطبيقات>.
  3. انقر فوق تطبيق متصل جديد.
  4. أدخل الاسم وعنوان البريد الإلكتروني لجهة الاتصال.
  5. تمكين إعدادات OAuth:
    1. أدخل عنوان URL لرد الاتصال بالتنسيق التالي: https://<databricks_instance_url>/login/oauth/salesforce.html. على سبيل المثال: https://cust-success.cloud.databricks.com/login/oauth/salesforce.html.
    2. (اختياري) إذا كنت تخطط لاستخدام SQL لإنشاء اتصال Azure Databricks والكتالوج الخارجي في الخطوة التالية، يحتاج تطبيق Salesforce المتصل أيضا إلى دعم عنوان URI https://login.salesforce.com/services/oauth2/successلإعادة التوجيه . لا يلزم ذلك إذا كنت تخطط لاستخدام مستكشف الكتالوج لإنشاء اتصال Azure Databricks والكتالوج الخارجي. توصي Databricks باستخدام مستكشف الكتالوج لأنه يتطلب خطوات يدوية أقل من الطرق الأخرى.
    3. أضف النطاقات التالية:
      • الوصول إلى جميع موارد واجهة برمجة تطبيقات سحابة البيانات (cdp_api)
      • إدارة بيانات المستخدم عبر واجهات برمجة التطبيقات (api)
      • تنفيذ استعلامات ANSI SQL على بيانات سحابة البيانات (cdp_query_api)
      • تنفيذ الطلبات في أي وقت (refresh_token، offline_access)
    4. انقر فوق حفظ.
    5. انقر فوق متابعة.
  6. في صفحة نظرة عامة على التطبيق المتصل، انقر فوق إدارة تفاصيل المستهلك. ستتم مطالبتك بالمصادقة.
  7. عند المصادقة الناجحة، يتم الكشف عن مفتاح المستهلك وسر المستهلك. احفظ هذه القيم. ستحتاج إليها عند إنشاء اتصال Azure Databricks.

إنشاء اتصال Azure Databricks

يحدد الاتصال مسارا وبيانات اعتماد للوصول إلى نظام قاعدة بيانات خارجي. لإنشاء اتصال، يمكنك استخدام مستكشف الكتالوج CREATE CONNECTION أو الأمر SQL في دفتر ملاحظات Azure Databricks أو محرر استعلام Databricks SQL.

إشعار

يمكنك أيضا استخدام Databricks REST API أو Databricks CLI لإنشاء اتصال. راجع أوامر POST /api/2.1/unity-catalog/connections وUnity Catalog.

الأذونات المطلوبة: مسؤول Metastore أو المستخدم الذي يتمتع بالامتياز CREATE CONNECTION .

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوج كتالوج.
  2. في الجزء الأيمن، قم بتوسيع قائمة البيانات الخارجية وحدد الاتصالات.
  3. انقر فوق إنشاء اتصال.
  4. أدخل اسم اتصال سهل الاستخدام.
  5. حدد نوع اتصال سحابة بيانات Salesforce.
  6. أدخل خصائص الاتصال التالية ل Salesforce Data Cloud.
    • نوع المصادقة: OAuth
    • هل بيئة الاختبار المعزولة false
    • (OAuth) سر العميل: سر مستهلك تطبيق Salesforce المتصل
    • (OAuth) معرف العميل: مفتاح مستهلك تطبيق Salesforce المتصل
    • (OAuth) نطاق العميل: cdp_api api cdp_query_api refresh_token offline_access
  7. انقر فوق تسجيل الدخول باستخدام Salesforce.
  8. (OAuth) تتم مطالبتك بتسجيل الدخول إلى Salesforce Data Cloud باستخدام بيانات اعتماد SSO الخاصة بك.
  9. عند تسجيل الدخول الناجح، يتم توجيهك مرة أخرى إلى صفحة Databricks Create Connection . تم استبدال الزر تسجيل الدخول باستخدام Salesforce برسالةSuccessfully authorized.
  10. (اختياري) إضافة تعليق.
  11. انقر فوق Create.

SQL

توصي Databricks باستخدام مستكشف الكتالوج لإنشاء الاتصال والكتالوج الخارجي لأنه يتطلب خطوات يدوية أقل من الطرق الأخرى.

إذا كنت تخطط لاستخدام SQL لإنشاء اتصال Azure Databricks والكتالوج الخارجي، يحتاج تطبيق Salesforce المتصل إلى دعم URI https://login.salesforce.com/services/oauth2/successلإعادة التوجيه . لا يلزم ذلك إذا كنت تستخدم مستكشف الكتالوج.

  1. إنشاء مدقق التعليمات البرمجية PKCE ورموز تحدي التعليمات البرمجية. يمكنك القيام بذلك باستخدام أداة عبر الإنترنت مثل https://tonyxu-io.github.io/pkce-generator/ أو عن طريق تشغيل البرنامج النصي Python التالي:

    %python
    
    import base64
    import re
    import os
    import hashlib
    
    code_verifier = base64.urlsafe_b64encode(os.urandom(40)).decode('utf-8')
    code_verifier = re.sub('[^a-zA-Z0-9]+', '', code_verifier)
    
    code_challenge = hashlib.sha256(code_verifier.encode('utf-8')).digest()
    code_challenge = base64.urlsafe_b64encode(code_challenge).decode('utf-8')
    code_challenge = code_challenge.replace('=', '')
    print(f"pkce_verifier  = \"{code_verifier}\"")
    print(f"code_challenge = \"{code_challenge}\"")
    
  2. تفضل بزيارة عنوان URL التالي وقم بالمصادقة باستخدام بيانات اعتماد Salesforce للحصول على authorization_code (استبدل <client_id> و <code_challenge> بمعلماتك).

    https://login.salesforce.com/services/oauth2/authorize
    ?client_id=<client_id>
    &redirect_uri=https://login.salesforce.com/services/oauth2/success
    &response_type=code
    &code_challenge=<code_challenge>
    

    رمز التخويل المشفر بعنوان URL مرئي في عنوان URL المعاد توجيهه.

  3. قم بتشغيل ما يلي في دفتر ملاحظات أو محرر استعلام Databricks SQL:

    CREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud
    OPTIONS (
      client_id '<Consumer key from Salesforce Connected App>',
      client_secret '<Consumer secret from Salesforce Connected App>',
      pkce_verifier '<pkce_verifier from the last step>',
      authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>',
      oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success",
      oauth_scope "cdp_api api cdp_query_api refresh_token offline access",
      is_sandbox "false"
      );
    

    توصي Databricks باستخدام أسرار Azure Databricks بدلا من سلاسل النص العادي للقيم الحساسة مثل بيانات الاعتماد. على سبيل المثال:

    CREATE CONNECTION '<Connection name>' TYPE salesforce_data_cloud
    OPTIONS (
      client_id secret ('<Secret scope>','<Secret key client id>'),
      client_secret secret ('<Secret scope>','<Secret key client secret>'),
      pkce_verifier '<pkce_verifier from the last step>',
      authorization_code '<URL decoded `authorization_code`, should end with == instead of %3D%3D>',
      oauth_redirect_uri "https://login.salesforce.com/services/oauth2/success",
      oauth_scope "cdp_api api cdp_query_api refresh_token offline access",
      is_sandbox "false"
      );
    

    للحصول على معلومات حول إعداد البيانات السرية، راجع إدارة البيانات السرية.

إنشاء كتالوج خارجي

يعكس الكتالوج الخارجي قاعدة بيانات في نظام بيانات خارجي بحيث يمكنك الاستعلام عن الوصول إلى البيانات وإدارتها في قاعدة البيانات هذه باستخدام Azure Databricks وUnity Catalog. لإنشاء كتالوج خارجي، يمكنك استخدام اتصال بمصدر البيانات الذي تم تعريفه بالفعل.

لإنشاء كتالوج خارجي، يمكنك استخدام مستكشف الكتالوج CREATE FOREIGN CATALOG أو أمر SQL في دفتر ملاحظات Azure Databricks أو محرر استعلام SQL.

إشعار

يمكنك أيضا استخدام Databricks REST API أو Databricks CLI لإنشاء كتالوج. راجع أوامر POST /api/2.1/unity-catalog/catalogs وUnity Catalog.

الأذونات المطلوبة: CREATE CATALOG إذن على metastore وإما ملكية الاتصال أو الامتياز CREATE FOREIGN CATALOG على الاتصال.

مستكشف الكتالوج

  1. في مساحة عمل Azure Databricks، انقر فوق أيقونة الكتالوج كتالوج لفتح مستكشف الكتالوج.
  2. في أعلى اليمين، انقر فوق إنشاء كتالوج.
  3. أدخل الخصائص التالية للكتالوج Salesforce Data Cloud.
    • اسم الكتالوج: اسم سهل الاستخدام للكتالوج.
    • النوع: Foreign.
    • اسم الاتصال: اسم الاتصال الذي سيتم إنشاء الكتالوج عليه.
    • Dataspace: مساحة بيانات Salesforce.
  4. انقر فوق Create.

SQL

قم بتشغيل أمر SQL التالي في دفتر ملاحظات أو محرر استعلام SQL. العناصر الموجودة بين قوسين اختيارية.

CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');

استبدل القيم التالية:

  • <catalog-name>:
  • <connection-name>:
  • <dataspace>: مساحة بيانات Salesforce. على سبيل المثال، default

عمليات الدفع المدعومة

يتم دعم القوائم المنبثقة التالية:

  • عوامل التصفية
  • التوقعات
  • الحد
  • التجميعات
  • الإزاحة
  • التحويل
  • يحتوي على، Startswith، Endswith

تعيينات نوع البيانات

عند القراءة من Salesforce Data Cloud إلى Spark، يتم تعيين أنواع البيانات على النحو التالي:

نوع سحابة بيانات Salesforce نوع Spark
Boolean BooleanType
التاريخ DateType
التاريخ/الوقت نوع الطابع الزمني
البريد الإلكتروني والهاتف والنص وعنوان URL StringType
رقم، النسبة المئوية DecimalType(38, 18)

القيود

  • يتم دعم مساحة بيانات Salesforce واحدة فقط لكل كتالوج Databricks.