Sdílet prostřednictvím


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ít CREATE 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:

  1. V pravém horním rohu datového cloudu klikněte na Nastavení.
  2. V části Nástroje platformy klikněte na Správce aplikací>.
  3. Klikněte na Nová připojená aplikace.
  4. Zadejte jméno a e-mailovou adresu kontaktu.
  5. Povolení nastavení OAuth:
    1. 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.
    2. (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/successpř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.
    3. 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)
    4. Klikněte na Uložit.
    5. Klikněte na Pokračovat.
  6. Na stránce Přehled připojené aplikace klikněte na Spravovat podrobnosti o spotřebiteli. Zobrazí se výzva k ověření.
  7. 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

  1. V pracovním prostoru Azure Databricks klikněte na Ikona katalogu Katalog.
  2. V levém podokně rozbalte nabídku Externí data a vyberte Připojení.
  3. Klikněte na Vytvořit připojení.
  4. Zadejte uživatelsky přívětivý název připojení.
  5. Vyberte typ připojení datového cloudu Salesforce.
  6. 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
  7. Klikněte na Přihlásit se pomocí Salesforce.
  8. (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í.
  9. 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 .
  10. (Volitelné) Přidejte komentář.
  11. 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/successpřesměrování . To není potřeba, pokud používáte Průzkumníka katalogu.

  1. 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}\"")
    
  2. 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.

  3. 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

  1. V pracovním prostoru Azure Databricks kliknutím na Ikona katalogu Katalog otevřete Průzkumníka katalogu.
  2. V pravém horním rohu klikněte na Vytvořit katalog.
  3. 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.
  4. 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říklad default.

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.