Snowflake cloud data platform 使用dbt的物化视图与表

Snowflake cloud data platform 使用dbt的物化视图与表,snowflake-cloud-data-platform,dbt,Snowflake Cloud Data Platform,Dbt,我刚刚开始使用dbt,在阅读了教程文档之后,我想知道将转换具体化为视图或表是否有区别?我使用雪花作为数据仓库。有一些文档显示了表和物化视图之间的区别,但是如果我使用dbt定期更新表,它们或多或少会变成相同的东西吗 谢谢 据我所知,dbt不支持物化视图,但正如Felipe所评论的,有一个。如果可以在Snowflake上使用物化视图,那么它们在某种程度上是相同的,这是对的。即使没有运行dbt,物化视图也会更新。但是,正如Drew在报告中提到的,在大多数用例中,使用带有dbt的表有很多警告:“没有窗口

我刚刚开始使用dbt,在阅读了教程文档之后,我想知道将转换具体化为视图或表是否有区别?我使用雪花作为数据仓库。有一些文档显示了表和物化视图之间的区别,但是如果我使用dbt定期更新表,它们或多或少会变成相同的东西吗


谢谢

据我所知,dbt不支持物化视图,但正如Felipe所评论的,有一个。如果可以在Snowflake上使用物化视图,那么它们在某种程度上是相同的,这是对的。即使没有运行dbt,物化视图也会更新。但是,正如Drew在报告中提到的,在大多数用例中,使用带有dbt的表有很多警告:“没有窗口函数,没有联合,有限的聚合,不能查询视图,等等”

也就是说,dbt确实支持视图和表

即使使用dbt,视图和表之间仍然存在差异。表总是需要dbt刷新才能更新。视图将始终与其引用的基础表一样是最新的

例如,假设您有一个名为
fct_orders
的dbt模型,它引用了Fivetran/Stitch加载的名为
shopify.order
的表。如果您的模型具体化为视图,它将始终返回Shopify表中最新的数据。如果它被具体化为一个表,并且自上次运行dbt以来,新数据已经到达Shopify表中,那么该模型将“过时”

也就是说,将其具体化为表的好处是,它将运行得更快,因为它不必每次都进行SQL“转换”

我经常看到的建议是这样的:

  • 如果使用视图对最终用户来说不是太慢,请使用视图
  • 如果视图对最终用户来说太慢,请使用表
  • 如果使用dbt构建表太慢,请在dbt中使用增量模型

您是指dbt中的物化参数吗?或者snowflake中的物化视图?dbt物化视图打开请求:@dylanbaker如果dbt确实支持物化视图(我认为他们现在支持Felipe的评论),那么通过dbt物化为表或视图有什么区别吗?我假设,由于视图是在物化时缓存的,因此没有任何实质性差异?请注意,dbt不支持物化视图(但人们在gh问题上要求它)@KyleCheung刚刚更新了答案。简言之,是的,它们有些相似,但在我看来,物化视图的缺点可能仍然使使用dbt的表更好。