Snowflake cloud data platform 在没有DML的情况下,如何推进雪花流的偏移?
雪花流确实很酷,但我似乎不知道如何将它们应用到我的用例中。我有一个外部进程,我想用它来检测表中行的更改,并通知其他使用者发生了这种情况。有几种方法可以做到这一点,但流的好处是它们可以跟踪上次被询问的时间,这将提供一种干净的方法来跟踪偏移量并防止重复或间隙。例如,使用显式时间旅行的替代方案需要从外部跟踪上次运行查询的时间,包括考虑雪花和进程之间的时钟偏差 但是,只有将偏移量中的数据推送到另一个表中时,偏移量才会向上移动。也就是说,这会更改偏移量:Snowflake cloud data platform 在没有DML的情况下,如何推进雪花流的偏移?,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,雪花流确实很酷,但我似乎不知道如何将它们应用到我的用例中。我有一个外部进程,我想用它来检测表中行的更改,并通知其他使用者发生了这种情况。有几种方法可以做到这一点,但流的好处是它们可以跟踪上次被询问的时间,这将提供一种干净的方法来跟踪偏移量并防止重复或间隙。例如,使用显式时间旅行的替代方案需要从外部跟踪上次运行查询的时间,包括考虑雪花和进程之间的时钟偏差 但是,只有将偏移量中的数据推送到另一个表中时,偏移量才会向上移动。也就是说,这会更改偏移量: insert to other_table从我的_
insert to other_table从我的_流中选择*
但这并不是:
从我的\u流中选择*
在我的例子中,我不需要另一个表中的数据。我可以插入一个临时表或其他东西来产生推进偏移量的副作用,但这似乎是浪费和混乱的。我有没有别的选择?“bump”流的某种方式?您可以使用where子句,该子句不选择任何行。它仍将消耗该流
insert into other_table select * from my_stream where false;
create or replace stream my_stream on table my_table;
如果您不打算使用流中的行,只要使用它来检测从上次消费点起的变化时,您还可以考虑替换流。
insert into other_table select * from my_stream where false;
create or replace stream my_stream on table my_table;
这将允许您检查旧流上的更改,并在旧流报告更改行时执行所需操作时从新流开始