共用方式為


在 Salesforce Data 360 上執行聯合查詢

本頁說明如何設定 Lakehouse 同盟,以在非 Azure Databricks 所管理的 Salesforce Data 360 資料上執行同盟查詢。 若要深入瞭解 Lakehouse 同盟,請參閱 什麼是 Lakehouse 同盟?

若要使用 Lakehouse Federation 連線到 Salesforce Data 360 資料庫,您必須在 Azure Databricks Unity Catalog 的中繼存放區中建立下列項目:

  • 與您的 Salesforce Data 360 資料庫的 連線
  • 在 Unity Catalog 中創建一個反映 Salesforce Data 360 資料庫的 外來目錄 ,讓您可以使用 Unity Catalog 查詢語法和資料控管工具來管理 Azure Databricks 使用者對資料庫的存取權。

我應該使用哪一個 Salesforce 連接器?

Databricks 為 Salesforce 提供多個連接器。 有兩個零副本連接器:Salesforce Data 360 (先前稱為 Data Cloud) 檔案共用連接器和 Salesforce Data 360 查詢聯合連接器。 這些可讓您在 Salesforce Data 360 中查詢資料,而無需移動資料。 還有一個 Salesforce 擷取連接器,可從各種 Salesforce 產品複製資料,包括 Salesforce Data 360 和 Salesforce Sales Cloud。

下表摘要說明 Databricks 中 Salesforce 連接器之間的差異:

連接器 用例 支援的 Salesforce 產品
Salesforce Data 360 檔案共用 當您在 Lakehouse 同盟中使用 Salesforce Data 360 檔案共用連接器時,Databricks 會呼叫 Salesforce 資料即服務 (DaaS) API,以直接讀取基礎雲端物件儲存位置中的資料。 查詢會在 Databricks 計算上執行,而不使用 JDBC 通訊協定。
相較於查詢同盟,檔案共用很適合用來同盟大量數據。 它提供改善的效能,可從多個數據源讀取檔案,以及更好的下推功能。 請參閱 Salesforce Data 360 檔案共用的 Lakehouse 聯盟
Salesforce 資料 360
Salesforce Data 360 查詢聯盟 當您在 Lakehouse 同盟中使用 Salesforce Data 360 查詢同盟連接器時,Databricks 會使用 JDBC 連線到來源資料,並將查詢向下推送至 Salesforce。 請參閱 在 Salesforce Data 360 上執行聯合查詢 Salesforce 資料 360
Salesforce 匯入 Lakeflow Connect 中的 Salesforce 擷取連接器可讓您從 Salesforce Platform 資料建立完全受控的擷取管線。 此連接器不僅利用 CDP 數據,還能利用 Data Intelligence Platform 中的 CRM 數據,將價值最大化。 查看 從 Salesforce 匯入數據 請參閱 Salesforce 擷取連接器支援哪些 Salesforce 產品?

開始之前

工作區需求:

  • 已為 Unity Catalog 啟用工作區。

計算需求:

  • 您的計算資源與目標資料庫系統之間的網路連接能力。 請參閱 Lakehouse Federation 的網路建議
  • Azure Databricks 計算必須使用 Databricks Runtime 15.2 或更新版本和 標準專用 存取模式。
  • SQL 倉儲必須是專業或無伺服器,且必須使用 2024.30 或更新版本。

所需的權限:

  • 若要建立連線,您必須是中繼存放區系統管理員,或是具有附加至工作區之 Unity 目錄中繼存放區 CREATE CONNECTION 許可權的使用者。
  • 若要建立外部目錄,您必須具有中繼存放區的 CREATE CATALOG 許可權,而且必須是連線的擁有者,或具有連線 CREATE FOREIGN CATALOG 許可權。

後續每個以任務為基礎的區段會指定其他權限需求。

建立 Salesforce 連線應用程式

Salesforce 連線應用程式可讓外部應用程式使用 API 和標準通訊協定與 Salesforce 整合。 本節說明如何使用 SSO 建立連線應用程式,以允許 Databricks 向 Salesforce 進行驗證。

注意

如需更詳細的指示,請參閱 Salesforce Data 360 文件中的 建立連線應用程式

若要建立 Salesforce 連線應用程式,請執行下列動作:

  1. 在 Data 360 的右上角,按一下 [設定]。
  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 連線應用程式也需要支援重新導向 URI https://login.salesforce.com/services/oauth2/success。 如果您打算使用目錄總管來建立 Azure Databricks 連線和外部目錄,就不需要這樣做。 Databricks 建議使用目錄總管,因為它需要比其他方法更少的手動步驟。
    3. 新增下列範圍
      • 存取所有 Data 360 API 資源 (cdp_api
      • 透過 API 管理使用者資料 (api)
      • 對 Data 360 資料執行 ANSI SQL 查詢 (cdp_query_api
      • 隨時執行要求 (refresh_token、offline_access)
    4. 按一下 [儲存]。
    5. 按一下繼續
  6. 在 [連線應用程式概觀] 頁面上,按一下 [管理取用者詳細資料]。 系統會提示您進行驗證。
  7. 成功驗證之後,就會顯示 [取用者金鑰] 和 [取用者祕密]。 儲存這些值。 當您建立 Azure Databricks 連線時,您將需要它們。

建立 Azure Databricks 連線

連接會指定用來存取外部資料庫系統的路徑和認證。 若要建立連線,您可以在 Azure Databricks 筆記本或 Databricks SQL 查詢編輯器中使用目錄總管或 CREATE CONNECTION SQL 命令。

注意

您也可使用 Databricks REST API 或 Databricks CLI 來建立連線。 請參閱 POST /api/2.1/unity-catalog/connectionsUnity Catalog 命令

需要的權限:具有 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)系統會提示您使用 SSO 憑證登入 Salesforce Data 360。

  9. 成功登入時,系統會將您導向回 Databricks 設定連線 精靈。 Salesforce 登入按鈕 已被 Successfully authorized 訊息取代。

  10. 按一下 [建立連線]。

  11. 目錄基礎 頁面上,輸入外國目錄的名稱。 外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。

  12. 輸入 Salesforce 資料空間。

  13. (選擇性)點擊 [測試連線] 以確認其是否正常運作。

  14. 點選 「建立目錄」

  15. 在 [Access] 頁面上,選取使用者可以存取您所建立目錄的工作區。 您可以選取 所有工作區都有存取權,或點擊 指派給工作區,選取工作區,然後點擊 指派

  16. 變更能夠管理目錄中所有物件存取權的 擁有者。 開始在文字框中輸入對象,然後點擊傳回結果中的對象。

  17. 將特權 授予於該目錄。 點擊 [授與 ]

    1. 指定 主體 誰可以存取目錄中的物件。 開始在文字框中輸入對象,然後點擊傳回結果中的對象。
    2. 選取 許可權預設,以授與每個主體。 根據預設,所有帳戶用戶都會被授與 BROWSE
      • 從下拉功能表中選取 [數據讀取器],以授與目錄中物件 read 許可權。
      • 從下拉功能表中選取 [數據編輯器],以授與目錄中物件的 readmodify 許可權。
      • 手動選取要授與的許可權。
    3. 按一下 授與
  18. 點選 [下一步]

  19. 在 [元數據 頁面上,指定標記鍵-值組。 如需詳細資訊,請參閱 將標籤套用至 Unity Catalog 可保護的物件

  20. (選用) 新增註解。

  21. 按一下 [儲存]。

SQL

Databricks 建議使用目錄總管來建立連線和外部目錄,因為它需要比其他方法更少的手動步驟。

如果您打算使用 SQL 來建立 Azure Databricks 連線和外部目錄,您的 Salesforce 連線應用程式必須支援重新導向 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. 在筆記本或 Databricks SQL 查詢編輯器中執行下列命令:

    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"
      );
    

    如需設定祕密的相關資訊,請參閱祕密管理

建立異國目錄

注意

如果您使用 UI 來建立與資料來源的連線,則會包含外部目錄建立,而且您可以略過此步驟。

外部目錄會鏡像外部數據系統中的資料庫,讓您可以使用 Azure Databricks 和 Unity 目錄來查詢和管理該資料庫中數據的存取權。 若要建立外部目錄,您可以使用已定義的數據源連線。

若要建立外部目錄,您可以在 Azure Databricks 筆記本或 SQL 查詢編輯器中使用目錄總管或 CREATE FOREIGN CATALOG SQL 命令。 您也可以使用 Databricks REST API 或 Databricks CLI 來建立目錄。 請參閱命令 POST /api/2.1/unity-catalog/catalogsUnity Catalog

必要權限:對中繼存放區的 CREATE CATALOG 權限,以及連線的所有權或對連線的 CREATE FOREIGN 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

推下支持功能

支援下列推送功能:

  • 篩選
  • 投影
  • 限制
  • 彙總
  • 抵消
  • 演員陣容
  • 包含、以...為起始、以...為結尾

資料類型對應

當您從 Salesforce Data 360 讀取至 Spark 時,資料類型會對應如下:

Salesforce Data 360 類型 Spark 類型
布林值 BooleanType
日期 日期類型
日期時間 時間戳類型
電子郵件、電話、文字、URL 字串類型
Number、Percent DecimalType(38, 18)

限制

  • 每個 Databricks 目錄僅支援一個 Salesforce 資料空間。
  • 在 Databricks Runtime 16.1 和較舊版本中,不支援區分大小寫的數據表和架構名稱。 這包括 Salesforce Data 360 上具有大寫字母的名稱。 例如, MyTable 不支援 。