我无法在 athena 上取消嵌套子数组

I can't unnest sub arrays on athena

我将 athena 与 JSON 文件和嵌套字段一起使用。 如何取消嵌套子关卡?

该架构的平台部分:

`platforms` array<struct<key_name:boolean,key_name:string,key_name:boolean,key_name:string,
tags:array<string>,

不unnest直接查询platform字段的数据样例:

[{registrationcomplete=true, source=mail, invitesent=true, label=test, tags=[top], ...

我的问题是我可以用 athena 取消嵌套第一层:

UNNEST(platforms) AS t1 (platform);

我是 运行 对多个 table 的查询,当我这样调用我的子数组时它不起作用:

array_join('a.platform.tags', ',') AS plat_tags,

我收到此错误是因为 unnest 更改了类型:

SYNTAX_ERROR: line 6:1: Unexpected parameters (varchar(15), varchar(1)) for function array_join. Expected: array_join(array(T), varchar) T, array_join(array(T), varchar, varchar) T

如果我只对一个 table 执行简单查询,则此代码有效:

array_join('platform.tags', ',') AS plat_tags,

我想知道是否存在解决方法或更好地像其他 unnest 一样直接转换我的子数组标签!

因为如果我使用这段代码,它是有效的,但结果在一个数组中,aws quicksight 不处理。

platform.tags AS plat_tags,

您用单引号引用 platform.tags,这是字符串的 SQL 语法。

要引用标识符,您必须使用双引号,并将引号放在每个组件周围(即不是分隔它们的点)。在这种情况下,我认为引用是不必要的,所以这样写:

array_join(platform.tags, ',') AS plat_tags

但是如果要引用标识符,可以这样写:

array_join("platform"."tags", ',') AS plat_tags