【发布时间】:2020-09-03 21:44:58
【问题描述】:
我通过 kafka 将数据写入 AWS S3,因此可以多次写入消息。我正在使用 Spectrum Redshift 来查询它。
由于数据是嵌套的,我遇到了documentation 中解释的一些限制,但我似乎无法找到消除重复数据的方法。
我首先尝试了以下方法来使用 group by 删除重复项,然后进行我通常的聚合
with rid_of_duplicates as (
select table.field_1, table.struct_1.field_2, table.struct_1.field_3
from table
group by 1,2,3
)
select field_1 || field_2, count(field_3)
from rid_of_duplicates
group by field_1, field_2
但我收到以下错误
错误:频谱嵌套查询错误详情:---------------------------------------- -------- 错误:频谱嵌套查询错误代码:8001 上下文:聚合子查询的FROM 子句中的项目必须引用更高级别的FROM 子句的嵌套表。查询:0 位置:nested_query_rewriter.cpp:814 进程:padbmaster [pid=6630] ----------
如果我去掉子查询中的GROUP BY,查询可以正常工作,但它的输出是错误的。
阅读docs,似乎我不应该在子查询中选择特定字段。但是由于我使用的是嵌套数据,所以我不能使用SELECT *。
我也尝试过创建一个没有模式绑定的视图,但同样失败了。 SELECT Distinct 也不行
如果可能,我不想为此创建一个表,因为数据存储在 S3 中。此外,由于业务逻辑,count(distinct field_3) 不起作用
【问题讨论】:
标签: amazon-redshift amazon-redshift-spectrum