latest_version_pointer

latest_version_pointer (최신 버전 포인터)

latest_version_pointer는 버전이 있는 모델(versioned model)의 베이스 이름(예: dim_customers)으로 뷰를 만들어, 항상 최신 버전의 관계(예: dim_customers_v2)를 가리키게 하는 설정이에요. dbt v1.12 또는 dbt "v1 Latest" 릴리스 트랙에서 사용할 수 있어요.

출처: dbt 공식 문서

본문

설정 방법

프로젝트 파일

dbt_project.yml

models:
  <resource-path>:
    +latest_version_pointer:
      enabled: true | false
      alias: <string>

프로퍼티 파일

models/schema.yml

models:
  - name: [<model-name>]
    config:
      latest_version_pointer:
        enabled: true | false
        alias: <string>

SQL 설정

models/<model_name>.sql

{{ config(
    latest_version_pointer={
        "enabled": true | false,
        "alias": "<string>"
    }
) }}

정의

dbt v2의 dbt 플랫폼

dbt v2에서는 latest_version_pointer가 모든 버전이 있는 모델에 기본적으로 활성화돼 있어요. 모델의 베이스 이름과 일치하는 명시적 alias를 가진 버전 모델이 있으면 dbt1005 충돌 오류가 생길 수 있어요. 해결 방법은 아래 명명 충돌 섹션을 참고해요.

latest_version_pointer 설정은 버전이 있는 모델의 베이스 이름(예: dim_customers)으로 된 뷰를 만들어 항상 최신 버전 관계(예: dim_customers_v2)를 가리키게 해요. 이 뷰는 is_latest_version = true인 모델이 성공적으로 materialize된 후에 생성되며, 다른 모든 버전에서는 건너뛰어요.

이 기능을 모든 버전 모델에 전역으로 활성화하려면 dbt_project.yml에서 latest_version_pointer_enabled_by_default 플래그를 true로 설정할 수도 있어요.

dbt_project.yml

flags:
  latest_version_pointer_enabled_by_default: true

latest_version_pointer는 모델별 제어를 위한 두 개의 선택적 하위 키를 받아요.

타입 기본값 설명
enabled boolean 이 모델에 대해 포인터 뷰를 활성화하거나 비활성화해요. 설정하면 latest_version_pointer_enabled_by_default 프로젝트 플래그를 덮어쓰고, 설정하지 않으면 그 플래그를 따릅니다.
alias string 모델 베이스 이름 포인터 뷰의 사용자 지정 이름이에요. 기본 베이스 이름을 덮어써요. 자세한 내용은 별칭 사용자 지정을 참고해요.

별칭 사용자 지정

기본적으로 포인터 뷰는 모델의 베이스 이름(예: dim_customers)을 사용해요. 두 가지 방법으로 사용자 지정할 수 있어요.

명명 충돌

명명 충돌을 방지하기 위해 dbt는 최신 버전의 alias가 포인터 뷰 이름과 같으면 dbt1005 오류를 발생시켜요. latest_version_pointer가 기본 활성화된 dbt v2에서는, 포인터를 직접 설정한 적이 없어도 모델의 베이스 이름과 일치하는 명시적 alias가 있는 모델에서 이 오류가 표면화될 수 있어요.

예를 들어 다음 설정은 dim_customers_v2와 포인터 뷰가 둘 다 dim_customers로 해석되기 때문에 dbt1005를 발생시켜요.

dbt1005 (Cannot create latest version pointer: the latest version of 'dim_customers' is already aliased to 'dim_customers')
models:
  - name: dim_customers
    versions:
      - v: 1
      - v: 2
        config:
          alias: dim_customers  # collides with the pointer view name
    config:
      latest_version_pointer:
        enabled: true

이를 해결하려면 다음 옵션 중 하나를 선택해요.

alias 제거 (권장)

최신 버전에서 alias를 제거하고 자동 포인터가 처리하게 둬요.

config:
  alias: dim_customers

해당 모델의 최신 버전 포인터 비활성화

이 방법은 기존 alias 설정에 즉시 하위 호환이 돼요.

        config:
          alias: dim_customers
    config:
      latest_version_pointer:
        enabled: false

고유한 alias 설정

        config:
          alias: dim_customers_latest

generate_latest_version_pointer_alias 매크로 덮어쓰기

전역으로 다른 명명 규칙을 쓰려면 generate_latest_version_pointer_alias 매크로를 덮어써요.

macros/generate_latest_version_pointer_alias.sql

{% macro generate_latest_version_pointer_alias(custom_alias_name=none, node=none) -%}
    {{ node.name ~ "_latest" }}
{%- endmacro %}

더 알아보기 (Learn more)