我无法在 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
我将 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