hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及"避坑"

说到拼接函数应用场景和使用频次还是非常高,比如一个员工在公司充当多个角色,我们在底层存数的时候往往是多行,但是应用的时候我们通常会只需要一行,角色字段进行拼接,这样join其他表的时候呢也不会造成数据被重复引用计算。

1、拼接多个字符串concat_null(...)

从上图中的说明中我们可以看到,在应用场景中,通常使用concat_null(...)防止由于有null存在导致的拼接异常。

2. 用分隔符拼接多个字符串concat_ws(...)

需要注意的是concat_ws(...)可以直接处理掉null,而且如果将sep分割符使用''(空值),则功能和concat_null(...)一样。

3、collect_set、collect_list实现列转行

由于collect_set在实现列转行的时候进行了去重处理,自然实际应用中应用的也会更多。

4、"避坑" null和非字符串字段

由于在实际生产环境中,我们所使用的引擎有所不同,兼容性也不同。有时候NULL和非字符串字段在查询时也会出现问题。

1、通常我们可以把null进行替换。if(字段名 is null,'',字段名)

2、非字符串转化为字符串 cast(字段名 as string)

sql 复制代码
`SELECT  id,     concat_ws(',',collect_set(         cast(if(角色 is null,'',角色) as string)         )) AS `角色`    
      -- 将每个id对应多个的角色去重组合放到一行,并使用英文','分隔角色   
FROM emp   WHERE dt = '20230618'   GROUP BY 1   `
相关推荐
RestCloud6 小时前
ETL、ELT、CDC区别详解,2026数据集成模式选型指南与落地实战
数据仓库·etl·cdc·数据同步·数据集成平台·实时数据同步·elt
江晓鱼未暖9 小时前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
牛奶咖啡133 天前
大数据Hadoop运维应用实践——HIVE与Hadoop实现整合_Hive的配置安装与使用
大数据·hive·hive的配置与安装·metastore服务的配置·hiveserver2服务配置·hive的常用sql操作·beeline的使用
Zhu7584 天前
在k8s集群环境部署高可用的Apache Hadoop3.1.1定制版集群
hadoop·kubernetes
Y3815326625 天前
3 种 SERP 数据 ETL 方案对比:实时 / 定时 / 流式
数据仓库·etl
还有你Y5 天前
软件工程架构
hadoop·架构·软件工程
向夏威夷 梦断明暄5 天前
基于Tez引擎的 Hive SQL 性能优化
hive·sql·性能优化
这个DBA有点耶6 天前
交易型数据库是什么?OLTP核心能力与2026选型指南
数据库·数据仓库·sql·database·数据库架构·olap·dba
RestCloud7 天前
Informatica迁移国产ETL完整实施指南:ETLCloud自动化平滑替换方案
数据仓库·etl·etlcloud·数据传输·数据集成工具·informatica·国产化替代