zoukankan      html  css  js  c++  java
  • Hive:map字段存储和取用 ( str_to_map函数 )

    str_to_map(字符串参数, 分隔符1, 分隔符2)

    使用两个分隔符将文本拆分为键值对。

    分隔符1将文本分成K-V对,分隔符2分割每个K-V对。对于分隔符1默认分隔符是 ',',对于分隔符2默认分隔符是 '='

    例子:

    1. 创建map字段

    DROP TABLE IF EXISTS tmp.tmp_str_to_map;
    CREATE TABLE IF NOT EXISTS tmp.tmp_str_to_map
    (
    ocolumn string comment '原始字段', 
    rcolumn map<string,string> comment 'map字段'
    );
    

      


    2. concat + str_to_map函数

    用concat + & 取表字段拼接成map类型

    insert overwrite table tmp.tmp_str_to_map
    SELECT 
    concat('&crowd:', m0.id,'&clicker:',m0.dui_leader,'&sen:',m0.application_type) ocolumn,
    str_to_map(concat('column1:', m0.id,'&column2:',m0.dui_leader,'&column3:',m0.application_type), '&', ':') rcolumn
    FROM tmp.tmp_adhoc_detail_20180927 m0
    limit 1
    ;
    

      

    3. 取用map里的字段,用[""]即可

    select 
    rcolumn,
    rcolumn["column1"] column1
    from tmp.tmp_str_to_map;
    

    4. 也可以直接转换取用,而不需要存储字段

    SELECT 
      m0.id column1,
      str_to_map(concat('column1:', m0.id,'&column2:',m0.dui_leader,'&column3:',m0.application_type), '&', ':')["column1"] column1_1
    from tmp.tmp_adhoc_detail_20180927 m0 
    limit 1

      

    5. 结果:

    rcolumn
    column1
    {"column1":"1","column2":"李某某","column3":"创新班"} 1
  • 相关阅读:
    关于时间的一些总结和全屏的一个知识点和百度的一道算法题
    关于超高频的一些研究
    Windows程序设计小结1
    windows系统Java环境配置
    第六章 事务与并发控制
    第五章 存储过程&触发器
    第四章 T-SQL编程
    第三章 数据库查询
    第二章 表的操作
    第一章 数据库的创建
  • 原文地址:https://www.cnblogs.com/skyEva/p/10168402.html
Copyright © 2011-2022 走看看