Поделиться через


Выполнение федеративных запросов в Cloud данных Salesforce

В этой статье описывается, как настроить Федерацию Lakehouse для выполнения федеративных запросов в данных Salesforce Data Cloud, которые не управляются Azure Databricks. Дополнительные сведения о Федерации Lakehouse см. в статье "Что такое Федерация Lakehouse?".

Чтобы подключиться к базе данных Salesforce Data Cloud с помощью Федерации Lakehouse, необходимо создать следующее в хранилище метаданных каталога Azure Databricks Unity:

  • Подключение к базе данных Salesforce Data Cloud.
  • Внешний каталог , который отражает базу данных Salesforce Data Cloud в каталоге Unity, чтобы использовать синтаксис запросов каталога Unity и средства управления данными для управления доступом пользователей Azure Databricks к базе данных.

Подготовка к работе

Требования к рабочей области:

  • Рабочая область включена для каталога Unity.

Требования к вычислениям:

  • Сетевое подключение из кластера среды выполнения Databricks или хранилища SQL к целевым системам баз данных. См . рекомендации по сети для Федерации Lakehouse.
  • Кластеры Azure Databricks должны использовать Databricks Runtime 15.2 или более поздней версии и режим общего или однопользовательского доступа.
  • Хранилища SQL должны быть профессиональными или бессерверными и должны использовать 2024.30 или более поздней версии.

Необходимые разрешения:

  • Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с CREATE CONNECTION привилегиями в хранилище метаданных каталога Unity, подключенном к рабочей области.
  • Чтобы создать внешний каталог, необходимо иметь CREATE CATALOG разрешение на хранилище метаданных и быть владельцем подключения или иметь CREATE FOREIGN CATALOG привилегии для подключения.

Дополнительные требования к разрешениям указываются в каждом разделе на основе задач, который следует выполнить.

Создание подключенного приложения Salesforce

Подключенные приложения Salesforce позволяют внешнему приложению интегрироваться с Salesforce с помощью API и стандартных протоколов. В этом разделе описывается, как создать подключенное приложение с помощью единого входа, чтобы разрешить Databricks проходить проверку подлинности с помощью Salesforce.

Примечание.

Дополнительные инструкции см. в статье "Создание подключенного приложения " в документации по Salesforce Data Cloud.

Чтобы создать подключенное приложение Salesforce, сделайте следующее:

  1. В правом верхнем углу облака данных нажмите кнопку "Настройка".
  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 Connected также должно поддерживать URI https://login.salesforce.com/services/oauth2/successперенаправления. Это не нужно, если вы планируете использовать обозреватель каталогов для создания подключения Azure Databricks и внешнего каталога. Databricks рекомендует использовать обозреватель каталогов, так как он требует меньше действий вручную, чем другие методы.
    3. Добавьте следующие области:
      • Доступ ко всем ресурсам API облака данных (cdp_api)
      • Управление данными пользователей с помощью API (API)
      • Выполнение запросов ANSI SQL для данных облака данных (cdp_query_api)
      • Выполнение запросов в любое время (refresh_token, offline_access)
    4. Нажмите кнопку Сохранить.
    5. Нажмите кнопку Продолжить.
  6. На странице обзора подключенного приложения нажмите кнопку "Управление сведениями о потребителе". Вам будет предложено выполнить проверку подлинности.
  7. После успешной проверки подлинности отображается ключ потребителя и секрет потребителя. Сохраните эти значения. Их потребуется при создании подключения Azure Databricks.

Создание подключения Azure Databricks

Подключение задает путь и учетные данные для доступа к внешней системе базы данных. Чтобы создать подключение, можно использовать обозреватель каталогов или команду SQL в записной книжке Azure Databricks или CREATE CONNECTION редакторе sql-запросов Databricks.

Примечание.

Для создания подключения можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. статью POST /api/2.1/unity-catalog/connections и команды каталога Unity.

Необходимые разрешения: администратор хранилища метаданных или пользователь с привилегиями CREATE CONNECTION .

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога "Каталог".
  2. В левой области разверните меню "Внешние данные" и выберите "Подключения".
  3. Нажмите Create connection (Создать подключение).
  4. Введите понятное имя подключения.
  5. Выберите тип подключения облака данных Salesforce.
  6. Введите следующие свойства подключения для облака данных Salesforce.
    • Тип проверки подлинности: OAuth
    • Песочница false
    • (OAuth) Секрет клиента: секрет клиента Salesforce, подключенный к приложению, секрет потребителя приложения
    • (OAuth) Идентификатор клиента: ключ потребителя подключенного приложения Salesforce
    • (OAuth) Область клиента: cdp_api api cdp_query_api refresh_token offline_access
  7. Нажмите кнопку "Войти" с помощью Salesforce.
  8. (OAuth) Вам будет предложено войти в Salesforce Data Cloud с помощью учетных данных единого входа.
  9. После успешного входа вы будете перенаправлены обратно на страницу создания подключения Databricks. Кнопка "Вход с помощью Salesforce " была заменена сообщением Successfully authorized .
  10. (Необязательно) Добавьте комментарий.
  11. Нажмите кнопку Создать.

SQL

Databricks рекомендует использовать обозреватель каталогов для создания подключения и внешнего каталога, так как для этого требуется меньше действий вручную, чем другие методы.

Если вы планируете использовать SQL для создания подключения Azure Databricks и внешнего каталога, приложение Salesforce Connected должно поддерживать 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. Выполните следующие действия в записной книжке или редакторе sql-запросов Databricks:

    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. Чтобы создать внешний каталог, вы используете подключение к источнику данных, который уже определен.

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или CREATE FOREIGN CATALOG команду SQL в записной книжке Azure Databricks или редакторе запросов SQL.

Примечание.

Для создания каталога можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. статью POST /api/2.1/unity-catalog/catalogs и команды каталога Unity.

Необходимые разрешения: CREATE CATALOG разрешение на хранилище метаданных и право владения подключением или CREATE FOREIGN CATALOG привилегией подключения.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните Значок каталога каталог , чтобы открыть обозреватель каталогов.
  2. В правом верхнем углу нажмите кнопку "Создать каталог".
  3. Введите следующие свойства каталога Salesforce Data Cloud.
    • Имя каталога: понятное имя каталога.
    • Тип: Foreign.
    • Имя подключения: имя соединения, в который будет создан каталог.
    • Пространство данных: пространство данных Salesforce.
  4. Нажмите кнопку Создать.

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.

Поддерживаемые pushdowns

Поддерживаются следующие pushdown:

  • Фильтры
  • Проекции.
  • Лимит
  • Статистические выражения
  • Смещение
  • Cost
  • Содержит, Startswith, Endswith

Сопоставление типов данных

При чтении из Salesforce Data Cloud в Spark типы данных сопоставляются следующим образом:

Тип Облака данных Salesforce Тип Spark
Логический BooleanType
Дата DateType
Datetime TimestampType
Электронная почта, телефон, текст, URL-адрес StringType
Число, процент DecimalType(38, 18)

Ограничения

  • Поддерживается только одно пространство данных Salesforce для каталога Databricks.