hive 拼接两个json字符串 成一个

假设 表table_name 有三个字段 company_id, distinct_id, labels(json)
要往labels里直接加 json键值对:

insert overwrite table table_name
select
    a.company_id,
    cast(current_timestamp()as string) as distinct_id,
    concat(concat_ws(",",
        concat("{",substr(a.new_json,2,length(a.new_json)-2)),
        if(old_json = '' ,null,old_json)
    ),'}') as labels
from (
select
	a.company_id,
    xxb.to_json(named_struct(
    'is_canceled','正常')) as new_json, --新增json 键值对 
    substr(a.labels,2,length(a.labels)-2) as old_json --旧有键值对
from table_name a
) a ;

注:如果没有to_json的udf函数,new_json 直接用{'is_canceled':'正常'} 就行

你可能感兴趣的:(大数据,hive,json)