dbt Projects on Snowflake용 워크스페이스
dbt Projects on Snowflake용 워크스페이스
Snowsight의 워크스페이스는 Git 저장소에 연결하고 동기화할 수 있는 dbt 프로젝트용 웹 기반 통합 개발 환경(IDE)을 제공해요. dbt Projects on Snowflake용 각 워크스페이스는 파일과 폴더를 어떻게 구성하느냐에 따라 단일 dbt 프로젝트 또는 여러 dbt 프로젝트를 나타낼 수 있어요.
출처: Snowflake 문서
본문
dbt Projects on Snowflake용 워크스페이스를 사용해 dbt 프로젝트를 Snowflake에서 직접 시각화·테스트·실행할 수 있어요. dev 스키마에 구체화된 모델의 Horizon Catalog 기반 컬럼 수준 혈통 보기도 포함돼요. 워크스페이스는 템플릿으로 새 dbt 프로젝트를 시작하거나, 기존 Git 저장소에 연결하거나, 배포된 dbt 프로젝트 객체를 워크스페이스로 직접 임포트하는 빠른 방법을 제공해요.
워크스페이스는 또한 Snowflake 내에서 여러 파일 타입과 프로젝트에 걸쳐 코드를 생성·구성·관리할 수 있는 통합 편집기(unified editor)를 제공해요. 자세한 내용은 워크스페이스 문서를 참조하세요.
프로젝트가 env.yml 파일을 정의하면 워크스페이스는 각 실행 전에 이를 해결하고 환경 변수를 실행에 주입해요. 실행 패널의 환경 선택기로 활성 환경을 선택하고, 단일 실행에 대해 개별 변수를 재정의할 수 있어요. 자세한 내용은 dbt Projects on Snowflake용 SQL 환경 변수와 비공개 Git 패키지 사용 문서를 참조하세요.
편집기에서 dbt 모델 구성 및 실행
워크스페이스 편집기에서 전체 dbt 프로젝트나 개별 모델을 직접 실행할 수 있어요.
Snowflake는 dbt_project.yml 파일의 model-paths 설정을 사용해 어떤 파일이 모델인지 식별해요. model-paths가 설정되지 않으면 Snowflake는 기본 /models 디렉터리로 대체해요. model-paths를 명시적으로 설정하면 의도한 파일이 모델로 처리되도록 보장해요.
단일 모델 실행
개별 모델을 실행하려면 그 .sql 파일을 열고 재생 버튼을 선택하거나, Cmd+Enter(Mac) 또는 Ctrl+Enter(Windows/Linux)를 눌러요. model-paths(또는 /models 대체) 아래의 파일에 대해 Snowflake는 파일을 원시 SQL로 실행하는 대신 dbt run --select <model_name>을 실행해요. 이렇게 하면 모델이 컴파일되고 변경 사항이 target 폴더로 전파되므로, 전체 프로젝트를 실행하지 않고 모델을 반복하고 컴파일된 출력을 검토할 수 있어요.
이 동작은 컴파일된 SQL 파일과는 달라요. dbt가 이미 컴파일한 파일(예: target 폴더의 파일)을 실행하면 Snowflake는 이를 원시 SQL로 실행해요.
개발 중 defer to production
네이티브 defer to production을 사용해 워크스페이스에서 선택한 모델을 실행하면서, 빌드되지 않은 업스트림 모델에 대한 참조는 프로덕션 dbt 프로젝트 객체에서 해결할 수 있어요.
프로덕션으로 defer하려면:
- 실행 패널에서 Advanced options를 선택해요.
- Defer to Production을 활성화해요.
- 프로덕션 dbt 프로젝트 객체가 포함된 데이터베이스와 스키마를 선택한 다음 객체를 선택해요. dbt 프로젝트 객체는 그 객체에
MONITOR권한이 있을 때만 나타나요. 객체는 또한 지난 7일 이내에 자격 있는 실행이 한 번 이상 있어야 해요. - state로 사용할 target 아티팩트를 선택해요: Last Successful Run(기본값), Last Failed Run Target, Last Run Target.
- 변경된 노드와 그 다운스트림 의존성을 처리하려면 dbt 인수에
--select state:modified+를 추가해요. - dbt 명령을 실행해요.
워크스페이스는 선택한 target 아티팩트를 ./imports/state 아래로 임포트하고 명령에 자동으로 --defer와 --state ./imports/state를 추가해요. 선택한 옵션이 워크스페이스가 사용할 최근 실행 시스템 함수를 결정해요. 예를 들어 Last Successful Run을 선택하면 생성된 SQL은 다음과 유사할 수 있어요:
EXECUTE DBT PROJECT FROM WORKSPACE "USER$"."PUBLIC"."my_dbt_projects"
ARGS = 'run --defer --state ./imports/state --select state:modified+'
IMPORTS = (
SYSTEM$DBT_GET_LAST_SUCCESSFUL_RUN_TARGET('sales_db.sales_schema.prod_sales_project') AS 'state'
);
state 아티팩트, 셀렉터, defer에 대한 자세한 내용은 Slim CI와 프로덕션 defer에 dbt 아티팩트 사용 문서를 참조하세요.
컴파일된 SQL 보기
View Compiled SQL 버튼은 model-paths 디렉터리 안 또는 dbt_project.yml에 model-paths가 설정되지 않았을 때 /models 대체 디렉터리 안의 .sql 파일에 나타나요. 이를 선택하면 참조와 매크로가 해결된, dbt가 모델에 대해 생성한 SQL을 볼 수 있어요.
워크스페이스에서 DAG 탐색
워크스페이스 DAG는 프로젝트 세부 정보 DAG와 동일한 검색 바, 깊이 컨트롤, 컬럼 수준 혈통을 지원해요. 프로젝트를 반복하며 모델을 실행하면 워크스페이스 DAG가 자동으로 최신 결과를 반영해요: 각 모델 노드의 사이드 패널은 가장 최근 manifest.json과 run_results.json 아티팩트의 런타임 데이터(마지막 실행의 시작 시간, 종료 시간, 지속 시간 포함)로 채워져요. 이렇게 하면 워크스페이스를 떠나지 않고도 느리거나 실패하는 모델을 쉽게 발견할 수 있어요.
워크스페이스가 dbt 프로젝트 객체에 연결되어 있으면 Connect » View project를 선택해 프로젝트 세부 정보 페이지를 연 다음 Graph 탭을 선택해 워크스페이스에서 직접 프로젝트의 DAG를 탐색할 수 있어요.
DAG 검색, 깊이 제어, 컬럼 수준 혈통 보기에 대한 전체 세부 정보는 dbt 프로젝트 객체 보기 및 관리 문서를 참조하세요.
dbt 프로젝트와 함께 워크스페이스 사용의 제한 사항, 요구 사항, 고려 사항
다음 요구 사항, 고려 사항, 제한 사항은 dbt Projects on Snowflake용 워크스페이스에 적용돼요:
- Snowflake 워크스페이스의 각 dbt 프로젝트 폴더에는 프로젝트용 target 웨어하우스,
database,schema,role을 명시하는dbt_projects_profiles.yml또는profiles.yml파일이 있어야 해요.type은snowflake로 설정해야 해요. dbt Core와 달리 유효한account와user값이 필요하지 않아요. dbt 프로젝트가 현재 계정과 사용자 컨텍스트에서 Snowflake 내부에서 실행되므로 이 필드를 생략하거나 빈·임의의 문자열로 설정할 수 있어요. - 특정 dbt 프로젝트 폴더를 dbt 프로젝트 객체로 배포할 때 그 폴더는 모든 폴더에 걸쳐 최대 100,000개의 파일을 포함할 수 있어요. 여기에는 생성된
target,dbt_packages(dbt deps가 설치한 외부 패키지와 매크로),logs디렉터리가 포함돼요. 이 제한에 근접하는 매우 큰 프로젝트라면 논리적 하위 프로젝트로 분할하거나, 더 많은 용량이 필요하면 Snowflake 계정 담당자에게 문의하세요.
개인 데이터베이스 요구 사항
워크스페이스는 개인 데이터베이스(personal database) 내에서 생성되며 다른 사용자와 공유할 수 없어요. 개인 데이터베이스는 계정 수준에서 활성화해야 하며, 이를 위해서는 ACCOUNTADMIN 권한이 필요해요. 자세한 내용은 접근 및 동작 관리 문서를 참조하세요.
공유 워크스페이스는 특정 데이터베이스와 스키마 내에서 생성되며 여러 인증된 사용자에게 접근을 부여해요. 특정 역할을 할당받은 사용자는 환경 내에서 코드와 파일에 동시에 기여·편집·수정할 수 있어요. 자세한 내용은 공유 워크스페이스 문서를 참조하세요.
Git 저장소
dbt Projects on Snowflake용 워크스페이스를 Git 저장소에 연결할 때 적용되는 요구 사항·고려 사항·제한 사항은 Snowflake에서 Git 제한 사항 문서를 참조하세요.
PrivateLink를 통해 접근하는 Git 저장소는 사전에 구성해야 해요. 자세한 내용은 공용 네트워크를 통한 Git 저장소 연결 문서를 참조하세요.