dbt是数据分析领域的一种变革性工具,它使数据专业人员能够对仓库中的数据进行转换和建模。它的强大功能之一是生成dbt artifacts:dbt运行的结构化输出,提供对dbt项目及其操作的深入了解。
dbt 构件介绍
dbt构件是每次dbt运行时生成的JSON文件。它们包括:
- semantic_manifest.json:包含为每个模型编译的SQL代码。
- manifest.json:提供dbt项目上次运行的全面结果清单视图。
- catalog.json:提供有关数据库模式的详细信息,包括列数据类型和描述。
- run_results.json:包含上次dbt运行的结果,包括成功或失败状态。
- sources.json:项目中使用的source数据表的详细信息。
这些构件对于文档、查看dbt项目状态以及可视化source的新鲜度都是必不可少的。
生成并访问构件
每次调用dbt时,它都会生成构件。例如,当你运行:
shell
dbt run
DBT将在DBT项目的target/
目录中生成构件。你可以直接访问这些JSON文件,并利用dbt的内置文档站点等工具可视化其内容。
dbt artifacts 包实际应用
brooklyn-data提供的dbt_artifacts是非常强大的工具,可以对dbt项目及其运行的元数据进行建模。目前该包支持下面几种数仓:
- Databricks ✅
- Spark ✅
- Snowflake ✅
- Google BigQuery ✅
- Postgres ✅
- SQL Server ✅
生成模型包括:
-
dim_dbt__current_models
-
dim_dbt__exposures
-
dim_dbt__models
-
dim_dbt__seeds
-
dim_dbt__snapshots
-
dim_dbt__sources
-
dim_dbt__tests
-
fct_dbt__invocations
-
fct_dbt__model_executions
-
fct_dbt__seed_executions
-
fct_dbt__snapshot_executions
-
fct_dbt__test_executions
-
安装依赖
packages:
- package: brooklyn-data/dbt_artifacts
version: 2.7.0
执行 dbt deps
命令安装依赖。
- 配置
在dbt_project.yml
中指定数据上传位置:
yaml
models:
dbt_artifacts:
+database: your_destination_database
+schema: your_destination_schema
我们还可以分类设置:
yml
models:
...
dbt_artifacts:
+database: your_destination_database # optional, default is your target database
+schema: your_destination_schema # optional, default is your target schema
staging:
+database: your_destination_database # optional, default is your target database
+schema: your_destination_schema # optional, default is your target schema
sources:
+database: your_sources_database # optional, default is your target database
+schema: your sources_database # optional, default is your target schema
- 增加
run-end hook
yml
on-run-end:
- "{{ dbt_artifacts.upload_results(results) }}"
建议增加条件,保证仅在生产环境启用:
yml
on-run-end:
- "{% if target.name == 'prod' %}{{ dbt_artifacts.upload_results(results) }}{% endif %}"
- 运行
设置完成后,可以直接运行。
dbt run --select dbt_artifacts
总结
DBT 构件是一项极为强大的特性,它能够让我们对 DBT 项目及运行请看有更深理解。如果我们能够有效地理解并利用这些构件,就可以对数据转换流程进行优化,从而确保数据的可靠性。期待您的真诚反馈,更多内容请阅读数据分析工程专栏。