查询字符串列的 Redshift Spectrum 数组

Posted

技术标签:

【中文标题】查询字符串列的 Redshift Spectrum 数组【英文标题】:Querying Redshift Spectrum array of string columns 【发布时间】:2020-10-07 00:27:02 【问题描述】:

我的 redshift 集群中有一个外部 (s3) 表,其中包含一个字符串列数组。它实际上只是一个字符串列表。我可以查询并且只选择数组列,不用担心。我可以查询所有 3 个数组列,不用担心,但只要我尝试查询不是数组的其他列,我就会得到以下信息:

错误:频谱扫描错误

我在其他一些堆栈溢出问题中看到了以下方法

select id_col, b
from test.test_table as a, a.array_col as b 

但是当我运行上面的代码时,我得到:array_col 上的导航是不允许的,因为它不是结构/元组类型

当然,此错误消息是有道理的,因为它不是结构或元组类型,但我不知道到底如何查询一个简单的字符串数组,但没有找到有关如何执行此操作的文档。任何帮助或建议将不胜感激!

【问题讨论】:

【参考方案1】:

由于您重命名了外部表,因此您必须为要检索的所有字段使用该名称;以与数组列相同的方式。您的查询将是:

select a.id_col, b
from test.test_table as a, a.array_col as b 

【讨论】:

以上是关于查询字符串列的 Redshift Spectrum 数组的主要内容,如果未能解决你的问题,请参考以下文章

Redshift Spectrum 为查询扫描的数据大小

洞察 Redshift Spectrum 查询错误

在 Redshift Spectrum 中选择带有连字符的字段

Redshift Spectrum 性能对比 Athena

如何使用 AWS RedShift Spectrum 为 S3 存储建模以进行查询

Redshift Spectrum 比 Athena 慢很多?