Hive-SQL获取表中复杂结构数据
数据格式基本如下:
col1
"{""couponSetting"":[{""amount"":""xxxxx"",""type"":""优惠券"",""boxxsrsarow"":""50万"",""_batchssId"":""4718"}"],""totalCount"":6,""couponExplain"":""优惠xxxxxxx选、U(服xxxxxxxx月),每xxxxxxx次。""}"
方法一:当字段col1是String类型时,我们可以直接使用中括号来获取,
select col1['key的名字']
from ods.ods_xxxx
limit 1000
方法二:当字段col1不是String类型是,我们用方法一去获取的时候会报错如下:
Error while compiling statement: FAILED: SemanticException [Error 10033]: line 1:7 [] not valid on non-collection types ''col1'': string
含义就是字段并非是String字符串类型,我们需要使用特殊处理的方式,这里我们可以使用:get_json_object(key,"$.xxx")
的方式来获取。
例如:
select
get_json_object(col1,'$.要获取的key')
from ods.ods_xxxx
where activityid='14'