2021-10-17 04:14:14
SparkSQL函数大全可分为聚合函数、集合函数、时间函数、数学函数、混合函数、字符串函数、窗口函数和其他函数八大类,具体如下:
聚合函数用于对数据进行统计计算。approx_count_distinct可近似去重计数,适用于大数据量场景;avg、mean计算平均值;collect_list与collect_set分别聚合字段值到列表或集合(后者去重);corr计算两列的Pearson相关系数;count与countDistinct分别统计总数和去重总数;covar_pop、covar_samp计算总体/样本协方差;first、last获取分组首尾元素;kurtosis、skewness计算峰态和偏度;max、min、sum分别求最大值、最小值和求和;stddev、stddev_samp、stddev_pop计算样本/总体标准差;var_pop、var_samp、variance计算总体/样本方差。
集合函数处理数组或映射类型数据。array_contains检查数组是否包含指定元素;explode将数组或映射展开为多行;explode_outer在空值时展开为null;posexplode、posexplode_outer带位置索引展开;from_json、to_json解析或生成JSON字符串;get_json_object、json_tuple提取JSON字段;map_keys、map_values返回映射的键或值;size计算数组或映射长度;sort_array对数组排序。
时间函数处理日期和时间。add_months在日期上增减月份;date_add、date_sub增减天数;datediff计算两日期间隔天数;current_date、current_timestamp获取当前日期和时间戳。
数学函数执行数学运算。abs取绝对值;ceil、floor向上/向下取整;log、log10、log2计算对数;pow计算幂次;round四舍五入;sqrt计算平方根;sin、cos、tan等三角函数;bin将数字转为二进制字符串;hex、unhex处理十六进制转换。
混合函数提供通用逻辑支持。coalesce返回第一个非空值;if、when实现条件判断;greatest、least返回最大/最小值;lit将常量转为列;md5、sha、sha1计算哈希值;rand、randn生成随机数;monotonicallyIncreasingId生成递增ID;isnull、isnotnull检查空值。
字符串函数操作字符串数据。concat、concat_ws拼接字符串;length计算长度;lower、upper转换大小写;trim、ltrim、rtrim去除空格;substring截取子串;regexp_extract、regexp_replace正则匹配和替换;split按分隔符拆分字符串;translate字符替换;levenshtein计算编辑距离。
窗口函数基于窗口分区计算。rowNumber为每行分配唯一序号;rank、denseRank计算排名(后者无间隔);lead、lag访问前后行值;ntile将数据分桶;percentRank计算百分比排名;cumeDist计算累积分布。
其他函数特殊场景函数。count_min_sketch用于基数估计;cube、rollup实现多维聚合;grouping_id返回分组ID;max_by、min_by按某列最大/最小值返回对应值。