【发布时间】:2021-12-30 15:05:31
【问题描述】:
我有一个嵌套的 json 数据结构,如下所示,最终目标是在 Quicksight 中显示来自 Athena 的数据。经过研究,我发现 Quicksight 无法显示/处理视觉对象的“ARRAY”数据类型。
CREATE EXTERNAL TABLE `testfindings`( `
`source` string COMMENT 'from deserializer',
`account` string COMMENT 'from deserializer',
`detail` struct<findings:array<struct<productarn:string,
resources:array<struct<partition:string,type:string,region:string,id:string>>>>> COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
在 Athena 中编写 UNNEST 查询以提取 id 后,当我尝试在 quicksight 中创建数据集时从资源数组中键入,我无法找到“ARRAY”数据只有“源”,“帐户”数据显示在快速浏览。
在做了一些研究后,我发现 quicksight 不支持“ARRAY”数据,所以我更改了我的表架构如下:
CREATE EXTERNAL TABLE `testfindings`( `
`source` string COMMENT 'from deserializer',
`account` string COMMENT 'from deserializer',
`detail` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
现在,当我从 testfindings 中选择 * 时,我在三列中获取数据,最后一列详细信息包含数组形式的所有数据。
现在,我如何从详细列中获取特定字段,例如我想获取 id,从资源数组中存在的资源中键入。
`detail` struct<findings:array<struct<productarn:string,
resources:array<struct<partition:string,type:string,region:string,id:string>>>
我正在尝试这样的事情:
select
source,
account,
resource
from "testfindings"
cross join UNNEST(testfindings.detail) as p(tr)
cross join UNNEST(tr.findings) as p(it)
cross join UNNEST(it.resources) as p(resource)
它给了我以下错误:
INVALID_FUNCTION_ARGUMENT: Cannot unnest type: varchar
感谢任何帮助。
【问题讨论】:
标签: amazon-athena presto amazon-quicksight