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的时间戳类型-

相关内容

热门资讯

怎么解除订阅安卓系统,安卓系统... 你是不是也和我一样,手机里订阅了好多服务,结果现在想解除订阅,却一头雾水?别急,今天就来手把手教你如...
安卓系统停用怎么开启,轻松恢复... 亲爱的手机控们,你是否曾经遇到过安卓系统突然停用的情况,让你手忙脚乱,不知所措?别担心,今天就来教你...
安卓系统电池健康度,电池健康度... 你有没有发现,你的安卓手机最近是不是有点儿不给力了?电池续航能力大不如前,充电速度也慢了不少?别急,...
安卓系统按键怎么截图,安卓系统... 你是不是也和我一样,有时候想截个图分享给朋友,却发现安卓手机的截图功能有点神秘呢?别急,今天就来手把...
购票系统安卓源代码,架构设计与... 你有没有想过,那些我们每天离不开的购票系统,它们背后的秘密是什么呢?今天,就让我带你一探究竟,揭开购...
安卓手机系统后台测试,深度解析... 你有没有发现,你的安卓手机后台总是悄悄地忙碌着?别小看了这些后台程序,它们可是手机系统稳定运行的关键...
安卓系统重启的图标,解锁设备新... 手机突然重启,是不是心里有点慌?别急,今天就来和你聊聊安卓系统重启的图标,让你一眼就能认出它,再也不...
车载智慧屏安卓系统,智能出行新... 你有没有发现,现在的车载智慧屏越来越智能了?尤其是那些搭载了安卓系统的,简直就像是个移动的小电脑,不...
安卓系统连上网权限,解锁设备无... 你有没有发现,你的安卓手机里有些应用总是偷偷连上网?别小看这个小小的网络权限,它可是能影响你隐私、消...
安卓谷歌操作系统,探索安卓谷歌... 你知道吗?在智能手机的世界里,有一个操作系统可是无人不知、无人不晓,那就是安卓谷歌操作系统。它就像一...
安卓系统手写%怎样调出,具体实... 你有没有遇到过这种情况:在使用安卓手机的时候,突然想用手写输入法来记录一些灵感或者重要信息,可是怎么...
安卓手机重置 系统设置,轻松恢... 手机用久了是不是感觉卡顿得厉害?别急,今天就来教你怎么给安卓手机来个大变身——重置系统设置!想象你的...
win如何安装安卓系统,Win... 哇,你有没有想过,让你的Win系统也能玩转安卓应用?没错,就是那种在手机上轻松自如的安卓系统,现在也...
苹果qq和安卓系统,跨平台体验... 你有没有发现,现在手机市场上,苹果和安卓的较量可是越来越激烈了呢!咱们就来聊聊这个话题,看看苹果QQ...
显示最好的安卓系统,探索最新旗... 你有没有想过,为什么安卓系统那么受欢迎呢?它就像一个魔法盒子,里面装满了各种神奇的魔法。今天,就让我...
安卓app怎么降级系统,系统版... 你有没有发现,有时候安卓手机的系统更新后,新功能虽然炫酷,但老系统用起来更顺手呢?别急,今天就来教你...
雷军脱离安卓系统,引领科技变革... 你知道吗?最近科技圈可是炸开了锅,因为我们的雷军大大竟然宣布要脱离安卓系统,这可真是让人大跌眼镜啊!...
安卓系统自动开网络,安卓系统自... 你有没有发现,手机里的安卓系统有时候会自动开启网络连接,这可真是让人又爱又恨啊!有时候,你正专心致志...
安卓系统怎样控制后台,因为服务... 手机里的安卓系统是不是感觉越来越卡了?后台程序太多,不仅耗电还影响性能。别急,今天就来教你怎么巧妙地...
安卓系统打游戏推荐,一触即达! 你有没有发现,现在手机游戏越来越好玩了?不管是休闲小游戏还是大型MMORPG,都能在手机上畅玩。但是...