zoukankan      html  css  js  c++  java
  • hive-group by的时候把两个字段变成map

    源表结构:

    pcgid               string                                  

    mobilegid           string                                  

    value               double  

    测试数据如下:

    p1 m1 0.6
    p1 m2 0.9
    p2 m1 1.0

    需要的结果是:

    p1 {"m2":"0.9","m1":"0.6"} 2

    p2 {"m1":"1.0"} 1

    就是对源表进行group by之后对另外两个字段变成key-value存成一个map

    查了一下,hive中没有现成的函数可以直接得到结果。不过可以转一个思路,把mobilegid和value先连接成字符串,然后再把整个set的结果连接成一个字符串,最后再用str_to_map,完美解决。

    select pcgid as gid,str_to_map(concat_ws(",",collect_set(concat_ws(':', mobilegid, cast(value as string)) ))) as gids,count(1) as num
    from gemini_product_id_connect_result_pair  
    group by pcgid;

    p

     

  • 相关阅读:
    《UIP在NIOS上的移植》
    切勿使用:指向局部变量的指针作为函数的返回指针!
    Oeacle创建表空间
    Oracle SQL 语言分类
    线程整理
    输入输出
    异常处理
    哈希算法
    java链表
    课上重点整理
  • 原文地址:https://www.cnblogs.com/qwj-sysu/p/5521194.html
Copyright © 2011-2022 走看看