adapter
adapter
adapter 컨텍스트 객체는 데이터베이스와 상호작용하는 함수(쿼리 실행, relation 조회, 스키마 관리 등)에 접근할 수 있게 해줘요. 주로 고급 매크로에서 데이터베이스 작업을 수행할 때 사용하며, 실행(execution) 단계(execute가 true일 때)에서만 사용할 수 있어요.
출처: 문서
본문
주요 메서드는 다음과 같아요:
adapter.get_relation(database, schema, identifier)— 주어진 데이터베이스·스키마·식별자에 해당하는 relation을 반환해요. 없으면None.adapter.create_schema(relation)— relation의 스키마를 생성해요.adapter.drop_schema(relation)— relation의 스키마를 삭제해요.adapter.drop_relation(relation)— relation(테이블/뷰)을 삭제해요.adapter.rename_relation(from_relation, to_relation)— relation 이름을 바꿔요.adapter.get_columns_in_relation(relation)— relation의 컬럼 목록을 반환해요.adapter.expand_target_column_types(from_relation, to_relation)— 대상 컬럼 유형을 확장해요.adapter.get_missing_columns(from_relation, to_relation)— 대상 relation에 없는 컬럼을 반환해요.adapter.run_query(sql)— SQL을 실행하고 결과를 컨텍스트에 저장해요.adapter.execute(sql, auto_begin, fetch)— SQL을 실행해요(fetch=True면 결과를 가져옴).
예시
{% set relation = adapter.get_relation(database='raw', schema='jaffle_shop', identifier='customers') %}
{% if relation is not none %}
select * from {{ relation }}
{% endif %}
adapter는 파싱 단계에서는 사용할 수 없으므로, {% if execute %}로 감싸서 실행 단계에서만 호출하는 게 안전해요.
더 알아보기 (Learn more)
- 실행 여부 판단은 execute를 참조하세요.
- Relation 객체는 dbt Classes - Relation을 참조하세요.