如何使用配置单元从字符串列中提取值

How to extract a value from a string column using hive

我需要使用配置单元从字符串列中提取一个字段

Input:  [{"name":"MANAGER"}]
Output:    MANAGER

我能够使用以下正则表达式获取记录,但无法从输出中删除 ]

已建立查询:

select split(regexp_replace('([{"name":"MANAGER"}])','^\(|\)$|[{"}]',''),': *')[1];

获得的输出:

MANAGER]

能否请您帮我从输出中删除 ],并在本示例中使用配置单元仅获取 MANAGER

您实际上可以使用 get_json_object 函数解析它,因为您共享的字符串是 JSON 字符串:

select get_json_object(regexp_replace('[{"name":"MANAGER"}]', '[\[\]]', ''), '$.name')

查看文档:

get_json_object
A limited version of JSONPath is supported:

  • $ : Root object
  • . : Child operator
  • [] : Subscript operator for array
  • * : Wildcard for []

Syntax not supported that's worth noticing:

  • : Zero length string as key
  • .. : Recursive descent
  • @ : Current object/element
  • () : Script expression
  • ?() : Filter (script) expression.
  • [,] : Union operator
  • [start:end.step] : array slice operator