hive—常用的函数整理

1、size(split(...))函数用于计算分割后字符串数组的长度

1)实例:由客户编号列表计算客户编号个数

sql 复制代码
--数据准备
with tmp_test01 as (
select 'tag074445270' tag_id,'202501'busi_mon , '012399931003,012399931000' index_val
union all
select 'tag074445271' tag_id,'202501'busi_mon , '037100006340,030600050969,030600012604' index_val
union all
select 'tag074445271' tag_id,'202501'busi_mon , '' index_val
)

--计算客户编号个数
select tag_id, busi_mon,index_val,
COALESCE(SUM(case when length(trim(index_val)) >0 then size(split(index_val, ',')) else 0 end ), 0) AS index_val_0, --计算结果
size(split(index_val,",")) DD,  --数组长度
split(index_val,",") SS --字符串分隔情况
from tmp_test01
group by tag_id, busi_mon,index_val

注:1、空字符串处理 ‌:如果分割的字段串是空字符串(例如a=''),size(split(a, ','))的结果为1,因为空字符串被视为一个元素‌;

2、null值处理 ‌:如果分割的字段串是null(例如a is null),size(split(a, ','))的结果为-1

相关推荐
尘世壹俗人1 小时前
hadoop.proxyuser.代理用户.授信域 用来干什么的
大数据·hadoop·分布式
2401_cf9 小时前
为什么hadoop不用Java的序列化?
java·hadoop·eclipse
钊兵16 小时前
hivesql是什么数据库?
大数据·hive
RestCloud16 小时前
产品更新丨谷云科技 iPaaS 集成平台 V7.5 版本发布
数据仓库·系统安全·api·数字化转型·ipaas·数据集成平台·集成平台
RestCloud17 小时前
数据清洗(ETL/ELT)原理与工具选择指南:企业数字化转型的核心引擎
数据仓库·数据安全·etl·数据集成·elt·集成平台
wingaso19 小时前
[经验总结]删除gitlab仓库分支报错:错误:无法推送一些引用到“http:”
linux·数据仓库·git
线条11 天前
MapReduce Shuffle 全解析:从 Map 端到 Reduce 端的核心数据流
大数据·hadoop·mapreduce
火龙谷2 天前
【hadoop】Kafka 安装部署
大数据·hadoop·kafka
火龙谷2 天前
【hadoop】Flume的相关介绍
大数据·hadoop·flume
RestCloud2 天前
企业对数据集成工具的需求及 ETL 工具工作原理详解
数据仓库·系统安全·etl·数字化转型·数据集成平台·集成平台