问题描述
我正在使用带有JSON文件和嵌套字段的雅典娜。 如何取消子级别的嵌套?
该模式的平台部分:
`platforms` array<struct<key_name:boolean,key_name:string,key_name:boolean,tags:array<string>,
[{registrationcomplete=true,source=mail,invitesent=true,label=test,tags=[top],...
我的问题是我无法使用雅典娜使第一级放松。
UNnesT(platforms) AS t1 (platform);
array_join('a.platform.tags',',') AS plat_tags,
我收到此错误,是因为嵌套改变了类型:
语法:行6:1:函数array_join的意外参数(varchar(15),varchar(1))。预期:array_join(array(T),varchar)T,array_join(array(T),varchar,varchar)T
array_join('platform.tags',
我想知道是否存在解决方法,或者更好地像其他嵌套对象一样直接转换我的子数组标签!
因为如果我使用这段代码可以工作,但是结果在数组中,而aws quicksight无法处理。
platform.tags AS plat_tags,
解决方法
您正在用单引号引号platform.tags
,这是字符串的SQL语法。
要对标识符加引号,必须使用双引号,并将引号括在每个组件上(即不要将点分开)。在这种情况下,我认为引用是不必要的,因此应这样写:
array_join(platform.tags,',') AS plat_tags
但是,如果要引用标识符,请这样写:
array_join("platform"."tags",') AS plat_tags