在redshif中创建动态数字序列视图

w6mmgewl  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(301)

实际上我想取消一个保存在redshift列中的json数组,为此我想生成动态数字序列视图。
我可以使用 SELECT MAX(JSON_ARRAY_LENGTH(metadata)) FROM input_table 然后我想创建一个如下的视图

CREATE VIEW seq_0_to_3 AS
SELECT 0 AS i UNION ALL                                      
SELECT 1 UNION ALL
SELECT 2 UNION ALL
............
SELECT max_size_of_json_arrays
)

添加新数据时,最大json数组大小会有所不同,那么如何为“n”行数创建动态视图呢

cgfeq70w

cgfeq70w1#

如果表中有足够的行,可以使用:

select seqnum
from (select max(json_array_length(metadata)) over () as max_row,
             row_number() over () as seqnum
      from input_table
     ) i
where seqnum <= max_row;

请注意,如果表的大小远远大于预期的最大值,则可能需要限制行数:

select seqnum
from (select max(json_array_length(metadata)) over () as max_row,
             row_number() over () as seqnum
      from (select i.* from input_table limit 1000) i
     ) i
where seqnum <= max_row;

或者,如果你有一个理货或日历表,可以用它来代替。

相关问题