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