当前位置:   article > 正文

hive正常数据转化为json数组_hive 转json

hive 转json

       

 

        工作中,大多数时候会需要把json数组中的数据解析出来,现在会经常和后端打交道,后端同学就希望把正常的行列数据用json的形式给他们,他们使用起来方便,我看有的文章会写用udtf函数实现,不过本着能用内置函数绝不用自定义函数的原则(主要是我不会写),用内置函数实现也不是很难。

       原数据形式:

       希望转换成一个标准的json数组,

  1. {
  2. 下装款型: {
  3. 直筒裤
  4. },
  5. 下装设计: {
  6. 纯色
  7. },
  8. 厚度: {
  9. 正常
  10. },
  11. 版型: {
  12. 正常
  13. },
  14. 穿搭风格: {
  15. 机能,
  16. 休闲
  17. },
  18. 裤长: {
  19. 长裤
  20. },
  21. 颜色: {
  22. 褐,
  23. }
  24. }

简单的hive实现:

  1. --我用的是阿里云的odps,hive略微有点差别
  2. --tmp为原始数据表
  3. --goods_name和tag_name为需要处理的字段
  4. select goods_id
  5. ,concat('{',wm_concat(',',concat(goods_name,':',tag_name)),'}') as tag_detail
  6. from (
  7. select goods_id
  8. ,goods_name
  9. ,concat('{',wm_concat(',',tag_name),'}') as tag_name
  10. from (
  11. select goods_id
  12. ,goods_name
  13. ,tag_name
  14. from tmp
  15. ) t0
  16. group by goods_id
  17. ,goods_name
  18. ) t1
  19. group by goods_id
  20. ;

上面的还是太简单了,这次碰到了麻烦点的,特别记录下,看有用udf实现的,下次试下,优先还是内置函数吧,稳定且效率高

  1. select concat(
  2. '{"id":"'
  3. ,goods_supplier_id
  4. ,'","size":'
  5. ,size
  6. ,',"performance":'
  7. ,if(compliance_prefee_rate is null,'\"\"',compliance_prefee_rate)
  8. ,'}'
  9. ) as value
  10. from (
  11. select goods_supplier_id
  12. ,concat(
  13. "{"
  14. ,concat_ws(
  15. ','
  16. ,collect_set(concat_ws(':',t1.size,cast(t1.score as string)))
  17. )
  18. ,'}'
  19. ) as size
  20. ,t2.compliance_prefee_rate
  21. from (
  22. select goods_supplier_id
  23. ,shop_id
  24. ,concat('"',size,'"') as size
  25. ,score
  26. from bigdata2c.dm_goods_supplier_rank_new_d
  27. where dt = ${bdp.system.bizdate}
  28. ) t1 left
  29. join (
  30. select shop_id
  31. ,compliance_prefee_rate
  32. from bigdata2c.ba_shop_compliance_prefee_rate
  33. ) t2
  34. on t1.shop_id = t2.shop_id
  35. group by t1.goods_supplier_id
  36. ,t2.compliance_prefee_rate
  37. ) t0
  38. ;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/911202
推荐阅读
相关标签
  

闽ICP备14008679号