雪花流数据保留
Snowflake Stream data retaining
我在 table 上在 Snowflake 中创建了一个 Stream,并创建了一个将数据移动到 table 的任务。即使在任务完成后,流中的数据也不会被清除。因此,任务不会被跳过并继续将数据从流重新插入到 table 并且最终的 table 继续增长。可能是什么原因?它昨天工作,但从今天开始,即使在使用任务使用该流执行 DML 后,该流也不会被清除。
create or replace stream test_stream on table test_table_raw APPEND_ONLY = TRUE;
create or replace task test_task_task warehouse = test_warehouse
schedule = '1 minute'
when system$stream_has_data('test_stream')
as insert into test_table
SELECT
level1.FILE_NAME,
level1.FILE_ROWNUMBER,
GET(lvl, '@id')::string as app_id
FROM (SELECT FILE_NAME,FILE_ROWNUMBER,src:"$" as lvl FROM test_table_raw) level1,
lateral FLATTEN(LVL:"$") level2
where level2.value like '%<test %';
alter task test_task resume;
select
(select count(*) from test_table) table_count,
(select count(*) from test_stream) stream_count;
TABLE_COUNT STREAM_COUNT
500 1
您似乎没有在 DML 操作中使用流。您正在从构建流的 table 插入行,而不是流本身。为了推进流,您需要将 "FROM test_table_raw" 更改为 "FROM test_stream"。试试看,然后告诉我。
谢谢。
我在 table 上在 Snowflake 中创建了一个 Stream,并创建了一个将数据移动到 table 的任务。即使在任务完成后,流中的数据也不会被清除。因此,任务不会被跳过并继续将数据从流重新插入到 table 并且最终的 table 继续增长。可能是什么原因?它昨天工作,但从今天开始,即使在使用任务使用该流执行 DML 后,该流也不会被清除。
create or replace stream test_stream on table test_table_raw APPEND_ONLY = TRUE;
create or replace task test_task_task warehouse = test_warehouse
schedule = '1 minute'
when system$stream_has_data('test_stream')
as insert into test_table
SELECT
level1.FILE_NAME,
level1.FILE_ROWNUMBER,
GET(lvl, '@id')::string as app_id
FROM (SELECT FILE_NAME,FILE_ROWNUMBER,src:"$" as lvl FROM test_table_raw) level1,
lateral FLATTEN(LVL:"$") level2
where level2.value like '%<test %';
alter task test_task resume;
select
(select count(*) from test_table) table_count,
(select count(*) from test_stream) stream_count;
TABLE_COUNT STREAM_COUNT
500 1
您似乎没有在 DML 操作中使用流。您正在从构建流的 table 插入行,而不是流本身。为了推进流,您需要将 "FROM test_table_raw" 更改为 "FROM test_stream"。试试看,然后告诉我。
谢谢。