【问题标题】:Populating fact table with different sequence time用不同的序列时间填充事实表
【发布时间】:2019-11-06 15:54:31
【问题描述】:

我正在使用以下查询来填充我的事实表:

Select sh.isbn_l,sh.id_c,sh.id_s, sh.data,sh.quantity, b.price
 from Book as b
inner join Sales as sh
on l.isbn=sh.isbn_l

主要是我想将表格从特定时间加载到特定时间。所以如果我今天加载,我会得到从今天到最后一次加载的所有记录。

如果我后天加载它,我会在加载时间之后获取今天的数据,直到后天。

我的意思是没有重复的行或数据。我该怎么办 ? 有什么想法吗?

提前谢谢你

【问题讨论】:

  • 我从未使用过雪花,但我认为它就像所有其他专业数据仓库数据库一样,没有任何魔法可以为您做到这一点。您需要创建一个控制表来记住您上次加载的时间。话虽如此,您的数据中似乎没有任何列表明这一点。
  • 好吧,Snowflake 确实在这里有一些魔力,可以提供帮助:docs.snowflake.net/manuals/user-guide/streams.html:D

标签: sql snowflake-cloud-data-platform data-warehouse snowflake-schema sql-data-warehouse


【解决方案1】:

Streams(也许还有 Tasks)是你的朋友。

Snowflake Stream 记录表(例如临时表)的更改数据捕获 (CDC) 信息的增量,包括插入和其他 DML 更改。流允许在两个事务时间点之间在行级别查询和使用对表的一组更改。

在连续数据管道中,表流记录何时暂存表和任何下游表使用来自使用连续数据加载的业务应用程序的数据填充,并准备好使用 SQL 语句进行进一步处理。

Snowflake 任务可以选择使用表流来提供一种方便的方式来持续处理新的或更改的数据。任务可以转换流呈现的新行或更改的行。每次安排任务运行时,它都可以验证流是否包含表的更改数据(使用SYSTEM$STREAM_HAS_DATA),并使用更改数据或如果不存在更改数据则跳过当前运行。

用户可以定义一个简单的树状任务结构,执行连续的 SQL 语句来处理数据并将其移动到各种目标表。

https://docs.snowflake.com/en/user-guide/data-pipelines-intro.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多