【SparkSql学习】sparksql常用函数
字符串函数
concat(str1, str2, ...): 连接多个字符串
substr(str, pos, len): 从字符串中提取子串
trim(str): 去除字符串两端空格
upper(str): 将字符串转为大写
lower(str): 将字符串转为小写
regexp_extract(str, pattern, idx): 使用正则表达式提取匹配内容
示例:
SELECT concat('Spark', 'SQL'), substr('Hello', 2, 3), trim(' text ')
日期时间函数
current_date(): 获取当前日期
date_add(date, days): 日期加法
date_sub(date, days): 日期减法
datediff(endDate, startDate): 计算日期差值
year(date): 提取年份
month(date): 提取月份
示例:
SELECT current_date(), date_add('2023-01-01', 5), year('2023-06-15')
数学函数
abs(n): 绝对值
ceil(n): 向上取整
floor(n): 向下取整
round(n, d): 四舍五入
pow(x, y): 幂运算
sqrt(n): 平方根
示例:
SELECT ceil(3.14), round(3.1415, 2), pow(2, 3)
聚合函数
count(*): 计数
sum(col): 求和
avg(col): 平均值
max(col): 最大值
min(col): 最小值
collect_list(col): 将值收集为数组
示例:
SELECT avg(salary), max(age) FROM employees
条件函数
coalesce(expr1, expr2, ...): 返回第一个非空表达式
if(condition, true_value, false_value): 条件判断
case when ... then ... end: 多条件分支
nvl(expr, default): 空值替换
示例:
SELECT if(score > 60, 'Pass', 'Fail'),
coalesce(name, 'Unknown')
窗口函数
row_number(): 行号
rank(): 排名(允许并列)
dense_rank(): 密集排名
lead(col, n): 访问后续行
lag(col, n): 访问先前行
示例:
SELECT name, salary,
rank() OVER (PARTITION BY dept ORDER BY salary DESC)
复杂类型函数
array_contains(arr, value): 检查数组包含元素
size(map): 获取map大小
explode(arr): 将数组展开为多行
json_tuple(jsonStr, path1, ...): 解析JSON
示例:
SELECT explode(array(1,2,3)),
json_tuple('{"name":"Alice"}', 'name')
更多推荐

所有评论(0)