当我运行SQL查询时:
select generate_series(0,g)
from ( select date(date1) - date(date2) as g from mytable ;
它返回一个错误:
INFO: Function "generate_series(integer,integer)" not supported.
ERROR: Specified types or functions (one per INFO message) not supported
on Redshift tables.
但是当我运行此查询时:
select generate_series(0, g) from (select 5 as g)
它返回以下响应:
generate_series
-----------------
0
1
2
3
4
5
(6 rows)
为什么第二个查询有效,而第一个查询却失败?
最佳答案
Redshift不完全支持generate_series()
函数。请参阅开发人员指南的Unsupported PostgreSQL functions部分:
在特定示例中,第二个查询完全在领导者节点上执行,因为它不需要扫描任何实际的表数据,而第一个查询正在尝试选择数据,因此将在计算节点上执行。
更新:
generate_series现在正在与Redshift一起使用。
SELECT CURRENT_DATE::TIMESTAMP - (i * interval '1 day') as date_datetime
FROM generate_series(1,31) i
ORDER BY 1
这将生成最近30天的日期
关于amazon-redshift - generate_series()方法在Redshift中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22759980/