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_from
和 valid_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
我正在尝试快速进行以下转换:
发件人:
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_from
和 valid_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