Presto,如何根据时间有效性间隔复制记录

Presto, how to duplicate a record based on a time validity interval

我正在尝试快速进行以下转换:

发件人:

id | valid_from | valid_unitl | value
12 | 2021/02/17 | 2021/05/17  | 150     

收件人:

id | date       | value
12 | 2021/02/17 | 150    
12 | 2021/03/17 | 150    
12 | 2021/04/17 | 150
12 | 2021/05/17 | 150     

可能吗?

谢谢,

您可以使用 sequence 函数在 valid_fromvalid_until 之间生成一个包含所需步骤的数组,然后 unnest 它:

select id, format_datetime(date,'yyyy/MM/dd') as date, value 
from my_table 
cross join unnest(sequence(parse_datetime(valid_from,'yyyy/MM/dd'),
                           parse_datetime(valid_until,'yyyy/MM/dd'),
                           interval '1' month)) t(date)

请参阅 sequence 函数的文档:https://prestodb.io/docs/current/functions/array.html