snowflake-cloud-data-platform - 使用 dbt 的物化 View 与表

标签 snowflake-cloud-data-platform dbt

我刚刚开始使用 dbt 并浏览了教程文档,我想知道将我的转换具体化为 View 或表之间是否有区别?我使用 Snowflake 作为数据仓库。有一些文档 here 显示了表和物化 View 之间的差异,但是如果我使用 dbt 定期更新表,它们或多或少会变得相同吗?
谢谢!

最佳答案

dbt 不支持物化 View ,据我所知,但正如 Felipe 评论的那样,有一个 open issue to discuss it 。如果可以在 Snowflake 上使用物化 View ,那么它们在某种程度上变得相同是对的。即使您没有运行 dbt,物化 View 也会更新。不过,正如 Drew 在票证中提到的,在大多数用例中,有很多警告使使用带有 dbt 的表更可取:“没有窗口函数、没有联合、有限的聚合、无法查询 View 等”。
也就是说,dbt 确实支持 View 和表。
即使您使用 dbt, View 和表之间仍然存在差异。表总是需要由 dbt 刷新才能更新。 View 将始终与其引用的基础表一样最新。
例如,假设您有一个名为 fct_orders 的 dbt 模型,它引用了一个由 Fivetran/Stitch 加载的名为 shopify.order 的表。如果您的模型具体化为 View ,它将始终返回 Shopify 表中的最新数据。如果它被具体化为一个表,并且自您上次运行 dbt 以来新数据已经到达 Shopify 表,则该模型将是“过时的”。
也就是说,将它具体化为表的好处是它会运行得更快,因为它不必每次都进行 SQL“转换”。
我最常看到的建议是这样的:

  • 如果使用 View 对您的最终用户来说不是太慢,请使用 View 。
  • 如果 View 对您的最终用户来说太慢,请使用表。
  • 如果用 dbt 建表太慢,请在 dbt 中使用增量模型。
  • 关于snowflake-cloud-data-platform - 使用 dbt 的物化 View 与表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64489772/

    相关文章:

    database - 雪花组织帐号

    azure - Snowflake Azure 存储集成未获得授权

    google-bigquery - Bigquery dbt_external_tables 外部数据配置

    sql - 如何通过 `meta` 字段选择 dbt 型号?

    dbt - 如何使用 yaml 选择器?

    sql - 计算雪花中的警报洪水

    sql - 将小数分钟转换为 分钟 :Seconds?

    sql - 雪花限定查询错误 'Invalid data type [NUMBER(18,0)] for predicate [RANK()'

    dbt - 为什么 DBT 运行的模型没有在 DBT 运行语句中明确定位?

    snowflake-cloud-data-platform - 如何设置开发人员以在雪花(和 dbt)上生产工作流程?