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


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

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

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

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

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

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

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

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

  • Сетевые подключения от вычислительного ресурса к целевым системам баз данных. См . рекомендации по сети для Федерации 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 App" также должно поддерживать 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

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

Примечание.

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

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

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

  1. В рабочей области Azure Databricks щелкните значок каталога.

  2. В верхней части области каталога щелкните значок Добавить или плюсзначок "Добавить" и выберите Добавить подключения в меню.

    Кроме того, на странице быстрого доступа нажмите кнопку Внешние данные >, перейдите на вкладку Подключения и нажмите Создать подключение.

  3. На странице основы подключения мастера настройки подключения введите понятное имя подключения.

  4. Выберите тип подключения для Salesforce Data Cloud.

  5. (Необязательно) Добавьте комментарий.

  6. На странице проверки подлинности введите следующие свойства подключения для облака данных Salesforce:

    • (Необязательно) Выберите песочницу.
    • идентификатор клиента: ключ потребителя подключенного приложения Salesforce.
    • секрет клиента приложения: потребительский секрет подключенного приложения Salesforce.
    • область клиента: cdp_api api cdp_query_api refresh_token offline_access
  7. Войдите через Salesforce, нажав .

  8. (OAuth) Вам будет предложено войти в Salesforce Data Cloud с помощью учетных данных единого входа.

  9. После успешного входа вы возвращаетесь в мастер настройки подключения Databricks . Кнопка входа в Salesforce заменена Successfully authorized сообщением.

  10. Нажмите Create connection (Создать подключение).

  11. На странице основ каталога введите имя для внешнего каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.

  12. (Необязательно) Нажмите Проверить подключение, чтобы убедиться, что оно работает.

  13. Щелкните Создать каталог.

  14. На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступили нажать Назначить рабочим областям, выбрать рабочие области, а затем нажать Назначить.

  15. Измените владельца , который сможет управлять доступом ко всем объектам в каталоге. Начните вводить участника в текстовом поле, а затем выберите участника в полученных результатах.

  16. Предоставьте привилегий в каталоге. Щелкните Предоставить:

    1. Укажите субъекты , которые будут иметь доступ к объектам в каталоге. Начните вводить участника в текстовом поле, а затем выберите участника в полученных результатах.
    2. Выберите предустановки привилегий , чтобы предоставить их каждому участнику. Все пользователи учетной записи получают BROWSE по умолчанию.
      • Выберите Читатель данных в раскрывающемся меню, чтобы предоставить read привилегии для объектов в каталоге.
      • Выберите Редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии на объекты в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Щелкните Предоставить.
  17. Нажмите кнопку Далее.

  18. На странице метаданных укажите пары "ключ-значение" для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.

  19. (Необязательно) Добавьте комментарий.

  20. Нажмите кнопку Сохранить.

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

Чтобы создать внешний каталог, можно использовать обозреватель каталогов или команду SQL CREATE FOREIGN CATALOG в записной книжке Azure Databricks или редакторе запросов SQL. Для создания каталога можно также использовать REST API Databricks или интерфейс командной строки Databricks. См. POST /api/2.1/unity-catalog/catalogs и команды Unity Catalog .

Необходимые разрешения: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.

Дополнительные ресурсы

Федерация Lakehouse не поддерживает подключения только для чтения к Salesforce Sales Cloud, но LakeFlow Connect позволяет прием данных из Salesforce Sales Cloud в Databricks lakehouse. См. загрузка данных из Salesforce.