0

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

数据如下所示:

{“位置”:“xyz”,“指标”:[{“名称”:“traffic_in”,“数据”:[{“组”:{“开始”:“2020-07-05”,“类型”: “日期”},“索引”:0,“下一个级别”:[ {“索引”:0,“有效性”:“完成”,“值”:1,“组”:{“完成”:“00:15 ", "开始": "00:00", "类型": "时间" } } ] } ], } ], }

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

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)
 ) ;
4

1 回答 1

0

通常的方法是将数据暂存到带有附加时间戳列的临时表中,然后使用该时间戳列将数据加载到最终表中。还有其他可用于更改数据捕获和表行版本控制的高级方法,您可以根据您的用例探索和实施这里是链接

https://docs.snowflake.com/en/user-guide/streams.html
于 2020-07-17T16:49:29.073 回答