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_name은model_name__dll이 됨). 그러면 Data 360에는model_name__dll이 있는데 dbt가model_name이라는 DLO를 찾으려 하므로, 다운스트림 dbt 참조가 깨질 수 있어요. - 컬럼은
__c로 끝나야 해요. 접미사를 빼먹으면 Data 360의 "unknown syntax" 오류가 발생해요. - 모델 이름은 마지막
__dll외에는 이중 언더스코어(__)를 포함할 수 없어요. 예를 들어supplies__agg__dll은agg__dll로 빌드되는데, 다운스트림 ref에 혼란을 줄 수 있어요. - 모든 dbt 모델은 모델 configuration에
primary_key와category='Profile'을 설정해야 해요. 이 구성은resources.yml과dbt_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 문서를 확인해 주세요.