如何在AWS Redshift中将物化视图JSON数据从Initial表复制到另一个表Columns



我有一个Kinesis流,它以JSON格式将原始数据转储到红移中。以下是初始数据结构和示例。

ApproximateArrivalTimestamp   |     data
--------------------------------------------------------------------------------------
2022-08-04 10:18:21.075       |     {"A" : "value of A" , "B" : "Value of B" , "C" : { "D" : "Value of D"}}

我的要求是定期处理传入的数据,并利用调度器将这些JSON数据放入另一个由列分隔的表中。

目标表

ApproximateArrivalTimestamp  |      A          |    B           |       D
--------------------------------------------------------------------------------
2022-08-04 10:18:21.075      |   value of A    |   value of B   |    value of D  

这里有两个问题,

  1. 有没有办法只从物化视图中选择最新的行,所以只选择之前没有处理的行?我可以使用ApproximateArrivalTimestamp,但有更好的方法吗
  2. Redshift是否有任何函数可以像从s3复制数据一样使用jsonpath来批量处理记录,或者我是否必须使用json_extract_path_text函数创建一个存储过程来从循环中的每一行提取数据

任何基于上述表格的帮助或示例查询都将不胜感激。

提前感谢您的帮助!

对于#1,时间戳是一种常见的方法。确切的答案取决于您的数据解决方案。重新处理一行会导致错误还是效率低下?Etc

对于#2,我假设json键与目标表中已经建立的列相匹配。循环不是考虑SQL处理的好方法,相反,将json与目标表列的列表结合起来会提取出您想要的数据。