spark sql 中LENGTH 和 SIZE 函数介绍

目录

  • 前言
  • 函数介绍
    • LENGTH函数
    • SIZE函数
  • 实战

前言

我将为您详细介绍 Spark SQL 中的 LENGTH 和 SIZE 函数。它们虽都用于"计量",但处理的数据类型和目的截然不同。

简单的区分是:
LENGTH 用于处理字符串,计算其长度(字符数)。
SIZE 用于处理集合类型(如数组Array、映射Map),计算其元素或键值对的数量。

函数介绍

LENGTH函数

1.语法

LENGTH 函数(或 len,两者同义)用于计算一个字符串的长度,返回字符的个数

sql 复制代码
LENGTH(str) 

2.示例

sql 复制代码
select 
LENGTH('Spark') as ln1	 --5
,LENGTH('')  as ln2--0
,LENGTH(NULL) as ln3 --null

SIZE函数

SIZE 函数用于计算集合数据类型(Array, Map)中的元素个数或键值对数量5。它不能用于字符串。

  1. 语法
sql 复制代码
SIZE(collection)

2.示例

sql 复制代码
select  
SIZE(ARRAY(1, 5, 9)) as sz1 ---3
,SIZE(ARRAY())	as sz2 --0
,SIZE(MAP('k1', 'v1', 'k2', 'v2')) as sz3 ---2
,SIZE(NULL)	as sz5 ---- -1

备注:

size(null)值为-1,可以将 -1 理解为一个明确的标记,表示"无法计算大小的无效输入或缺失值"

实战

现在有一字段:str,以逗号分割,想统计str逗号分开的个数

sql 复制代码
----方法1
with temp_1 as (
	select array('a','b','d','efg') as str
)
select 
size(str) as sz --4
from  temp_1

--方法2
with temp_0 as (
select  'a,b,d,efg' as str
)

select size(split(str, ',')) as sz ---4
from  temp_0

---方法3
with temp_0 as (
select  'a,b,d,efg' as str
)

SELECT 
  LENGTH(str) - LENGTH(REPLACE(str, ',', '')) +1 as ln ---4 
FROM temp_0;

分析:方法1和方法2,都是通过size函数来实现,需要先转换成数组,方法3是通过length函数实现。

相关推荐
bbq粉刷匠5 小时前
触发器(下):事务与锁、binlog 一致性与替代方案
sql
浅念-7 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql
databook12 小时前
使用 DuckDB 分析 Parquet 文件
sql·数据分析·nosql
旺仔不是程序员13 小时前
相关子查询与性能优化:PostgreSQL 逐行执行的代价与 JOIN 重写
数据库·后端·sql
躺柒15 小时前
读数据架构知识体系指南01关系数据仓库(上)
数据仓库·架构·数据分析·spark·数据湖·关系数据库·企业数据仓库
IT研究室16 小时前
最新大数据毕业设计选题推荐-基于大数据的天气预报预警数据可视化与分析-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
绘梨衣54716 小时前
慢SQL排查手册
python·sql
IT研究室16 小时前
最新大数据毕业设计选题推荐-基于大数据的图书借阅数据可视化分析系统-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·数据分析·spark·课程设计
知识的搬运工旺仔2 天前
CREATE INDEX CONCURRENTLY:线上建索引不阻塞 DML 的代价与坑
数据库·后端·sql
天天喝旺仔2 天前
MySQL索引优化实战:B+Tree原理、索引失效与覆盖索引调优
数据库·sql·mysql·性能优化