我一直在研究dbt,以了解我能做什么&做不到。
为了提供一点上下文,我目前让Azure Data Factory将数据库的副本加载到Snowflake中,并考虑将历史记录构建为每个表的副本,其中包含时间戳和行哈希,然后从头构建数据仓库和模型。
我目前正在考虑是使用数据库还是数据工厂来创建历史记录,以及数据库是否最适合创建Vault。我目前有一个数据工厂管道来创建代表源的表,并将它们放在Snowflake中。将其扩展为创建历史记录表并在Snowflake中运行动态存储过程以使用Merge语句或在Snowf薄片中实现流(CDC(来填充历史记录将非常简单。
我的理解是,dbt应该为每个模型使用SELECT语句,因此每个表都需要一个模型,并且需要是增量的,这与我想要的不符,因为会有很多代码重复。然而,我喜欢文档&DAG可视化。
我的问题是:;
-
是否可以读取Information_Schema来动态定义模型的.yml文件中的源?(即,从Information_Schema中获取表/列的列表(。
-
dbt具有";run_query"我可以用于Merge语句或基于CDC的Insert/Update/Delete,我可以在引用宏的模型中使用它来为架构中的每个项执行操作吗?这也会在自动文档中显示出来吗?
-
有人看过Azure DevOps for dbt的CI/CD指南吗?
如有任何建议/意见,我们将不胜感激。
谢谢,Dan
我有一个活跃的问题,它与您的观点1半相关,因为我认为在编译步骤中应该有一种基于manifest&catalog,它不需要在多数据库实例中查询多个schemata。
此外,我建议研究dbt助手项目的bootstrap
函数,它看起来符合您的用例:
创建启动器"schema.yml";项目的文件。此函数有助于为您生成样板dbt模型文件,因此在开发新模型时不必进行复制/粘贴。
我真的不确定你对第2点的目标是什么,所以我现在把这个放在一边。一般来说,你可以用宏做很多不严格建模的事情。
最后,这两篇文章(一、二(似乎有一些相关的材料给你?
不过,总的来说,我预计最常见的编排路径将是本文中的气流,但不幸的是,Azure尚未表明它将拥有与AWS的MWAA或GCP的Cloud Composer相当的产品。