Выполнение федеративных запросов в 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, сделайте следующее:
- В правом верхнем углу облака данных нажмите кнопку "Настройка".
- В разделе "Инструменты платформы" щелкните "Диспетчер приложений".>
- Нажмите кнопку "Создать подключено приложение".
- Введите имя и адрес электронной почты контакта.
- Включите параметры OAuth:
- Введите URL-адрес обратного вызова в следующем формате:
https://<databricks_instance_url>/login/oauth/salesforce.html
Например:https://cust-success.cloud.databricks.com/login/oauth/salesforce.html
. - (Необязательно) Если вы планируете использовать SQL для создания подключения Azure Databricks и внешнего каталога на следующем шаге, приложение Salesforce Connected также должно поддерживать URI
https://login.salesforce.com/services/oauth2/success
перенаправления. Это не нужно, если вы планируете использовать обозреватель каталогов для создания подключения Azure Databricks и внешнего каталога. Databricks рекомендует использовать обозреватель каталогов, так как он требует меньше действий вручную, чем другие методы. - Добавьте следующие области:
- Доступ ко всем ресурсам API облака данных (cdp_api)
- Управление данными пользователей с помощью API (API)
- Выполнение запросов ANSI SQL для данных облака данных (cdp_query_api)
- Выполнение запросов в любое время (refresh_token, offline_access)
- Нажмите кнопку Сохранить.
- Нажмите кнопку Продолжить.
- Введите URL-адрес обратного вызова в следующем формате:
- На странице обзора подключенного приложения нажмите кнопку "Управление сведениями о потребителе". Вам будет предложено выполнить проверку подлинности.
- После успешной проверки подлинности отображается ключ потребителя и секрет потребителя. Сохраните эти значения. Их потребуется при создании подключения 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
.
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните "Каталог".
- В левой области разверните меню "Внешние данные" и выберите "Подключения".
- Нажмите Create connection (Создать подключение).
- Введите понятное имя подключения.
- Выберите тип подключения облака данных Salesforce.
- Введите следующие свойства подключения для облака данных Salesforce.
- Тип проверки подлинности:
OAuth
- Песочница
false
- (OAuth) Секрет клиента: секрет клиента Salesforce, подключенный к приложению, секрет потребителя приложения
- (OAuth) Идентификатор клиента: ключ потребителя подключенного приложения Salesforce
- (OAuth) Область клиента:
cdp_api api cdp_query_api refresh_token offline_access
- Тип проверки подлинности:
- Нажмите кнопку "Войти" с помощью Salesforce.
- (OAuth) Вам будет предложено войти в Salesforce Data Cloud с помощью учетных данных единого входа.
- После успешного входа вы будете перенаправлены обратно на страницу создания подключения Databricks. Кнопка "Вход с помощью Salesforce " была заменена сообщением
Successfully authorized
. - (Необязательно) Добавьте комментарий.
- Нажмите кнопку Создать.
SQL
Databricks рекомендует использовать обозреватель каталогов для создания подключения и внешнего каталога, так как для этого требуется меньше действий вручную, чем другие методы.
Если вы планируете использовать SQL для создания подключения Azure Databricks и внешнего каталога, приложение Salesforce Connected должно поддерживать URI https://login.salesforce.com/services/oauth2/success
перенаправления. Это не требуется, если вы используете обозреватель каталогов.
Создайте средство проверки кода 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}\"")
Перейдите по следующему 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-адресе.
Выполните следующие действия в записной книжке или редакторе 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
привилегией подключения.
Обозреватель каталогов
- В рабочей области Azure Databricks щелкните каталог , чтобы открыть обозреватель каталогов.
- В правом верхнем углу нажмите кнопку "Создать каталог".
- Введите следующие свойства каталога Salesforce Data Cloud.
- Имя каталога: понятное имя каталога.
- Тип:
Foreign
. - Имя подключения: имя соединения, в который будет создан каталог.
- Пространство данных: пространство данных Salesforce.
- Нажмите кнопку Создать.
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.