Spouštění federovaných dotazů v Cloudu dat Salesforce
Tento článek popisuje, jak nastavit Federaci Lakehouse tak, aby spouštět federované dotazy v datech Salesforce Data Cloud, která nespravuje Azure Databricks. Další informace o federaci Lakehouse najdete v tématu Co je Federace Lakehouse?.
Pokud se chcete připojit k databázi Salesforce Data Cloud pomocí federace Lakehouse, musíte v metastore katalogu Azure Databricks Unity vytvořit následující:
- Připojení k databázi Salesforce Data Cloud.
- Cizí katalog, který zrcadlí databázi Salesforce Data Cloud v Katalogu Unity, abyste mohli použít nástroje pro dotazování a zásady správného řízení dat v Katalogu Unity ke správě přístupu uživatelů Azure Databricks k databázi.
Než začnete
Požadavky na pracovní prostor:
- Pracovní prostor je povolený pro katalog Unity.
Požadavky na výpočetní prostředky:
- Síťové připojení z clusteru Databricks Runtime nebo SQL Warehouse k cílovým databázovým systémům. Viz doporučení k sítím pro Federaci Lakehouse.
- Clustery Azure Databricks musí používat Databricks Runtime 15.2 nebo vyšší a sdílený nebo režim přístupu s jedním uživatelem.
- Sklady SQL musí být Pro nebo Bezserverové a musí používat verzi 2024.30 nebo vyšší.
Požadovaná oprávnění:
- Pokud chcete vytvořit připojení, musíte být správcem metastoru nebo uživatelem s
CREATE CONNECTION
oprávněním k metastoru katalogu Unity připojenému k pracovnímu prostoru. - Chcete-li vytvořit cizí katalog, musíte mít
CREATE CATALOG
oprávnění k metastoru a být buď vlastníkem připojení, nebo mítCREATE FOREIGN CATALOG
oprávnění k připojení.
Další požadavky na oprávnění jsou uvedeny v následující části založené na úlohách.
Vytvoření připojené aplikace Salesforce
Připojené aplikace Salesforce umožňují externí aplikaci integrovat se Salesforce pomocí rozhraní API a standardních protokolů. Tato část popisuje, jak vytvořit připojenou aplikaci pomocí jednotného přihlašování, aby se databricks mohla ověřit pomocí Salesforce.
Poznámka:
Podrobnější pokyny najdete v tématu Vytvoření připojené aplikace v dokumentaci ke službě Salesforce Data Cloud.
Pokud chcete vytvořit připojenou aplikaci Salesforce, postupujte takto:
- V pravém horním rohu datového cloudu klikněte na Nastavení.
- V části Nástroje platformy klikněte na Správce aplikací>.
- Klikněte na Nová připojená aplikace.
- Zadejte jméno a e-mailovou adresu kontaktu.
- Povolení nastavení OAuth:
- Zadejte adresu URL zpětného volání v následujícím formátu:
https://<databricks_instance_url>/login/oauth/salesforce.html
. Například:https://cust-success.cloud.databricks.com/login/oauth/salesforce.html
. - (Volitelné) Pokud plánujete použít SQL k vytvoření připojení Azure Databricks a cizího katalogu v dalším kroku, vaše aplikace připojená k Salesforce musí také podporovat identifikátor URI
https://login.salesforce.com/services/oauth2/success
přesměrování . To není potřeba, pokud plánujete použít Průzkumníka katalogu k vytvoření připojení Azure Databricks a cizího katalogu. Databricks doporučuje používat Průzkumníka katalogu, protože vyžaduje méně ručních kroků než jiné metody. - Přidejte následující obory:
- Přístup ke všem prostředkům rozhraní DATA Cloud API (cdp_api)
- Správa uživatelských dat prostřednictvím rozhraní API (api)
- Provádění dotazů ANSI SQL na data datového cloudu (cdp_query_api)
- Provádět žádosti kdykoli (refresh_token, offline_access)
- Klikněte na Uložit.
- Klikněte na Pokračovat.
- Zadejte adresu URL zpětného volání v následujícím formátu:
- Na stránce Přehled připojené aplikace klikněte na Spravovat podrobnosti o spotřebiteli. Zobrazí se výzva k ověření.
- Po úspěšném ověření se odhalí klíč příjemce a tajný klíč příjemce. Uložte tyto hodnoty. Budete je potřebovat při vytváření připojení Azure Databricks.
Vytvoření připojení Azure Databricks
Připojení určuje cestu a přihlašovací údaje pro přístup k externímu databázovému systému. K vytvoření připojení můžete použít Průzkumníka katalogu nebo CREATE CONNECTION
příkaz SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL Databricks.
Poznámka:
K vytvoření připojení můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/connections a příkazy katalogu Unity.
Požadovaná oprávnění: Správce metastoru nebo uživatel s oprávněním CREATE CONNECTION
.
Průzkumník katalogu
- V pracovním prostoru Azure Databricks klikněte na Katalog.
- V levém podokně rozbalte nabídku Externí data a vyberte Připojení.
- Klikněte na Vytvořit připojení.
- Zadejte uživatelsky přívětivý název připojení.
- Vyberte typ připojení datového cloudu Salesforce.
- Zadejte následující vlastnosti připojení pro Cloud dat Salesforce.
- Typ ověřování:
OAuth
- Je sandbox
false
- (OAuth) Tajný klíč klienta: Tajný klíč uživatele připojené aplikace Salesforce
- (OAuth) ID klienta: Klíč příjemce připojené aplikace Salesforce
- (OAuth) Obor klienta:
cdp_api api cdp_query_api refresh_token offline_access
- Typ ověřování:
- Klikněte na Přihlásit se pomocí Salesforce.
- (OAuth) Zobrazí se výzva k přihlášení ke službě Salesforce Data Cloud pomocí přihlašovacích údajů pro jednotné přihlašování.
- Po úspěšném přihlášení budete přesměrováni zpět na stránku Vytvoření připojení Databricks. Tlačítko Přihlásit se pomocí Salesforce bylo nahrazeno zprávou
Successfully authorized
. - (Volitelné) Přidejte komentář.
- Klikněte na Vytvořit.
SQL
Databricks doporučuje vytvořit připojení a cizí katalog pomocí Průzkumníka katalogu, protože vyžaduje méně ručních kroků než jiné metody.
Pokud plánujete použít SQL k vytvoření připojení Azure Databricks a cizího katalogu, vaše aplikace Připojená k Salesforce musí podporovat identifikátor URI https://login.salesforce.com/services/oauth2/success
přesměrování . To není potřeba, pokud používáte Průzkumníka katalogu.
Vygenerujte ověřovatel kódu PKCE a kódy výzvy kódu. Můžete to provést pomocí online nástroje, například https://tonyxu-io.github.io/pkce-generator/ spuštěním následujícího skriptu Pythonu:
%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}\"")
Přejděte na následující adresu URL a ověřte se pomocí svých přihlašovacích údajů Salesforce, abyste získali
authorization_code
(nahraďte<client_id>
a<code_challenge>
nahraďte parametry).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>
Autorizační kód zakódovaný adresou URL je viditelný v přesměrované adrese URL.
V poznámkovém bloku nebo editoru dotazů SQL Databricks spusťte následující příkaz:
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 doporučuje používat tajné kódy Azure Databricks místo řetězců prostého textu pro citlivé hodnoty, jako jsou přihlašovací údaje. Příklad:
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" );
Informace o nastavení tajných kódů najdete v tématu Správa tajných kódů.
Vytvoření zahraničního katalogu
Cizí katalog zrcadlí databázi v externím datovém systému, abyste mohli dotazovat a spravovat přístup k datům v této databázi pomocí Azure Databricks a Unity Catalog. Chcete-li vytvořit cizí katalog, použijete připojení ke zdroji dat, který již byl definován.
K vytvoření cizího katalogu můžete použít Průzkumníka katalogu nebo CREATE FOREIGN CATALOG
příkaz SQL v poznámkovém bloku Azure Databricks nebo v editoru dotazů SQL.
Poznámka:
K vytvoření katalogu můžete použít také rozhraní REST API Databricks nebo rozhraní příkazového řádku Databricks. Viz POST /api/2.1/unity-catalog/catalogs a příkazy katalogu Unity.
Požadovaná oprávnění: CREATE CATALOG
oprávnění k metastoru a vlastnictví připojení nebo CREATE FOREIGN CATALOG
oprávnění k připojení.
Průzkumník katalogu
- V pracovním prostoru Azure Databricks kliknutím na Katalog otevřete Průzkumníka katalogu.
- V pravém horním rohu klikněte na Vytvořit katalog.
- Zadejte následující vlastnosti katalogu Salesforce Data Cloud.
- Název katalogu: Popisný název katalogu.
- Typ:
Foreign
. - Název připojení: Název připojení, ve které bude katalog vytvořen.
- Dataspace: Datový prostor Salesforce.
- Klikněte na Vytvořit.
SQL
V poznámkovém bloku nebo editoru dotazů SQL spusťte následující příkaz SQL. Položky v závorkách jsou volitelné.
CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');
Nahraďte následující hodnoty:
<catalog-name>
:<connection-name>
:<dataspace>
: Datový prostor Salesforce. Napříkladdefault
.
Podporované odsdílení změn
Podporují se následující nabízení:
- Filtry
- Projekce
- Limit
- Souhrny
- Odsazení
- Změna typu
- Obsahuje, Startswith, Endswith
Mapování datového typu
Při čtení z Salesforce Data Cloud do Sparku se datové typy mapuje takto:
Datový typ Salesforce | Typ Sparku |
---|---|
Logická hodnota | BooleanType |
Datum | Typ data |
Datum a čas | TimestampType |
E-mail, Telefon, Text, Adresa URL | StringType |
Číslo, procento | DecimalType(38; 18) |
Omezení
- Podporuje se jenom jeden datový prostor Salesforce na katalog Databricks.