无法在 redshift 中使用随机数据创建临时表?

问题描述 投票:0回答:1

我正在尝试创建一个简单的日期和随机数临时表。

这有效:

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 消息一个)。

谷歌搜索告诉我问题是由于函数位于不同的节点上造成的,这不是我以前处理过的问题。谁能告诉我是否有简单的解决方法?

postgresql amazon-redshift
1个回答
0
投票

正如其他人所指出的那样,generate_series() 是 Redshift 上的仅领导者函数,不能(轻松)用于在计算节点上填充数据。在 Redshift 上,您将需要使用递归 CTE 来生成一系列日期。

这个问题在 SO 上出现很多,所以这里有一个以前答案的链接 - 日期小时分钟表

有关执行此操作的 AWS 文档位于 - https://docs.aws.amazon.com/redshift/latest/dg/r_WITH_clause.html

如果这还不够清楚或者您需要进一步帮助,请发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.