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函数实现。

相关推荐
罗政4 小时前
AI工作流实现Excel自动化+SQL,零 VBA ,零公式,电商订单分析案例 | DTBot
sql·自动化·excel
吴声子夜歌4 小时前
SQL经典实例——处理数字
java·数据库·sql
NineData5 小时前
日常巡检 Oracle 时,ChatDBA 怎么把会话、SQL 和等待事件一起看
数据库·sql·oracle·ninedata·故障排查·chatdba·实例巡检
吴声子夜歌16 小时前
SQL经典实例——使用多张表
数据库·sql
摇滚侠21 小时前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis
ACP广源盛1392462567321 小时前
GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
大数据·人工智能·嵌入式硬件·gpt·spark
layflat_coder1 天前
NL2SQL 正确率怎么提升:ChatBI 的 `<error-msg>` 错误反馈闭环
sql
想ai抽1 天前
Spark Executor 因节点内存超限被杀的分析与应对
大数据·性能优化·spark
摇滚侠1 天前
MyBatis 入门到项目实战 MyBatis 分页插件 65-66
java·开发语言·sql·mybatis
北风toto1 天前
深度拆解:本体与智能体协同生成SQL的底层逻辑与工程实践
数据库·sql·microsoft