当我运行 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)
为什么第二个查询有效,而第一个查询失败?
The generate_series()
Redshift 不完全支持该功能。请参阅不支持的 PostgreSQL 函数 http://awsdocs.s3.amazonaws.com/redshift/latest/redshift-dg.pdf开发者指南部分:
在具体示例中,第二个查询完全在领导节点上执行,因为它不需要扫描任何实际的表数据,而第一个查询则尝试选择数据,因此将在计算节点上执行。
UPDATE:
generate_series 现在正在与 Redshift 合作。
SELECT CURRENT_DATE::TIMESTAMP - (i * interval '1 day') as date_datetime
FROM generate_series(1,31) i
ORDER BY 1
这将生成最近 30 天的日期
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)