dbt Projects on Snowflake의 제한 사항, 요구 사항, 고려 사항

dbt Projects on Snowflake의 제한 사항, 요구 사항, 고려 사항

dbt Projects on Snowflake를 사용하기 전에 요구 사항, 고려 사항, 제한 사항을 검토하세요.

출처: Snowflake 문서

본문

  • 저장 프로시저에 대한 제한 사항, 요구 사항, 고려 사항
  • dbt 프로젝트와 함께 워크스페이스 사용에 대한 제한 사항, 요구 사항, 고려 사항(개인 데이터베이스 요구 사항, Git 저장소)
  • dbt 의존성에 대한 제한 사항, 요구 사항, 고려 사항
  • 원격 측정(telemetry), 로깅, 추적(tracing)에 대한 제한 사항, 요구 사항, 고려 사항
  • 복제(Replication)와 dbt 프로젝트
  • dbt DAG 제한 사항, 쿼리 기록(query history) DAG 제한 사항, 컬럼 수준 혈통(lineage) 제한 사항

dbt 프로젝트 구성의 제한 사항, 요구 사항, 고려 사항

다음 요구 사항, 고려 사항, 제한 사항은 dbt Projects on Snowflake가 지원하는 dbt 프로젝트 구성에 적용돼요:

  • dbt Core와 dbt Fusion 프로젝트만 지원돼요. dbt Cloud 프로젝트는 지원되지 않아요. 기존 dbt 프로젝트를 Snowflake로 마이그레이션할 때 지원되는 dbt 버전과 호환되어야 해요.
  • Snowflake 워크스페이스의 각 dbt 프로젝트 폴더에는 프로젝트용 target 웨어하우스, database, schema, role을 명시하는 dbt_projects_profiles.yml 또는 profiles.yml 파일이 있어야 해요. type은 snowflake로 설정해야 해요. dbt는 account와 user가 필요하지만, dbt 프로젝트가 현재 계정과 사용자 컨텍스트에서 Snowflake 내부에서 실행되므로 이 값들은 빈 문자열이나 임의의 문자열로 남겨둘 수 있어요.
  • 특정 dbt 프로젝트 폴더를 dbt 프로젝트 객체로 배포할 때 그 폴더는 최대 100,000개의 파일을 포함할 수 있어요. 이 제한에는 dbt 프로젝트 디렉터리와 하위 디렉터리의 모든 파일(생성된 target, dbt_packages, logs 디렉터리를 포함)이 포함돼요.
  • 서버리스 태스크(serverless task)로는 dbt 프로젝트 객체를 실행할 수 없어요. EXECUTE DBT PROJECT 명령을 실행하는 태스크를 만들 때는 사용자 관리 웨어하우스(user-managed warehouse)를 지정해야 해요.

저장 프로시저의 제한 사항, 요구 사항, 고려 사항

EXECUTE DBT PROJECT를 호출하는 저장 프로시저를 사용할 때는 호출자 권한(caller's rights) 저장 프로시저를 사용하세요. 자세한 내용은 CREATE PROCEDURE 및 저장 프로시저 생성 문서를 참조하세요.

원격 측정, 로깅, 추적의 제한 사항, 요구 사항, 고려 사항

다음 요구 사항, 고려 사항, 제한 사항은 Snowflake에서 dbt의 원격 측정, 로깅, 추적에 적용돼요:

  • dbt Projects on Snowflake용 워크스페이스는 stdout을 동적으로 스트리밍하지 않으며, stdout은 명령이 완료된 후에만 볼 수 있어요.
  • 로그와 추적을 보려면 dbt 프로젝트 객체에 LOG_LEVEL과 TRACE_LEVEL을 설정해야 해요. 자세한 내용은 dbt Projects on Snowflake 접근 제어 및 dbt Projects on Snowflake 모니터링 문서를 참조하세요.
  • 기본적으로 Snowflake는 기본 SNOWFLAKE.TELEMETRY.EVENTS 테이블에 원격 측정 데이터를 수집해요. 계정의 이벤트 테이블로 설정된 커스텀 이벤트 테이블이 있다면 원격 측정 데이터가 거기에 수집돼요. Enterprise Edition 계정을 사용하는 경우 원격 측정 데이터를 수집할 이벤트 테이블을 만들고 dbt 프로젝트 객체가 배포된 데이터베이스에 연결할 수 있어요. 자세한 내용은 이벤트 테이블 개요 문서를 참조하세요.

dbt DAG 제한 사항

다음 제한 사항은 모든 표면(프로젝트 세부 정보, 쿼리 기록, 워크스페이스)에서 dbt DAG에 적용돼요:

  • DAG는 한 번에 최대 300개의 모델을 표시해요. 프로젝트에 모델이 더 많다면 검색 바와 깊이(depth) 컨트롤을 사용해 필요한 그래프 부분으로 이동하세요.

쿼리 기록(query history) DAG 제한 사항

쿼리 기록 DAG는 시각화를 렌더링하려면 manifest.json과 run_results.json 아티팩트가 모두 필요해요. dbt 프로젝트 객체 실행이 run_results.json이 생성되기 전에 실패하면 QueryDetails 탭의 DAG 탭에 대신 "No data available"이 표시돼요.

run_results.json 생성이 방지되는 빠른 실패(fast-failing) 실행의 일반적인 원인은 다음과 같아요:

  • dbt 프로젝트 객체를 실행할 권한이 부족함.
  • 잘못된 프로젝트 구성(예: dbt_project.yml 파일 누락 또는 손상).
  • dbt deps로 설치되지 않은 누락된 의존성.

이를 해결하려면 QueryDetails 탭의 dbtOutput 섹션에서 오류 메시지를 확인하고, 근본 문제를 고친 뒤 dbt 프로젝트 객체를 재배포하고 다시 실행하세요. dbt 프로젝트 객체 실행 모니터링에 대한 자세한 내용은 쿼리 기록 DAG 보기 문서를 참조하세요.

컬럼 수준 혈통(column-level lineage) 제한 사항

dbt DAG의 컬럼 수준 혈통은 기본 구체화된 테이블과 뷰의 혈통을 추적하는 Snowflake Horizon Catalog로 구동돼요. 다음 제한 사항이 적용돼요:

  • 프로젝트가 최소 한 번 실행되고 기본 객체가 스키마에 구체화될 때까지 컬럼 수준 혈통은 제공되지 않아요.
  • 컬럼 수준 혈통은 구체화 사이에 드롭되는 중간 뷰를 사용하는 파이프라인에서 간극(gap)을 보일 수 있는데, 이는 흔한 dbt 패턴이에요. 테이블 수준 혈통은 영향을 받지 않아요.
  • 실행 중 노드가 구체화에 실패하면 그 컬럼 수준 혈통이 오래되거나 누락될 수 있어요. 노드가 Snowflake 레이어에서 없거나 이전 실행과 다른 컬럼 집합으로 구체화됐을 수 있어요.

더 알아보기 (Learn more)