如何使用配置单元从字符串列中提取值
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
我需要使用配置单元从字符串列中提取一个字段
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