amazon-redshift - generate_series()方法在Redshift中失败

标签 amazon-redshift generate-series

当我运行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/

相关文章:

sql - 与前 24 小时的计数日差

SQL - Redshift 删除没有主键的重复行

sql - Redshift 的时差

sql - 如何将列添加到 generate_series 查询

sql - 按范围聚合值

sql - 向 Redshift 表添加 NOT NULL 列

database - 优化 Redshift 查询的大 IN 条件

sql - 使用 generate_series 在 PostgreSQL9.5 中对时间序列进行分箱?

sql - 如何创建一个有效的查询来按特定时间间隔计算记录?

sql - 如何在 Postgres 中获取过去 12 周的发票数量