我已经使用stored procedure
方法很长时间了。
作为销售报告生成的一部分,我在数据库中创建了stored procedures
到join/union all
多个表,并在需要时使用python
调用它。
现在DBT
是一个热门话题。
从stored procedures
迁移到DBT
的优势是什么?是否有任何点迁移我的整个stored procedure
堆栈从存储过程到DBT
?
dbt的一些主要优点是:
- 集成版本控制(如git)
- 支持多种环境(dev和prod)
- 依赖管理和构建
- 使用简单的选择语法轻松地重建模型的子集 自动化测试
- 金贾的模板
- 可重用的,复杂的逻辑,如增量物化和快照
- 自动生成文档网站
更多信息在他们的文档和营销材料在他们的网站,getdbt.com
正如您所指出的,dbt在功能上类似于存储过程,只是有一些额外的东西。
为了拥有dbt、源代码控制等提供的功能,dbt存在于数据库之外。虽然您可能获得dbt的特性,但您也将失去存储过程的功能,例如,使用临时表、变量或创建参数化查询的能力。
您还将受到dbt使用视图来执行和管理查询的约束。这限制了数据库允许在视图中使用的语言特性,并且与使用过程相比,您没有那么多的选项来提高查询性能。
请记住,dbt中的一些功能在许多主要db中都可用:
- 依赖管理-大多数数据库都有系统表,可以告诉您一个数据库对象如何引用另一个数据库对象。这些可以通过一种显示向前和向后依赖关系的方式进行查询。
- 模板SQL -动态SQL。
- 可重用逻辑-函数和视图。
- 测试—这可以通过存储过程实现。sql server的tSQLt框架就是一个很好的例子。dbt中的测试是由dbt运行的查询。