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

文章目录

  • [1. Map 增删改查](#1. Map 增删改查)
    • [1.1 声明 Map 数据类型](#1.1 声明 Map 数据类型)
    • [1.2 增](#1.2 增)
    • [1.3 删](#1.3 删)
    • [1.4 改](#1.4 改)
    • [1.5 查](#1.5 查)
  • [2. Map 相关函数](#2. Map 相关函数)
    • [2.1 单个Map](#2.1 单个Map)
  • [3. Map 与 String](#3. Map 与 String)
    • [3.1 Map 转 string](#3.1 Map 转 string)
    • [3.2 string 转 Map](#3.2 string 转 Map)

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;

1.3 删

没有删除,只能覆盖

1.4 改

复制代码
array_name['key'] = 'xxxx'

1.5 查

复制代码
select array_name['key'] ;

注意:数组越界会报错。

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");

注意:键值对都没有引号

相关推荐
core5125 天前
Hive实战(三)
数据仓库·hive·hadoop
程序员小羊!6 天前
大数据电商流量分析项目实战:Hive 数据仓库(三)
大数据·数据仓库·hive
core5126 天前
Hive实战(一)
数据仓库·hive·hadoop·架构·实战·配置·场景
智海观潮6 天前
Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
hive·sql·spark
cxr8287 天前
基于Claude Code的 规范驱动开发(SDD)指南
人工智能·hive·驱动开发·敏捷流程·智能体
core5128 天前
Hive实战(二)
数据仓库·hive·hadoop
Agatha方艺璇8 天前
Hive基础简介
数据仓库·hive·hadoop
像豆芽一样优秀10 天前
Hive和Flink数据倾斜问题
大数据·数据仓库·hive·hadoop·flink
howard200510 天前
VMWare上搭建Hive集群
hive·hadoop
程序猿 董班长12 天前
springboot配置多数据源(mysql、hive)
hive·spring boot·mysql