编写查询时如何在雪花的where子句中传递日期范围

时间:2020-07-17 15:28:00

标签: snowflake-cloud-data-platform snowflake-schema snowflake-task snowflake-stream

在编写查询时如何在雪花的where子句中传递日期范围,并在下一次运行时避免重复。我在下面的查询中,我必须每天获取前15天的数据。数据将从下面给出的查询传递到我的最终表中。我的最终数据不应在给定的所有列中都有重复的行。

数据如下所示:

{ “ location”:“ xyz”, “指标”:[ { “ name”:“ traffic_in”, “数据”:[ { “组”:{ “开始”:“ 2020-07-05”, “ type”:“日期” }, “索引”:0, “下一级”: [ {“索引”:0, “有效性”:“完整”, “值”:1, “组”:{ “完成”:“ 00:15”, “开始”:“ 00:00”, “ type”:“时间” } } ] } ], } ], }

以下是需要根据要求进行修改的查询:

create or replace TABLE TMP_RN_TC as
(select * from(
               select distinct
                   replace(D_NEXT : location , '"' , '')as  rn_loc_id,
                   mtr.value:name::VARCHAR as  metrics_name,
                   dta.value:group.start::DATE as metrics_event_date,
                   dta.value:index::numeric as metrics_date_index,
                   nxt.value:validity::VARCHAR as metrics_data_validity,
                   nxt.value:value::numeric as metrics_data_value,
                   nxt.value:group.start::time as metrics_data_start_tms,
                   nxt.value:index::numeric as metrics_time_index
           from STG_RN_TC stg,
           lateral flatten(input => stg.D_NEXT:metrics) mtr,
           lateral flatten(input => mtr.value:data) dta,
           lateral flatten(input => dta.value:next_level)nxt)
 ) ;

1 个答案:

答案 0 :(得分:0)

通常的方法是在具有额外的timestamp列的暂存表中暂存数据,然后再使用该timestamp列将数据加载到最终表中。 还有其他一些用于更改数据捕获和表行版本控制的高级方法,您可以根据用例进行探索和实现,这里是链接

https://docs.snowflake.com/en/user-guide/streams.html