从我们仓库中其他 Snowflake DB 派生的数据中使自定义表保持最新的最佳实践

Posted

技术标签:

【中文标题】从我们仓库中其他 Snowflake DB 派生的数据中使自定义表保持最新的最佳实践【英文标题】:Best practices for keeping a custom table up-to-date from data derived from other Snowflake DB's in our warehouse 【发布时间】:2019-10-15 14:34:16 【问题描述】:

(代表雪花用户提交)


我们有一个数据库,用于存储来自所有本地来源的原始数据。我的团队拥有自己的环境,在其中我们拥有创建可通过 Power BI 使用的标准化提要和/或表/视图等的完全权限。一些额外的细节:

最终的“提要”表是通过 SQL 语句派生的,并且大多数都从我们的多个“原始”数据表中提取。 原始表数据每天更新。

我的问题是保持表格完全更新的最佳操作是什么?此操作的标准工作流程是什么?我们目前的理解是以下过程之一是最好的:

    使用COPY INTO <stage> 然后COPY INTO <table>。 使用STREAMS 添加增量数据。 使用PIPES(可能与STREAMS相同) 或者将我们的提要简化为一个表源并使用物化视图。

理想情况下,我们希望避免视图以提高功率双级的消耗速度。


Tasks 被推荐,因为它看起来很合适,因为他们每天只需要更新一次决赛桌。 (https://docs.snowflake.net/manuals/sql-reference/sql/create-task.html)

还有什么推荐???谢谢!

【问题讨论】:

【参考方案1】:

我们有一个类似的场景,我们从 S3 中的文件实时更新原始数据湖表。这些原始表是使用自动摄取功能通过雪管加载的。

反过来,我们有一个数据集市,其中包含有关原始数据的事实。为了更新数据集市,我们在原始表之上创建了流来跟踪更改。然后,我们使用以给定频率(在我们的例子中每五分钟一次)运行的任务来根据原始表中更改的数据更新数据集市。使用流允许我们将处理限制为仅更改数据,而无需跟踪上次更新日期等。

【讨论】:

以上是关于从我们仓库中其他 Snowflake DB 派生的数据中使自定义表保持最新的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake数据仓库中如何使用内联文件格式从stage中查询数据

Snowflake 数据仓库中的模式版本控制

从 ADF 连接到 Snowflake 的白名单 IP 范围

从 AWS S3 复制到 <Snowflake table>

是否仅支持同一 Snowflake 区域中的帐户之间的数据共享?

如何从 Snowflake Stage 加载大型 JSON 文件?