Hive - 从 Json 中提取数组
Hive - Extract arrays from Json
我有 table,其中包含一些 值数组 。
create external table apidetails
(
inputdetails sting
)
Location 'XXXX'
select inputdetails from apidetails
{ "Name": "api-server1", "ID": "api-1", "tags": ["tag-1","tag-2"] }
我需要结果
|编号 |标签 |
|--------|----------------|
|api-1|标记 1,标记 2|
我尝试了 select json_extract_scalar(inputdetails ,'$tags'),但是 returns 错误。
这里有几个选项:
选项 1:JSON
select json_extract_scalar(inputdetails ,'$.ID') as ID
,json_extract(inputdetails ,'$.tags') as tags
from apidetails
;
ID | tags
-------+-------------------
api-1 | ["tag-1","tag-2"]
选项 2:数组(varchar)
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]
选项 3:分隔字符串
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
我有 table,其中包含一些 值数组 。
create external table apidetails
(
inputdetails sting
)
Location 'XXXX'
select inputdetails from apidetails
{ "Name": "api-server1", "ID": "api-1", "tags": ["tag-1","tag-2"] }
我需要结果
|编号 |标签 |
|--------|----------------|
|api-1|标记 1,标记 2|
我尝试了 select json_extract_scalar(inputdetails ,'$tags'),但是 returns 错误。
这里有几个选项:
选项 1:JSON
select json_extract_scalar(inputdetails ,'$.ID') as ID
,json_extract(inputdetails ,'$.tags') as tags
from apidetails
;
ID | tags
-------+-------------------
api-1 | ["tag-1","tag-2"]
选项 2:数组(varchar)
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]
选项 3:分隔字符串
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