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에는 컬럼 타입, 컬럼 레벨 계통, 런타임 결과가 포함되지 않아요.