Redshift - SELECT 表达式有效,但与 table 值比较时该表达式不可用

Redshift - SELECT expression works, but that expression is not usable when comparing with table value

我在 Redshift 上选择一个值来获取有效值(现在 7 天前的时间戳):

SELECT cast(extract (epoch from (NOW() - INTERVAL '7 days') ) as integer) ;

1651401212

但是,我试图在查询中使用它但失败了:

SELECT  * from mytable where my_epoch_timestamp > cast(extract (epoch from (NOW() - INTERVAL '7 days') ) as integer)  ;

ERROR: Specified types or functions (one per INFO message) not supported on Redshift tables. 

my_epoch_timestamp column 是整数类型,因此在右侧强制转换。 单独选择的类型是整数,因此应该是可比较的。我在这里遇到了某种限制吗?

注意:我可以看到类似的方法在 PostgresQL 中有效

旁注:我发现首先预先计算值本身可能会更好,以便将其作为固定值在此处使用,但不确定引擎是否应该这样做。这可能是这里的问题所在吗?

哦,“错误:Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。”错误。这一定是现存最糟糕的书面错误消息之一。此错误意味着查询试图将数据从领导节点移动到计算节点,这是一条不受支持的路径。它可以通过多种方式出现,但在您的情况下是 NOW() 函数。 NOW() 是一个领导者,因为它 returns 交易开始的时间(如果内存服务正确)保存在领导者节点上。 GETDATE() 提供查询运行的时间并在计算节点上可用。如果这种细微的含义差异对您的过程并不重要(通常情况下并不重要),只需将 NOW() 替换为 GETDATE() 即可。