dbt parse 명령어

dbt parse 명령어

dbt parse 명령어는 dbt 프로젝트의 내용을 파싱·검증해요. 프로젝트에 Jinja나 YAML 문법 오류가 있으면 실패해요. 파싱 시간 상세를 담은 아티팩트와 manifest도 생성해요.

출처: 문서

본문

dbt parse 명령어는 dbt 프로젝트의 내용을 파싱·검증해요. 프로젝트에 Jinja나 YAML 문법 오류가 있으면 명령어가 실패해요.

또한 상세한 타이밍 정보가 담긴 아티팩트를 생성해서, 대형 프로젝트의 파싱 시간을 이해하는 데 유용해요. 자세한 내용은 Project parsing을 참고하세요.

v1.5부터 dbt parse는 manifest를 기록하거나 반환해서, 프로젝트의 모든 리소스에 대한 dbt의 이해를 들여다볼 수 있게 해줘요. dbt parse는 웨어하우스에 연결하지 않으므로 이 manifest에는 컴파일된 코드가 포함되지 않아요.

기본적으로 Studio IDE는 "부분(partial)" 파싱을 시도해요. 즉 마지막 파싱 이후의 변경 사항(변경할 때 프로젝트의 새 부분 또는 업데이트된 부분)만 확인해요. Studio IDE는 작업을 저장할 때마다 백그라운드에서 자동으로 파싱하므로, 직접 dbt parse를 실행하는 것은 최근 변경 사항만 보기 때문에 빠를 가능성이 커요.

옵션으로 --no-partial-parse 플래그를 사용해 dbt에게 전체 프로젝트를 처음부터 확인하라고 지시할 수 있어요. 이는 프로젝트를 최근 변경뿐 아니라 전체 재파싱하게 해요.

$ dbt parse
13:02:52  Running with dbt=1.5.0
13:02:53  Performance info: target/perf_info.json

target/perf_info.json

{
    "path_count": 7,
    "is_partial_parse_enabled": false,
    "parse_project_elapsed": 0.20151838900000008,
    "patch_sources_elapsed": 0.00039490800000008264,
    "process_manifest_elapsed": 0.029363873999999957,
    "load_all_elapsed": 0.240095269,
    "projects": [
        {
            "project_name": "my_project",
            "elapsed": 0.07518750299999999,
            "parsers": [
                {
                    "parser": "model",
                    "elapsed": 0.04545303199999995,
                    "path_count": 1
                },
                {
                    "parser": "operation",
                    "elapsed": 0.0006415469999998535,
                    "path_count": 1
                },
                {
                    "parser": "seed",
                    "elapsed": 0.026538173000000054,
                    "path_count": 2
                }
            ],
            "path_count": 4
        },
        {
            "project_name": "dbt_postgres",
            "elapsed": 0.0016448299999998195,
            "parsers": [
                {
                    "parser": "operation",
                    "elapsed": 0.00021672399999994596,
                    "path_count": 1
                }
            ],
            "path_count": 1
        },
        {
            "project_name": "dbt",
            "elapsed": 0.006580432000000025,
            "parsers": [
                {
                    "parser": "operation",
                    "elapsed": 0.0002488560000000195,
                    "path_count": 1
                },
                {
                    "parser": "docs",
                    "elapsed": 0.002500640000000054,
                    "path_count": 1
                }
            ],
            "path_count": 2
        }
    ]
}

(dbt v2.0 이상 적용)

dbt Information Schema

--generate-info-schema를 사용해 dbt Information Schema를 버전이 있는 하위 디렉터리(현재 v1/)의 target/info_schema/에 기록해요. Information Schema는 프로젝트의 메타데이터를 쿼리 가능한 SQL 테이블(데이터베이스의 INFORMATION_SCHEMA와 유사)로 노출해서, manifest.json을 파싱하지 않고도 모델·소스 등을 조회할 수 있어요.

dbt parse --generate-info-schema

dbt parse는 웨어하우스에 연결하지 않으므로, 생성하는 Information Schema에는 컬럼 타입, 컬럼 레벨 계통, 런타임 결과가 포함되지 않아요.

더 알아보기 (Learn more)