target 변수

target 변수

target 변수에는 웨어하우스에 대한 연결(connection) 정보가 들어 있어요.

출처: 문서

본문

  • dbt v1: 이 값들은 profiles.yml에 정의된 target에 기반해요. 특정 어댑터에서는 추가 설정 단계가 필요할 수 있다는 점을 기억하세요. 데이터 플랫폼의 set up 페이지를 참고해요.

  • dbt 어댑터를 dbt에서 설정하는 방법에 대해 더 알아보려면 About data platform connections을 참고해요.

    • Orchestrator: target.nameCustom target names에서 설명하듯 job마다 정의돼요. 다른 속성들은 배포 연결(deployment connection)에 의해 정의돼요. 이 값들을 확인하려면 Deploy를 클릭하고 Environments를 선택해요. 그러면 관련 배포 환경을 선택하고 Settings를 클릭해요.
    • Studio IDE: 이 값들은 연결과 자격 증명에 의해 정의돼요. 이 값을 편집하려면 왼쪽 메뉴에서 계정 이름을 클릭하고 Account settings를 선택해요. 그다음 Credentials를 클릭해요. 프로젝트를 선택·편집해 자격 증명과 target 이름을 설정해요.

일부 설정은 모든 어댑터에서 공유되지만, 다른 설정은 어댑터 특정적이에요. 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)