【Hive】HQL Map 『CRUD | 相关函数』

1. Map 增删改查

1.1 声明 Map 数据类型

  1. 语法:map<基本数据类型, 基本数据类型> 注意是<>,不是()
  2. 例子:
    1. 创建表时:
      create table temp_db.map_test(
      	id int comment "源数据主键id",
      	smap map<string,string> comment "string型map",
      	imap map<string,int> comment "int型map"
      );
      
    2. 字段填充时:cast(null as map<string, string>) as XXX

1.2 增

-- 一列一行数据
insert into temp_db.map_test(id,smap,imap) 
select 
	12,
	map('姓名','张三') as pp,
	map('年龄',23,'性别',1) as dd;

-- 一列多行数据
insert into temp_db.map_test(id,smap,imap) 
select 
	12,
	map('姓名',col_name1) as pp,
	map('年龄',col_name2,'性别',col_name3) as dd
from table_name;

1.3 删

没有删除,只能覆盖

1.4 改

只能 overwrite 覆盖

1.5 查

方式一:
select map_name['keyName'] ;

方式二:
select map_name.keyName

注意:如果查找不存在的键值对,会返回 null
在这里插入图片描述

2. Map 相关函数

2.1 单个Map

  1. map_keys(map_name):获取该map的所有key,结果是一个Array。
  2. map_keys(map_name):获取该map的所有value,结果是一个Array。
  3. size(map_name):获取该map的键值对个数。
  4. 判断map中是否包含某个key值:array_contains(map_keys(map_name), ‘key’) 或者 map_name[“key”] is not null

3. Map 与 String

3.1 Map 转 string

select 
    ...,
    concat_ws(',', collect_list(concat_ws(':', k, v) ) )
from test_map_1
lateral view outer explode(map1) kv as k,v

3.2 string 转 Map

select str_to_map("name:zhangsan,age:25");
select str_to_map('"name":"zhangsan","age":25"');
select str_to_map("\\"name\\":\\"zhangsan\\",\\"age\\":25\\""');

注意:键值对都没有引号也可以的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值