Salesforce Data 360 설정

Salesforce Data 360 설정

Salesforce Data 360 어댑터(dbt v2)에서 지원되는 materialization과 필요한 설정들을 다루는 페이지예요. 현재는 Beta 단계인 기능들이 많으니, 실제 사용 전에 현재 특성과 제약을 꼭 확인해 주세요.

출처: 문서

본문

지원되는 materialization

Materialization 지원 여부 참고 사항
View
Table 배치 데이터 변환(batch data transform)과 Data Lake Object(DLO)를 생성함
Incremental 곧 지원 예정
Ephemeral
Seeds
Sources 필수
Custom data tests
Snapshots

Source

Data 360의 원시 데이터를 조회하는 모델은 dbt source를 통해 테이블을 참조해야 해요. DLO를 직접 선택하는 것은 지원되지 않아요.

예를 들어:

sources:
  - name: default
    tables:
      - name: raw_customers__dll
        description: "Customers raw table stored in default dataspace"   
        columns:
          - name: id__c 
            description: "Customer ID"
            data_tests:
              - not_null
              - unique
          - name: first_name__c
            description: "Customer first name"
          - name: last_name__c
            description: "Customer last name"
          - name: email__c
            description: "Customer email address"
            data_tests:
              - not_null
              - unique

Table materialization

dbt v2는 Salesforce Data 360에서 Table materialization을 지원해요. 이 materialization을 실행하면 배치 데이터 변환과 조회용 Data Lake Object(DLO)가 생성돼요.

현재는 profile 타입의 DLO만 지원돼요. engagement DLO 지원은 곧 제공될 예정이에요. Profile DLO는 모델 config에 primary_key를 반드시 정의해야 해요. 예를 들어:

{{ config(
    materialized='table',
    primary_key='customer_id__c',
    category='Profile'
) }}

   select

        id__c as customer_id__c,
        first_name__c,
        last_name__c,
        email__c as customer_email__c

    from {{ source('default', 'raw_customers__dll') }}

네이밍 규칙과 필수 config

  • 모든 dbt 모델 이름은 __dll로 끝나야 해요. 파일 이름에서 이 접미사를 빼먹으면 실행 중에 자동으로 추가돼요(예: model_namemodel_name__dll이 됨). 그러면 Data 360에는 model_name__dll이 있는데 dbt가 model_name이라는 DLO를 찾으려 하므로, 다운스트림 dbt 참조가 깨질 수 있어요.
  • 컬럼은 __c로 끝나야 해요. 접미사를 빼먹으면 Data 360의 "unknown syntax" 오류가 발생해요.
  • 모델 이름은 마지막 __dll 외에는 이중 언더스코어(__)를 포함할 수 없어요. 예를 들어 supplies__agg__dllagg__dll로 빌드되는데, 다운스트림 ref에 혼란을 줄 수 있어요.
  • 모든 dbt 모델은 모델 configuration에 primary_keycategory='Profile'을 설정해야 해요. 이 구성은 resources.ymldbt_project.yml에서도 적용할 수 있어요.

알려진 제한 사항

  • dbt 모델 재실행: Data 360의 메타데이터 및 의존성 관리 아키텍처 때문에, 데이터 변환과 DLO가 이미 존재하면 dbt는 같은 모델을 재실행할 수 없어요. 이는 데이터 웨어하우스에서처럼 dbt가 후속 table materialization 실행 중에 DLO를 drop할 수 없기 때문이에요. 실행 사이에 로직을 바꿨다면, dbtf run을 실행하기 전에 UI에서 데이터 변환과 DLO의 의존성을 수동으로 삭제해야 해요. 현재 수정이 진행 중이에요.
  • VS Code의 정적 분석: 컬럼 레벨 계보와 dbt 버튼(Build, Test)이 영향을 받아요. 모든 명령을 --static-analysis off로 실행하거나, 환경 변수에 DBT_STATIC_ANALYSIS=off를 설정해서 정적 분석을 임시로 끌 수 있어요.
  • 임의 쿼리(예: SELECT 1 AS foo): 모든 쿼리는 dbt 모델을 만들기 전에 정의된 dbt source에 연결되어야 해요.
  • select *: Data 360이 모든 DLO에 시스템 컬럼을 주입하기 때문에 메타데이터 쿼리가 실패할 수 있어요. 버그 수정이 진행 중이에요.

더 알아보기 (Learn more)

  • Salesforce Data 360의 배치 데이터 변환 개요는 Salesforce 도움말을 참고하세요.
  • dbt v2와 Beta 기능의 수명주기는 product lifecycles 문서를 확인해 주세요.