DBT hook 实战教程

本文将介绍dbt中在模型和seed级别使用post-hook的几个具体示例。dbt中的Post-hooks是一个强大而简单的特性,它在构建模型之后(如果是pre-hook,甚至在此之前)执行SQL语句。这些语句实际上(几乎)可以是任何东西,从将表复制到另一个数据库/模式,或限制记录的数量,或重新格式化seed。我们将讨论的示例是指DuckDB,但是也可以适用于其他数据库。

认识 dbt hook

将原始数据转换为可供下游消费者使用的模型,直接使用SQL非常实用,但dbt默认不支持,仅支持SELECT 语句。如果遇到下列场景,我们可能需要SQL实现:

  • 管理计算层的大小或容量
  • 应用屏蔽策略或访问策略
  • 管理数据库参数

dbt hook可以实现这些特殊任务。与dbt项目中的许多资源不同,钩子可以使用简单的SELECT语句之外的SQL命令,这打开了充满可能性的新世界。dbt hook 主要分为:

  • On-run-start/end: 用于在执行某些dbt命令之前/之后运行SQL查询

在下列命令的开始或结束处运行SQL语句(或SQL语句列表): dbt build, dbt compile, dbt docs generate, dbt run, dbt seed, dbt snapshot, dbt test`. on-run-start和on-run-end hook也可以宏。语法如下:

-- dbt_project.yml
on-run-start: sql-statement | [sql-statement]
on-run-end: sql-statement | [sql-statement]
  • Pre-/post-hooks: 用于在执行某些dbt节点之前/之后运行SQL查询

在model, seed, snapshot 被构建之前/后运行SQL语句(或SQL语句列表), Pre-/post-hooks子也可以调用宏。dbt旨在通过开箱即用的功能提供SQL模版代码 (DDL、DML和DCL),从而快速而简洁地配置模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值