我正在尝试创建一个简单的日期和随机数临时表。
这有效:
select * from
(select now()::date - generate_series(0, 29) as date,
CAST(RANDOM() * 10 AS INT) as nmb) a;
...但由于某种原因,这并没有:
create temp table nmbr_dates as
(select GETDATE() - generate_series(0, 29) as date,
CAST(RANDOM() * 10 AS INT) as nmb);
它返回以下错误: [0A000] 错误:Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。
谷歌搜索告诉我问题是由于函数位于不同的节点上造成的,这不是我以前处理过的问题。谁能告诉我是否有简单的解决方法?
正如其他人所指出的那样,generate_series() 是 Redshift 上的仅领导者函数,不能(轻松)用于在计算节点上填充数据。在 Redshift 上,您将需要使用递归 CTE 来生成一系列日期。
这个问题在 SO 上出现很多,所以这里有一个以前答案的链接 - 日期小时分钟表
有关执行此操作的 AWS 文档位于 - https://docs.aws.amazon.com/redshift/latest/dg/r_WITH_clause.html
如果这还不够清楚或者您需要进一步帮助,请发表评论。