Arrays 配置单元-从Json提取数组
我有一个包含一些值数组的表Arrays 配置单元-从Json提取数组,arrays,amazon-web-services,hive,amazon-athena,Arrays,Amazon Web Services,Hive,Amazon Athena,我有一个包含一些值数组的表 create external table apidetails ( inputdetails sting ) Location 'XXXX' 从apidetails中选择inputdetails { "Name": "api-server1", "ID": "api-1", "tags": ["tag-1","tag-2"] } 我需要结果 |ID |标签| |-------|---------------| |api-1 |标签-1,标签-2| 我尝试选择
create external table apidetails
(
inputdetails sting
)
Location 'XXXX'
从apidetails中选择inputdetails
{ "Name": "api-server1", "ID": "api-1", "tags": ["tag-1","tag-2"] }
我需要结果
|ID |标签|
|-------|---------------|
|api-1 |标签-1,标签-2|
我尝试选择json_extract_scalar(inputdetails,$tags'),但它返回错误。这里有几个选项:
选项1:JSON
选项2:数组(varchar)
选项3:分隔字符串
是否可以删除“[”和“]”?
select json_extract_scalar(inputdetails ,'$.ID') as ID
,json_extract(inputdetails ,'$.tags') as tags
from apidetails
;
ID | tags
-------+-------------------
api-1 | ["tag-1","tag-2"]
select json_extract_scalar(inputdetails ,'$.ID') as ID
,cast(json_extract(inputdetails ,'$.tags') as array(varchar)) as tags
from apidetails
;
ID | tags
-------+----------------
api-1 | [tag-1, tag-2]
select json_extract_scalar(inputdetails ,'$.ID') as ID
,array_join(cast(json_extract(inputdetails ,'$.tags') as array(varchar)),',') as tags
from apidetails
;
ID | tags
-------+-------------
api-1 | tag-1,tag-2