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

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

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

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

Какой соединитель Salesforce следует использовать?

Databricks предлагает несколько соединителей для Salesforce. Существует два соединителя с нулевым копированием: соединитель общего доступа к файлам Salesforce Data 360 (прежнее название — Data Cloud) и соединитель федерации запросов Salesforce Data 360. Они позволяют запрашивать данные в Salesforce Data 360 без перемещения. Существует также коннектор загрузки данных Salesforce, который копирует данные из различных продуктов Salesforce, включая Salesforce Data 360 и Salesforce Sales Cloud.

В следующей таблице приведены различия между соединителями Salesforce в Databricks:

Соединитель Сценарий использования Поддерживаемые продукты Salesforce
Общий доступ к файлам Salesforce Data 360 При использовании соединителя общего доступа к файлам Salesforce Data 360 в Федерации Lakehouse Databricks вызывает API Salesforce Data-as-Service (DaaS) для чтения данных в базовом расположении хранилища объектов облака напрямую. Запросы выполняются в вычислениях Databricks без использования протокола JDBC.
По сравнению с федерацией запросов общий доступ к файлам идеально подходит для федерации большого объема данных. Она обеспечивает улучшенную производительность при чтении файлов из нескольких источников данных и улучшенные возможности оптимизации работы запросов. См. Lakehouse Federation для совместного использования файлов Salesforce Data 360.
Salesforce Data 360
Федерация запросов Salesforce Data 360 При использовании соединителя федерации запросов Salesforce Data 360 в Федерации Lakehouse Databricks использует JDBC для подключения к исходным данным и отправки запросов в Salesforce. См. статью "Запуск федеративных запросов" в Salesforce Data 360. Salesforce Data 360
Интеграция Salesforce Коннектор интеграции данных Salesforce в Lakeflow Connect позволяет создавать полностью управляемые конвейеры для загрузки данных с платформы Salesforce. Этот разъем максимизирует ценность, используя не только данные CDP, но и CRM в платформе интеллектуального управления данными. См. загрузка данных из Salesforce. Узнайте , какие продукты Salesforce поддерживает соединитель приема Salesforce.

Прежде чем вы начнете

Требования к рабочему пространству

  • Рабочая область активирована для Unity Catalog. Рабочие области, созданные после 9 ноября 2023 г., автоматически включены для каталога Unity, включая автоматическую подготовку хранилища метаданных. Вам не нужно создавать хранилище метаданных вручную, если ваша рабочая область была создана до автоматического включения и не была включена для Unity Catalog. См. автоматическое включение каталога Unity.

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

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

Требуются разрешения

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

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

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

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

Примечание

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

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

  1. В правом верхнем углу data 360 нажмите кнопку "Настройка".
  2. В разделе "Инструменты платформы" щелкните "Диспетчер приложений".>
  3. Нажмите Новое подключённое приложение.
  4. Введите имя и адрес электронной почты контакта .
  5. Включить настройки OAuth:
    1. Введите Callback 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 Data 360 (cdp_api)
      • Управляйте данными пользователей через API (api)
      • Выполнение запросов ANSI SQL для данных 360 (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 или CLI Databricks для создания соединения. См. POST /api/2.1/unity-catalog/connections и команды каталога Unity .

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

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

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. В верхней части области каталога щелкните значок " и выберите "Создать подключение" в меню.
  3. На странице Основы подключения мастера Настройка подключения введите удобное для пользователя Имя подключения.
  4. Выберите тип подключенияSalesforce Data 360.
  5. (Необязательно) Добавьте комментарий.
  6. На странице проверки подлинности введите следующие свойства подключения для salesforce Data 360:
    • (Необязательно) Выберите песочницу.
    • идентификатор клиента: ключ потребителя подключенного приложения Salesforce.
    • секрет клиента приложения: потребительский секрет подключенного приложения Salesforce.
    • область клиента: cdp_api api cdp_query_api refresh_token offline_access
  7. Войдите через Salesforce, нажав .
  8. (OAuth) Вам будет предложено войти в Salesforce Data 360 с помощью учетных данных единого входа.
  9. После успешного входа вы возвращаетесь в мастер настройки подключения Databricks . Кнопка Войти с помощью Salesforce была заменена сообщением Successfully authorized.
  10. Нажмите Create connection (Создать подключение).
  11. На странице Основы каталога введите имя иностранного каталога. Внешний каталог зеркально отражает базу данных во внешней системе данных, чтобы можно было запрашивать и управлять доступом к данным в этой базе данных с помощью Azure Databricks и каталога Unity.
  12. Войдите в пространство данных Salesforce.
  13. (Необязательно) Нажмите Проверить подключение, чтобы убедиться, что оно работает.
  14. Нажмите Создать каталог.
  15. На странице Access выберите рабочие области, в которых пользователи могут получить доступ к созданному каталогу. Вы можете выбрать Все рабочие области имеют доступ, или нажать Назначить рабочие области, выбрать рабочие области, а затем нажать Назначить.
  16. Измените владельца , который сможет управлять доступом ко всем объектам в каталоге. Начните вводить адресата в текстовом поле, а затем выберите адресата в возвращенных результатах.
  17. Предоставить привилегии для каталога. Нажмите кнопку "Предоставить":
    1. Укажите принципалов , у которых будет доступ к объектам в каталоге. Начните вводить адресата в текстовом поле, а затем выберите адресата в возвращенных результатах.
    2. Выберите предустановки привилегий , чтобы предоставить их каждому принципалу. Все пользователи учетной записи получают BROWSE по умолчанию.
      • В раскрывающемся меню выберите средство чтения данных , чтобы предоставить привилегии read объектам каталога.
      • Выберите Редактор данных в раскрывающемся меню, чтобы предоставить read и modify привилегии на объекты в каталоге.
      • Вручную выберите привилегии для предоставления.
    3. Нажмите Grant.
  18. Нажмите кнопку Далее.
  19. На странице метаданных укажите пары "ключ-значение" для тегов. Дополнительные сведения см. в статье Применение тегов к защищаемым объектам каталога Unity.
  20. (Необязательно) Добавьте комментарий.
  21. Нажмите кнопку Сохранить.

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 разрешение на метахранилище и либо владение соединением, либо привилегия на соединение.

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

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог , чтобы открыть обозреватель каталогов.
  2. В правом верхнем углу щелкните Создать каталог.
  3. Введите следующие свойства каталога Salesforce Data 360.
    • имя каталога: удобное для пользователя имя каталога.
    • Тип: 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

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

  • Фильтры
  • Проекции
  • Лимит
  • Агрегаты
  • Смещение
  • Актёрский состав
  • Содержит, Начинается с, Заканчивается на

Отображения типов данных

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

Тип Salesforce Data 360 Тип Spark
Булев Тип Boolean
Дата Тип данных
Дата и время Тип временной метки
Электронная почта, Телефон, Текст, Ссылка Тип строки
Число, Процент DecimalType(38, 18)

Ограничения

  • Поддерживается только одно пространство данных Salesforce для каталога Databricks.
  • В Databricks Runtime версии 16.1 и предыдущих версиях поддержка чувствительных к регистру названий таблиц и схем отсутствует. Сюда входят имена с заглавными буквами на Salesforce Data 360. Например, MyTable не поддерживается.