Upsolver configurations
Upsolver configurations
dbt-upsolver 어댑터에서 Upsolver SQLake 기능을 구성하는 방법을 다루는 페이지예요. connection, copy job, insert job, merge job, materialized view, 기대값/제약을 설정할 수 있어요.
출처: 문서
본문
지원되는 Upsolver SQLake 기능
Configs materialization
SQL connection
커넥션(connection)은 Upsolver에 데이터를 SQLake로 가져오고 변환된 데이터를 다양한 서비스로 써내는 데 필요한 적절한 자격 증명을 제공하는 데 쓰여요. 자세한 내용은 "Upsolver SQL connections"을 참고하세요.
dbt 모델 커넥션은 materialized='connection'인 모델이에요.
{{ config(
materialized='connection',
connection_type={ 'S3' | 'GLUE_CATALOG' | 'KINESIS' | 'KAFKA'| 'SNOWFLAKE' },
connection_options={}
)
}}
이 모델을 실행하면 CREATE CONNECTION(또는 이미 존재하면 ALTER CONNECTION) SQL을 컴파일해 Upsolver 엔진으로 보내요. 커넥션 이름은 모델 이름이 돼요.
SQL copy job
COPY FROM 잡은 주어진 소스에서 metastore 커넥션에 만들어진 테이블로 데이터를 복사할 수 있게 해줘요. 이 테이블은 스테이징 테이블 역할을 하며, SQLake 변환 잡과 함께 다양한 대상 위치로 쓰는 데 사용할 수 있어요. 자세한 내용은 "Upsolver SQL copy-from"을 참고하세요.
dbt 모델 copy job은 materialized='incremental'인 모델이에요.
{{ config( materialized='incremental',
sync=True|False,
source = 'S3'| 'KAFKA' | ... ,
options={
'option_name': 'option_value'
},
partition_by=[{}]
)
}}
SELECT * FROM {{ ref(<model>) }}
이 모델을 실행하면 target type Data lake용 CREATE TABLE SQL(또는 이미 존재하면 ALTER TABLE)과 CREATE COPY JOB(또는 이미 존재하면 ALTER COPY JOB) SQL을 컴파일해 Upsolver 엔진으로 보내요. 테이블 이름은 모델 이름이 되고, 잡 이름은 모델 이름에 '_job'을 붙인 값이 돼요.
SQL insert job
INSERT 잡은 주어진 SELECT 문을 기반으로 데이터 세트를 가져와 지정된 대상에 삽입하는 쿼리를 정의해요. 이 쿼리는 잡에 정의된 RUN_INTERVAL에 따라 주기적으로 실행돼요. 자세한 내용은 "Upsolver SQL insert"를 참고하세요.
dbt 모델 insert job은 materialized='incremental'이고 incremental_strategy='insert'인 모델이에요.
{{ config( materialized='incremental',
sync=True|False,
map_columns_by_name=True|False,
incremental_strategy='insert',
options={
'option_name': 'option_value'
},
primary_key=[{}]
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...
HAVING COUNT(DISTINCT orderid::string) ...
이 모델을 실행하면 target type Data lake용 CREATE TABLE SQL(또는 이미 존재하면 ALTER TABLE)과 CREATE INSERT JOB(또는 이미 존재하면 ALTER INSERT JOB) SQL을 컴파일해 Upsolver 엔진으로 보내요. 테이블 이름은 모델 이름이 되고, 잡 이름은 모델 이름에 '_job'을 붙인 값이 돼요.
SQL merge job
MERGE 잡은 주어진 SELECT 문을 기반으로 데이터 세트를 가져와 잡 정의에 따라 지정된 대상에 데이터를 삽입·교체·삭제하는 쿼리를 정의해요. 이 쿼리는 잡에 정의된 RUN_INTERVAL에 따라 주기적으로 실행돼요. 자세한 내용은 "Upsolver SQL merge"를 참고하세요.
dbt 모델 merge job은 materialized='incremental'이고 incremental_strategy='merge'인 모델이에요.
{{ config( materialized='incremental',
sync=True|False,
map_columns_by_name=True|False,
incremental_strategy='merge',
options={
'option_name': 'option_value'
},
primary_key=[{}]
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...
HAVING COUNT ...
이 모델을 실행하면 target type Data lake용 CREATE TABLE SQL(또는 이미 존재하면 ALTER TABLE)과 CREATE MERGE JOB(또는 이미 존재하면 ALTER MERGE JOB) SQL을 컴파일해 Upsolver 엔진으로 보내요. 테이블 이름은 모델 이름이 되고, 잡 이름은 모델 이름에 '_job'을 붙인 값이 돼요.
SQL materialized views
데이터를 변환하다 보면 원하는 결과를 얻기 위해 여러 소스 테이블의 데이터가 필요할 수 있어요. 그럴 때 하나의 SQLake 테이블에서 materialized view를 만들어 다른 테이블(이 경우 메인 테이블로 간주)과 조인할 수 있어요. 자세한 내용은 "Upsolver SQL materialized views"를 참고하세요.
dbt 모델 materialized view는 materialized='materializedview'인 모델이에요.
{{ config( materialized='materializedview',
sync=True|False,
options={'option_name': 'option_value'}
)
}}
SELECT ...
FROM {{ ref(<model>) }}
WHERE ...
GROUP BY ...
이 모델을 실행하면 CREATE MATERIALIZED VIEW SQL(또는 이미 존재하면 ALTER MATERIALIZED VIEW)을 컴파일해 Upsolver 엔진으로 보내요. materialized view 이름은 모델 이름이 돼요.
기대값/제약 (Expectations/constraints)
데이터 품질 조건을 잡에 추가해, 컬럼이 미리 정의된 조건을 위반할 때 행을 버리거나 경고를 트리거할 수 있어요.
WITH EXPECTATION <expectation_name> EXPECT <sql_predicate>
ON VIOLATION WARN
Expectations는 dbt constraints로 구현할 수 있어요.
지원되는 constraints: check와 not_null
models:
- name: <model name>
# required
config:
contract:
enforced: true
# model-level constraints
constraints:
- type: check
columns: ['<column1>', '<column2>']
expression: "column1 <= column2"
name: <constraint_name>
- type: not_null
columns: ['column1', 'column2']
name: <constraint_name>
columns:
- name: <column3>
data_type: string
# column-level constraints
constraints:
- type: not_null
- type: check
expression: "REGEXP_LIKE(<column3>, '^[0-9]{4}[a-z]{5}$')"
name: <constraint_name>
프로젝트 예시
프로젝트 예시 링크: github.com/dbt-upsolver/examples/
Connection options
각 커넥션 타입별 옵션 상세는 원문의 Connection options 표를 참고하세요.
Target options
대상 옵션 상세는 원문의 Target options 표를 참고하세요.
Transformation options
변환 옵션 상세는 원문의 Transformation options 표를 참고하세요.
Copy options
복사 옵션 상세는 원문의 Copy options 표를 참고하세요.
더 알아보기 (Learn more)
- Upsolver 설정 — 어댑터 연결.
- Model contracts — contract와 constraint 강제.