target 변수
target 변수
target 변수에는 웨어하우스에 대한 연결(connection) 정보가 들어 있어요.
출처: 문서
본문
-
dbt v1: 이 값들은 profiles.yml에 정의된 target에 기반해요. 특정 어댑터에서는 추가 설정 단계가 필요할 수 있다는 점을 기억하세요. 데이터 플랫폼의 set up 페이지를 참고해요.
-
dbt 어댑터를 dbt에서 설정하는 방법에 대해 더 알아보려면 About data platform connections을 참고해요.
- Orchestrator:
target.name은 Custom target names에서 설명하듯 job마다 정의돼요. 다른 속성들은 배포 연결(deployment connection)에 의해 정의돼요. 이 값들을 확인하려면 Deploy를 클릭하고 Environments를 선택해요. 그러면 관련 배포 환경을 선택하고 Settings를 클릭해요. - Studio IDE: 이 값들은 연결과 자격 증명에 의해 정의돼요. 이 값을 편집하려면 왼쪽 메뉴에서 계정 이름을 클릭하고 Account settings를 선택해요. 그다음 Credentials를 클릭해요. 프로젝트를 선택·편집해 자격 증명과 target 이름을 설정해요.
- Orchestrator:
일부 설정은 모든 어댑터에서 공유되지만, 다른 설정은 어댑터 특정적이에요. dbt 명령어를 실행할 때 활성 target을 설정하려면 --target 플래그를 사용할 수도 있어요.
Common
| Variable | Example | Description |
|---|---|---|
target.profile_name |
jaffle_shop | 활성 프로파일의 이름 |
target.name |
dev | 활성 target의 이름 |
target.schema |
dbt_alice | dbt 스키마의 이름(BigQuery에서는 dataset) |
target.type |
postgres | 사용 중인 활성 어댑터. "postgres", "snowflake", "bigquery", "redshift", "databricks" 중 하나 |
target.threads |
4 | dbt가 사용하는 스레드 수 |
Adapter-specific
Snowflake
| Variable | Example | Description |
|---|---|---|
target.database |
RAW | 활성 target에서 지정한 데이터베이스 이름 |
target.warehouse |
TRANSFORM | Snowflake 가상 웨어하우스 이름 |
target.user |
TRANSFORM_USER | 활성 target에서 지정한 사용자 |
target.role |
TRANSFORM_ROLE | 활성 target에서 지정한 역할 |
target.account |
abc123 | 활성 target에서 지정한 계정 |
Postgres/Redshift
| Variable | Example | Description |
|---|---|---|
target.dbname |
analytics | 활성 target에서 지정한 데이터베이스 이름 |
target.host |
abc123.us-west-2.redshift.amazonaws.com | 활성 target에서 지정한 호스트 |
target.user |
dbt_user | 활성 target에서 지정한 사용자 |
target.port |
5439 | 활성 프로파일에서 지정한 포트 |
BigQuery
| Variable | Example | Description |
|---|---|---|
target.project |
abc-123 | 활성 프로파일에서 지정한 프로젝트 |
target.dataset |
dbt_alice | 활성 프로파일의 dataset |
--target 플래그 사용하기
dbt 명령어를 실행할 때 --target 플래그를 사용해 활성 target과 그와 연결된 target.name 값을 설정해요:
dbt run --target dev
dbt run --target prod
--target 플래그는 profiles.yml에 지정된 기본 target을 덮어쓰기 위해 어떤 dbt 명령어와도 쓸 수 있어요. 이건 구성 파일을 바꾸지 않고 같은 dbt 프로젝트를 여러 환경(dev, staging, prod처럼)에 대해 실행할 때 유용해요.
예시
dev에서 데이터를 제한하기 위해 target.name 사용
분별 있는 target 이름을 쓴다면, dev에서 작업할 때 데이터를 제한하기 위해 조건 로직을 수행할 수 있어요.
select
*
from source('web_events', 'page_views')
{% if target.name == 'dev' %}
where created_at >= dateadd('day', -3, current_date)
{% endif %}
소스 데이터베이스를 바꾸기 위해 target.name 사용
dev/qa/prod 환경에 대해 특정 Snowflake 데이터베이스가 설정돼 있다면, 환경에 따라 소스가 다른 데이터베이스로 컴파일되도록 소스를 설정할 수 있어요.
sources:
- name: source_name
database: |
{%- if target.name == "dev" -%} raw_dev
{%- elif target.name == "qa" -%} raw_qa
{%- elif target.name == "prod" -%} raw_prod
{%- else -%} invalid_database
{%- endif -%}
schema: source_schema
더 알아보기 (Learn more)
target변수로 활성 연결 정보를 읽고 환경별 조건 로직을 만들 수 있어요.- 관련 개념: profiles.yml, custom target names.