pyspark.sql.functions模块:内置函数集合
admin
2024-03-23 23:21:26
0

目录

  • 正文
    • 三角函数及数学函数
    • agg系列
    • 列编解码
    • 时间相关
    • Window function
    • 字符串处理
    • 多个列操作(横向操作)
    • Collection function
    • 无分类常用API
    • 无分类

正文

三角函数及数学函数

API作用备注
abs绝对值-
acosacos-
asinasin-
atanatan-
atan2两个列的atan2-
bitwiseNOT按位取反:-(n+1)-
broundHALF_EVEN,如果前一位是偶数,五舍六入,否则四舍五入-
cbrt立方根-
ceil取不超过x的最大整数-
coscos-
cosh双曲余弦-
conv进制转换-
degrees弧度转角度-
expexp-
expm1先求指数再减1-
factorial阶乘-
floor向下取整-
loglog-
log10log10-
log1p先求对数再加1-
log2log2-
pow求指数,第一列为底数,第二列为指数-
radians角度转弧度-
round(col,scale)HALF_UP,同传统意义四舍五入 scale >= 0四舍五入,scale<0取整数部分-
rand[0,1]之间的iid随机数-
randn标准正态分布采样-
rint返回最接近的整数并转化为浮点数,0.5的话向绝对值大的方向转换-
signum符号函数-
sinsin-
sinhsinh-
sqrt平方根-
tantan-
tanhtanh-

agg系列

API作用备注
avgdf.groupBy.agg或df.agg-
collect_list与agg联合使用,将分组中的列作为list返回-
collect_set与agg联合使用,将分组中的列作为set返回-
corr与agg联合使用,求皮尔逊相关系数-
count每组元素个数-
countDistinct每组distinct元素个数-
covar_pop两列总体协方差-
covar_samp两列样本协方差-
first分组第一个值-
grouping-
grouping_id-
kurtosis列的峰度-
lastdf.groupBy(‘name’).agg(F.first(‘score’)).show()-
max最大值-
mean均值-
min最小值-
skewness偏度-
stddev样本标准偏差,同stddev_samp-
stddev_samp样本标准偏差,同stddev-
stddev_pop总体标准偏差-
sum与agg联合使用,求和-
sumDistinct先distinct,再求和-
var_pop总体方差-
var_samp样本方差-
variance样本方差,同var_samp-

列编解码

API作用备注
ascii计算string列的ascii数值-
bin二进制-
hex十六进制-
base64base64-
unbase64unbase64-
crc32列的crc32-
md5列的md5-
sha1字符串列元素的sha1-
sha2sha2加密,需指定位数-

时间相关

API作用备注
date_add从指定天累加天数-
date_sub从指定天减少天数-
add_months从指定月份累加月份-
current_date返回当前date作为一列-
current_timestamp返回当前time作为一列-
date_format输出时间格式-
datediff两个日期列相隔天数-
dayofmonth一个月的第几天-
dayofyear一年的第几天-
year-
weekofyear一年的第几个星期-
month月份-
hour-
minute-
second-
last_day一个月最后一天-
months_between两个时间的月份差-
from_unixtime将以秒为时间的列转换为格式化字符串(yyyy-MM-dd HH:mm:ss)-
from_utc_timestamp带时区时间转换-
next_day下一周的今天的日期,相当于加7-
quarter日期处于哪个季度(1,2,3,4)-
trunc返回年或月的第一天-
unix_timestamp转为以秒为单位的时间戳(unix)-
window时间窗口-

Window function

这部分请参考我的博文:《PySpark和SQL中的Window function》

API作用备注
cume_distcume_dist-
dense_rank排序序号跳跃[(1,1),(1,1),(2,3)]-
rank排序序号不跳跃[(1,1),(1,1),(2,2)]-
laglag-
leadlead-
ntilentile-
percent_rankpercent_rank-
row_numberrow_number-

字符串处理

API作用备注
initcap句子每个单词首字母大写-
instr子字符串在母字符串中的位置-
length字符串长度-
locate字符串出现的位置-
lower字符串全部转小写-
upper字符串全部转大写-
lpad指定子字符串左填充母字符串-
rpad和lpad对应-
ltrim删除str左边空白-
rtrim删除str右边空白-
trim删除str两侧空白-
regexp_extractre匹配返回匹配的元素,否则为空字符串-
regexp_replacere匹配返回最后的参数,否则为原字符串-
repeat重复指定字符串n次-
reverse(Collection function)反转字符串或array-
soundexSoundEx返回由四个字符组成的代码以评估两个字符串的相似性。-
split分隔符可以是子字符串或者list,如果是list,每个元素都是分隔符,如[ABC]-
substring(str, pos, len)字符串截取,pos从1开始-
substring_index(str, delim, count)先用delim对str进行分割,count可以理解为list中的slice,选取delim分割后的str中的子串-
translate字符串替换,后两个参数对应替换-

多个列操作(横向操作)

API作用备注
coalesce取非null的列,如果所有列均非null,取第一个列的值-
nanvl取非Nan的列,如果所有列均非Nan,取第一个列的值-
concat将多个列连接起来,适合字符串二进制和数组.注意和array区别-
concat_ws使用指定分隔符将多个列连接起来,不可以用在groupby.agg中,返回空值(2022.07.26)-
hash列的每个元素的组合hash-
hypot两个列每个元素的欧氏距离-
greatest指定几列对比的最大值-
least比较多个列选取最小值-

Collection function

API作用备注
array_contains如果列元素是array,判断array是否有某个元素-
size计算array或map中的长度-
sort_arrayarray排序-

无分类常用API

API作用备注
isnan是否为nan-
isnull是否为空值null-
spark_partition_id分区编号作为一列-
udfudf请参考《PySpark系列:pyspark udf的使用》
whenF.when(df.score>=80,100).when(df.score<60,0).otherwise(50)-
col选取df列名作为参数,返回新的列-
column同col-

无分类

API作用备注
approx_count_distinct去重后的值的大约个数(速度快)-
array组合多个列作为array-
asc官方没例子,Column.asc可以代替-
desc官方没例子,Column.desc可以代替-
broadcast将DF标记为足够小,以便在broadcast joins中使用-
create_map两列之前的字典映射,前者为key,后者为value-
decode解码为指定字符集-
encode编码为指定字符集-
explode将列的list元素变为列-
posexplode类似explode,多一个位置列-
expr执行表达式字符串并返回column-
format_number保留几位小数-
format_string字符串格式化(%d,%s,%f)-
from_jsonfrom_json-
functools一个模块,新版已经删除-
get_json_object从json字符串提取列-
input_file_name为当前Spark任务的文件名创建一个字符串列。-
json_tuple根据key解析json字符串并返回相应列-
levenshtein两个列字符串逻辑距离-
lit通过字面值(literal value)创建column-
monotonically_increasing_id添加单调递增的64-bit整数作为column-
shiftLeft位运算-左移-
shiftRight位运算-右移-
shiftRightUnsigned无符号位运算右移-
struct组合多列作为一个struct-
to_date等价于pyspark.sql.Column.cast(“date”),将列元素转换为pyspark.sql.types.DateType类型-
to_json将包含StructType,ArrayType或MapType的column转化为json-
to_timestamp将Column转换为pyspark.sql.types.TimestampType 类型-
to_utc_timestamp将Column转换为带utc的时间戳类型-

相关内容

热门资讯

安卓系统的如何测试软件,从入门... 你有没有想过,你的安卓手机里那些神奇的软件是怎么诞生的呢?它们可不是凭空出现的,而是经过一系列严格的...
小米8安卓系统版本,安卓系统版... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,小米8这款手机自从上市以来,就凭借着出色...
华为手机安卓系统7以上,创新体... 你有没有发现,最近华为手机越来越受欢迎了呢?尤其是那些搭载了安卓系统7.0及以上版本的机型,简直让人...
儿童英语免费安卓系统,儿童英语... 哇,亲爱的家长朋友们,你是否在为孩子的英语学习发愁呢?别担心,今天我要给你带来一个超级好消息——儿童...
ios系统切换安卓系统还原,还... 你有没有想过,有一天你的手机从iOS系统切换到了安卓系统,然后再从安卓系统回到iOS系统呢?这听起来...
灵焕3装安卓系统,引领智能新体... 你知道吗?最近手机圈里可是掀起了一股热潮,那就是灵焕3这款神器的安卓系统升级。没错,就是那个曾经以独...
安卓系统指南针软件,探索未知世... 手机里的指南针功能是不是让你在户外探险时倍感神奇?但你知道吗,安卓系统中的指南针软件可是大有学问呢!...
华为是不用安卓系统了吗,迈向自... 最近有个大新闻在科技圈里炸开了锅,那就是华为是不是不再使用安卓系统了?这可不是一个简单的问题,它涉及...
安卓系统热点开启失败,排查与解... 最近是不是你也遇到了安卓系统热点开启失败的小麻烦?别急,让我来给你详细说说这个让人头疼的问题,说不定...
小米max2系统安卓,安卓系统... 你有没有听说过小米Max2这款手机?它那超大的屏幕,简直就像是个移动的电脑屏幕,看视频、玩游戏,那叫...
电池健康怎么保持安卓系统,优化... 手机可是我们生活中不可或缺的好伙伴,而电池健康度就是它的生命力。你有没有发现,随着使用时间的增长,你...
安卓手机怎么调系统颜色,安卓手... 你有没有发现,你的安卓手机屏幕颜色突然变得不那么顺眼了?是不是也想给它换换“脸色”,让它看起来更有个...
安卓系统清粉哪个好,哪款清粉工... 手机用久了,是不是觉得卡得要命?别急,今天就来聊聊安卓系统清理垃圾哪个软件好。市面上清理工具那么多,...
华为被限制用安卓系统,挑战安卓... 你知道吗?最近科技圈可是炸开了锅!华为,这个我们耳熟能详的名字,竟然因为一些“小插曲”被限制了使用安...
安卓系统是不是外国,源自外国的... 你有没有想过,我们每天离不开的安卓系统,它是不是外国货呢?这个问题听起来可能有点奇怪,但确实很多人都...
安卓系统缺少文件下载,全面解析... 你有没有发现,用安卓手机的时候,有时候下载个文件真是让人头疼呢?别急,今天就来聊聊这个让人烦恼的小问...
kktv系统刷安卓系统怎么样,... 你有没有听说最近KKTV系统刷安卓系统的事情?这可是个热门话题呢!咱们一起来聊聊,看看这个新玩意儿到...
安卓系统连接电脑蓝牙,操作指南... 你有没有遇到过这种情况:手机里堆满了各种好用的应用,可就是想找个方便快捷的方式,把手机里的音乐、照片...
安卓车机11.0系统包,智能驾... 你有没有发现,最近你的安卓车机系统好像悄悄升级了呢?没错,就是那个安卓车机11.0系统包!这可不是一...
安卓系统最高到多少,从初代到最... 你有没有想过,你的安卓手机系统升级到哪一步了呢?是不是好奇安卓系统最高能到多少呢?别急,今天就来带你...