当前位置:首页 » 《资源分享》 » 正文

SQL数组常用函数记录(Map篇)

22 人参与  2024年09月28日 08:01  分类 : 《资源分享》  评论

点击全文阅读


MAP又被称为字典,格式如{key1:value1,key2:value2,…}形式,一般以k:v成对出现。

1、map构造

map('7',coalesce(trade_info.7d_order,0),        '14',coalesce(trade_info.14d_totalt,0),        '28',coalesce(trade_info.28d_total,0),) AS last_nday_total,-- 建表时的字段类型`last_nday_total`      map<string,bigint> COMMENT '近N天单量(N可取7,14,28)' , 

输出实例

{  "14": 7,  "28": 11,    "7": 3}

2、获取map 获取map字段的所有key值,或者所有value值

map_keys(map字段)      -- 返回map字段里所有的key值,输出为数组
--> 输出示例:["14","28","180","365","7","90","60","30"]
map_values(map字段)    -- 返回map字段里左右的value值,输出为数组
--> 输出示例:[7,11,34,116,3,20,18,11]

3、获取map字段中其中一个value值

last_nday_total['28']     --> map字段['对应的key']
--> 输出  11

4、将字符串转换为map格式

str_to_map(字符串字段str)     -- 注意:字符串转换为map格式时,默认以英文逗号为分隔,key与value成对出现
-- 示例
str_to_map('"SH":1000,"SZ":980')
-->  {"SH":1000,"SZ":980}

str_to_map(regexp_replace(concat_ws(',',collect_set(if(decisionids <> '',concat(cast(sceneid as string),':',regexp_replace(decisionids,'\\,','\\;')),null))),'\\"|\\{|\\}',''))   -- 行合并,并且生成一个map字段

5、将json转换为map格式

str_to_map('{"SH":1000,"SZ":980}')
-->  {"SH":1000,"SZ":980}

6、求map字段的长度或元素个数

size(map字段)

7、将map字段中空值或无效值过滤掉

map_filter(map字段, (k, v) -> v IS NOT NULL)    -- 将map字段中的value值为NULL的过滤掉
map_filter(map字段, (k, v) -> v <> '')          -- 将map字段中的value值为空字符串的过滤掉,以此类推
map_filter(map字段, (k, v) -> k <> '')          -- 将map字段中的key值为空字符串的过滤掉,以此类推

8、在map字段中新插入元素

-- 已知已有一个map字段score {"Chinese":"98"},请在里面再插入一个新元素,key为"Math",value为"99"
-- 方式1:
先将原有map字段拆开,再添加新元素。对原map字段元素多不好操作,且后续有变化难维护
map('Chinese','98',
     'Math','99'
)
-- 方式2:
待补充

9、已知两个数组array分别是map的key值与value值,其中k/v数组元素顺序保持映射不变,将其还原为map格式字段

-- 已知map key数组与map value数组分别为:
map key数组:['Chinese','Math']
map value数组:['98','99']
-- 将其合并为一个map字段,输出为 {"Chinese":"98","Math":"99"}
-- 方式1:
将数组全部拆开为单元素,进行k/v交替映射,输出map字段。对于多元素难操作
map(key[0],value[0],
    key[1],value[1]

10、将多个map字段合并,例如在多行合并时存在map字段

-- 方式1:
先将map字段转换为json,。使用udf:to_json将map转换为json字符串,再利用行合并函数collect_set(),最终再将string转换为map
ADD jar hive-udf-tojson.jar;
CREATE TEMPORARY FUNCTION to_json as 'com.meituan.hive.udf.generic.GenericUDFToJson';
select str_to_map(regexp_replace(concat_ws(',',collect_set(to_json(factor_context))),'\\{|\\}|\\"','')) as factor_context;
-- 方式2:
待补充,可参考https://www.saoniuhuo.com/question/detail-2046136.html

参考:

hive:将两个Map合并到一列中_大数据知识库

https://www.zhihu.com/question/384904689/answer/1126084222


点击全文阅读


本文链接:http://zhangshiyu.com/post/165612.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 白丁儿罗佑霖(石女退婚十八次后,彩礼涨到了百万白丁儿罗佑霖结局+番外)结局_(白丁儿罗佑霖石女退婚十八次后,彩礼涨到了百万白丁儿罗佑霖结局+番外全书结局)结局列表_笔趣阁(白丁儿罗佑霖)
  • 都市第一军神萧岩林可儿完本_完本都市第一军神萧岩林可儿
  • 桃花依然笑春风宝藏美文(陆乘渊云梵音)全书免费_(陆乘渊云梵音)桃花依然笑春风宝藏美文后续(陆乘渊云梵音)
  • 宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外(闻星落谢观澜)全书免费_(闻星落谢观澜免费宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外读全书)列表_笔趣阁宠她入骨!世子爷的追妻日常闻星落谢观澜结局+番外
  • 霍沉洲此去经年人未还前言+后续沈青禾霍沉洲完本_霍沉洲此去经年人未还前言+后续(沈青禾霍沉洲)
  • 离恨覆江山全书+后续+结局(萧墨川温洛颜)免费_(离恨覆江山全书+后续+结局)萧墨川温洛颜列表_笔趣阁(萧墨川温洛颜)
  • 贫困生自称真千金,要把我这个鸠占鹊巢假千金赶出门结局+番外纯净版(方玉兰林嘉禾),贫困生自称真千金,要把我这个鸠占鹊巢假千金赶出门结局+番外纯净版
  • 穿书女配的逃出指南小说后续在线免费阅读_[牧宠]完结版免费阅读
  • 「太荒混沌鼎」后续更新_「叶无涯柳如烟」小说后续在线免费阅读
  • 全文消失的老婆(昭昭王力)列表_全文消失的老婆
  • (番外)+(全书)爱占便宜的表嫂全书+后续+结局(谢一瑶袁博文)_爱占便宜的表嫂全书+后续+结局列表_笔趣阁(谢一瑶袁博文)
  • 完结文沈青禾贺临渊霍沉洲前言+后续+结局列表_完结文沈青禾贺临渊霍沉洲前言+后续+结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1