다음을 통해 공유


Salesforce Data Cloud에서 페더레이션 쿼리 실행

이 문서에서는 Azure Databricks에서 관리되지 않는 Salesforce Data Cloud 데이터에서 페더레이션된 쿼리를 실행하도록 Lakehouse Federation을 설정하는 방법을 설명합니다. Lakehouse 페더레이션에 대한 자세한 내용은 Lakehouse 페더레이션이란?을 참조하세요.

Lakehouse Federation을 사용하여 Salesforce Data Cloud 데이터베이스에 연결하려면 Azure Databricks Unity 카탈로그 메타스토어에서 다음을 만들어야 합니다.

  • Salesforce Data Cloud 데이터베이스에 대한 연결입니다.
  • Unity 카탈로그 쿼리 구문 및 데이터 거버넌스 도구를 사용하여 데이터베이스에 대한 Azure Databricks 사용자 액세스를 관리할 수 있도록 Unity 카탈로그의 Salesforce Data Cloud 데이터베이스를 미러링하는 외국 카탈로그.

시작하기 전에

작업 영역 요구 사항

  • Unity 카탈로그에 사용할 수 있는 작업 영역입니다.

컴퓨팅 요구 사항:

  • 컴퓨팅 리소스에서 대상 데이터베이스 시스템으로의 네트워크 연결 Lakehouse 페더레이션을 위한 네트워킹 권장 사항을 참조하세요.
  • Azure Databricks 컴퓨팅은 Databricks Runtime 15.2 이상을 사용하고 공유 또는 단일 사용자 액세스 모드를 사용합니다.
  • SQL 웨어하우스는 프로 또는 서버리스여야 하며 2024.30 이상을 사용해야 합니다.

권한 필요:

  • 연결을 만들려면 메타스토어 관리자이거나 작업 영역에 연결된 Unity 카탈로그 메타스토어에 대한 CREATE CONNECTION 권한이 있는 사용자여야 합니다.
  • 외부 카탈로그를 만들려면 메타스토어에 대한 CREATE CATALOG 권한이 있어야 하며 연결 소유자이거나 연결에 대한 CREATE FOREIGN CATALOG 권한이 있어야 합니다.

추가 권한 요구 사항은 다음 각 작업 기반 섹션에 지정됩니다.

Salesforce 연결 앱 만들기

Salesforce 연결된 앱을 사용하면 외부 애플리케이션이 API 및 표준 프로토콜을 사용하여 Salesforce와 통합할 수 있습니다. 이 섹션에서는 Databricks가 Salesforce를 사용하여 인증할 수 있도록 SSO를 사용하여 연결된 앱을 만드는 방법을 설명합니다.

참고 항목

자세한 지침은 Salesforce Data Cloud 설명서에서 연결된 앱 만들기를 참조하세요.

Salesforce에 연결된 앱을 만들려면 다음을 수행합니다.

  1. Data Cloud의 오른쪽 위에서 설치를 클릭합니다.
  2. 플랫폼 도구에서 앱 > 관리자를 클릭합니다.
  3. 새로 연결된 앱을 클릭합니다.
  4. 이름연락하는 전자 메일 주소를 입력합니다.
  5. OAuth 설정 활성화
    1. 콜백 URLhttps://<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 Cloud API 리소스 액세스(cdp_api)
      • API(api)를 통해 사용자 데이터 관리
      • Data Cloud 데이터에 대한 ANSI SQL 쿼리 수행(cdp_query_api)
      • 언제든지 요청 수행(refresh_token, offline_access)
    4. 저장을 클릭합니다.
    5. 계속을 클릭합니다.
  6. 연결 앱 개요 페이지에서 소비자 세부 정보 관리를 클릭합니다. 인증하라는 메시지가 표시됩니다.
  7. 인증에 성공하면 소비자 키소비자 암호가 공개됩니다. 이러한 값을 저장합니다. Azure Databricks 연결을 만들 때 필요합니다.

Azure Databricks 연결 만들기

연결은 외부 데이터베이스 시스템에 액세스하기 위한 경로 및 자격 증명을 지정합니다. 연결을 만들려면 Azure Databricks Notebook 또는 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 Cloud연결 유형 선택합니다.

  5. (선택 사항) 설명을 추가합니다.

  6. 인증 페이지에서 Salesforce Data Cloud에 대해 다음 연결 속성을 입력합니다.

    • (선택 사항) 은 샌드박스입니다.
    • 클라이언트 ID: Salesforce 커넥티드 앱 소비자 키입니다.
    • 클라이언트 비밀: Salesforce 연결된 앱의 소비자 비밀입니다.
    • 클라이언트 범위: cdp_api api cdp_query_api refresh_token offline_access
  7. Salesforce로그인을 클릭합니다.

  8. (OAuth) SSO 자격 증명을 사용하여 Salesforce Data Cloud에 로그인하라는 메시지가 표시됩니다.

  9. 로그인에 성공하면 Databricks 연결 설정 마법사 로 돌아갑니다. Salesforce의 로그인 버튼이 메시지로 교체되었습니다.

  10. 연결 만들기를 클릭합니다.

  11. 카탈로그 기본 페이지에서 외부 카탈로그의 이름을 입력합니다. 외부 카탈로그는 외부 데이터 시스템의 데이터베이스를 미러링하므로 Azure Databricks 및 Unity 카탈로그를 사용하여 해당 데이터베이스의 데이터에 대한 액세스를 쿼리하고 관리할 수 있습니다.

  12. (선택 사항) 연결 테스트을 클릭하여 작동 여부를 확인합니다.

  13. 카탈로그만들기 클릭합니다.

  14. Access 페이지에서 사용자가 만든 카탈로그에 액세스할 수 있는 작업 영역을 선택합니다. 모든 작업 영역에 액세스를 선택하거나, 작업 영역에 할당을 클릭하고 작업 영역을 선택한 다음, 할당을 클릭합니다.

  15. 카탈로그의 모든 개체에 대한 액세스를 관리할 수 있도록 소유자을 변경합니다. 텍스트 상자에 주체를 입력한 다음, 반환된 결과에서 해당 주체를 클릭합니다.

  16. 권한 카탈로그에 부여하라. 부여를 클릭합니다.

    1. 카탈로그의 개체에 액세스할 수 있는 보안 주체 지정합니다. 텍스트 상자에 주체를 입력한 다음, 반환된 결과에서 해당 주체를 클릭합니다.
    2. 각 사용자에게 부여할 권한 사전 설정을 선택합니다. 모든 계정 사용자에게는 기본적으로 BROWSE 부여됩니다.
      • 드롭다운 메뉴에서 데이터 판독기 선택하여 카탈로그의 개체에 read 권한을 부여합니다.
      • 드롭다운 메뉴에서 데이터 편집기 선택하여 카탈로그의 개체에 readmodify 권한을 부여합니다.
      • 부여할 권한을 수동으로 선택합니다.
    3. 부여를 클릭합니다.
  17. 다음클릭하세요.

  18. 메타데이터 페이지에서 태그 키-값 쌍을 지정합니다. 자세한 내용은 Unity Catalog 보안 개체에 태그 적용하기을 참조하세요.

  19. (선택 사항) 설명을 추가합니다.

  20. 저장을 클릭합니다.

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 자격 증명으로 인증하고, <client_id><code_challenge>를 자신의 매개 변수로 교체하여 authorization_code을 얻으세요.

    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. Notebook 또는 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 Notebook 또는 SQL 쿼리 편집기에서 카탈로그 탐색기 또는 CREATE FOREIGN CATALOG SQL 명령을 사용할 수 있습니다. Databricks REST API 또는 Databricks CLI를 사용하여 카탈로그를 만들 수도 있습니다. POST /api/2.1/unity-catalog/catalogs 그리고 Unity Catalog 명령어를 참조하세요.

필요한 권한: 메타스토어에 대한 CREATE CATALOG 권한과 연결에 대한 소유권 또는 연결에 대한 CREATE FOREIGN CATALOG 권한이 필요합니다.

카탈로그 탐색기

  1. Azure Databricks 작업 영역에서 카탈로그 아이콘을 클릭하여카탈로그 탐색기를 엽니다.
  2. 오른쪽 위에서 카탈로그 만들기클릭합니다.
  3. Salesforce Data Cloud 카탈로그에 대해 다음 속성을 입력합니다.
    • 카탈로그 이름: 카탈로그에 대한 사용자에게 친숙한 이름입니다.
    • 형식: Foreign
    • 연결 이름: 카탈로그를 만들 연결의 이름입니다.
    • 데이터 영역: Salesforce 데이터 공간입니다.
  4. 만들기를 클릭합니다.

SQL

Notebook 또는 SQL 쿼리 편집기에서 다음 SQL 명령을 실행합니다. 괄호 안의 항목은 선택 사항입니다.

CREATE FOREIGN CATALOG [IF NOT EXISTS] '<catalog-name>' USING CONNECTION '<connection-name>'
OPTIONS (dataspace '<dataspace>');

다음 값을 바꿉다.

  • :
  • :
  • <dataspace>: Salesforce 데이터 공간입니다. 예들 들어 default입니다.

지원되는 푸시다운

지원되는 푸시다운은 다음과 같습니다.

  • 필터
  • 프로젝션
  • 한계
  • 집계
  • 오프셋
  • 캐스트
  • 포함, Startswith, Endswith

데이터 형식 매핑

Salesforce Data Cloud에서 Spark로 읽는 경우 데이터 형식은 다음과 같이 매핑됩니다.

Salesforce 데이터 클라우드 형식 Spark 유형
Boolean BooleanType
날짜 DateType
DateTime TimestampType
전자 메일, 전화, 텍스트, URL StringType
Number, Percent DecimalType(38, 18)

제한 사항

  • Databricks 카탈로그당 하나의 Salesforce 데이터 공간만 지원됩니다.

추가 리소스

Lakehouse Federation은 salesforce Sales Cloud에 대한 읽기 전용 연결을 지원하지 않지만 LakeFlow Connect를 사용하면 Salesforce Sales Cloud에서 Databricks 레이크하우스로 데이터를 수집할 수 있습니다. Salesforce데이터 수집을 참조하세요.