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)