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
  • 相关阅读:
    一天一个Linux命令--find
    一天一个Linux命令--dhclient
    一道CTF题引发的思考——SSI注入
    netcat的简单使用(一)
    文件头类型
    windows10禁用更新方法
    Burpsuite 之intruder
    localstorage sessionstorage和cookie的区别
    js中的迭代方法-every, some, filter, map, forEach
    前端日志分类
  • 原文地址:https://www.cnblogs.com/skyEva/p/10168402.html
Copyright © 2011-2022 走看看