hive正常数据转化为json数组
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
工作中,大多数时候会需要把json数组中的数据解析出来,现在会经常和后端打交道,后端同学就希望把正常的行列数据用json的形式给他们,他们使用起来方便,我看有的文章会写用udtf函数实现,不过本着能用内置函数绝不用自定义函数的原则(主要是我不会写),用内置函数实现也不是很难。
原数据形式:
希望转换成一个标准的json数组,
{
下装款型: {
直筒裤
},
下装设计: {
纯色
},
厚度: {
正常
},
版型: {
正常
},
穿搭风格: {
机能,
休闲
},
裤长: {
长裤
},
颜色: {
褐,
灰
}
}
简单的hive实现:
--我用的是阿里云的odps,hive略微有点差别
--tmp为原始数据表
--goods_name和tag_name为需要处理的字段
select goods_id
,concat('{',wm_concat(',',concat(goods_name,':',tag_name)),'}') as tag_detail
from (
select goods_id
,goods_name
,concat('{',wm_concat(',',tag_name),'}') as tag_name
from (
select goods_id
,goods_name
,tag_name
from tmp
) t0
group by goods_id
,goods_name
) t1
group by goods_id
;
上面的还是太简单了,这次碰到了麻烦点的,特别记录下,看有用udf实现的,下次试下,优先还是内置函数吧,稳定且效率高
select concat(
'{"id":"'
,goods_supplier_id
,'","size":'
,size
,',"performance":'
,if(compliance_prefee_rate is null,'\"\"',compliance_prefee_rate)
,'}'
) as value
from (
select goods_supplier_id
,concat(
"{"
,concat_ws(
','
,collect_set(concat_ws(':',t1.size,cast(t1.score as string)))
)
,'}'
) as size
,t2.compliance_prefee_rate
from (
select goods_supplier_id
,shop_id
,concat('"',size,'"') as size
,score
from bigdata2c.dm_goods_supplier_rank_new_d
where dt = ${bdp.system.bizdate}
) t1 left
join (
select shop_id
,compliance_prefee_rate
from bigdata2c.ba_shop_compliance_prefee_rate
) t2
on t1.shop_id = t2.shop_id
group by t1.goods_supplier_id
,t2.compliance_prefee_rate
) t0
;
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)