mysql collect_set_spark sql concat_ws() collect_set() collect_list() 字段值拼接
spark sql collect_set、collect_list 、concat_ws都用来做字段拼接,其实和mysql中的字段拼接函数差不多,请参考Mysql中concat()、concat_ws()和 group_concat() 字段拼接的用法
1.concat_ws()函数
concat_ws()-CONCAT With Separator ,用分隔符来拼接字段
spark中concat_ws()和Mysql中一样,所以不多解释,
看源码/**
* Concatenates multiple input string columns together into a single string column,
* using the given separator.
*使用指定的分隔符将多个列拼接到单个字符串列中
*
* @group string_funcs
* @since 1.5.0
*/
@scala.annotation.varargs
def concat_ws(sep: String, exprs: Column*): Column = withExpr {
ConcatWs(Literal.create(sep, StringType) +: exprs.map(_.expr))
}
2.collect_set和collect_list
collect_set和collect_list,都是将分组后的单个列放到一个集合中
不同的是和java集合一样,Set不能存重复的值,是去重的,而list是不去重的/**
* Aggregate function: returns a list of objects with duplicates.
*聚合函数返回可重复的list对象
* @group agg_funcs
* @since 1.6.0
*/
def collect_list(e: Column): Column = withAggregateFunction { CollectList(e.expr) }
/**
* Aggregate function: returns a set of objects with duplicate elements eliminated.
*聚合函数返回去重后的set对象
* @group agg_funcs
* @since 1.6.0
*/
def collect_set(e: Column): Column = withAggregateFunction { CollectSet(e.expr) }
案例:df.groupBy("age").agg(collect_set("name")).show()
返回结果+---+-----------------+
|age|collect_set(name)|
+---+-----------------+
| 20| [LI, Justin]|
| 19| [Justin]|
| 29| [Michael]|
| 30| [Andy]|
+---+-----------------+
3.联合使用实现分组拼接字段
记得mysql 中的group_concat嘛,collect_list 、concat_ws联合使用就能实现分组拼接的效果sqlContext.sql("select concat_ws(',',collect_set(name)) as names from people group by age").show()
返回结果+---------+---+
| names|age|
+---------+---+
|LI,Justin| 20|
| Justin| 19|
| Michael| 29|
Andy| 30|
+---------+---+
mysql collect_set_spark sql concat_ws() collect_set() collect_list() 字段值拼接相关推荐
- jdbc 3种获得mysql插入数据的自增字段值的方法_JDBC 3种获得mysql插入数据的自增字段值的方法...
JDBC 3种获得mysql插入数据的自增字段值的方法. 1. Retrieving AUTO_INCREMENT Column Values using Statement.getGenerated ...
- Mysql Sql语句令某字段值等于原值加上一个字符串
MySQL连贯字符串不能利用加号(+),而利用concat. 比方在aa表的name字段前加字符'x',利用: update aa set name=concat('x',name); 替换: UPD ...
- Mysql中用SQL增加、删除字段,修改字段名、字段类型、注释,调整字段顺序总结...
转自:http://www.111cn.net/database/mysql/71648.htm 1.增加一个字段 代码如下 复制代码 //增加一个字段,默认为空 alter table user ...
- mysql collect_set_Hive sql 使用group by 字段被限制使用 collect_set/collect_list处理
hive> SELECT userid ,Sequnce ,ActionTime FROM T_BZ_ClientActionLog GROUP BY Sequnce ,ActionTime ...
- spark sql 之 collect_set collect_list 后WrappedArray 取值
示例:demo数据 userId place 1001 北京 1001 上海 spark建立的虚拟表 userPlaceView.根据用户ID进行分组,用collect_set(place)获取pla ...
- mysql 中将表中某一字段值查询出来,更新到另一个字段上的SQL写法
场景:想要将receiveTime的值赋给create_time,此时涉及到同表"自更新"的操作 1.错误示例 update order_info set create_time ...
- jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- SQL 查询整型字段值和十六进制相互转换
数据库中存储是整型字段,有时展示需要转换为十六进制数据显示,这样就方便分析,例如MAC地址,固件版本信息. 1. 使用CONVERT函数 将整型数值转换为十六进制数据 SELECT CONVERT(V ...
- SQL Server 批量更新字段值为ROW_NUMBER()+列名称
摘要:有这样一个需求,需要把数据表中的列名称的数据按行号重新排序并更新一下,这里用到了ROW_NUMBER()函数. 一:需求如下图: 二:通过执行如下sql语句实现了上面的需求,如下: update ...
最新文章
- Neumorphism.io一个神奇的网站,满足各种圆角矩形ICON图表立体化效果要求,这种样式的名称——新拟态
- JCIM| 基于双向RNN的分子生成模型
- 数据中心虚拟化的7大考量要素
- Git复习(四)之解决冲突
- Activity 中的Toast在Activity销毁后报错,解决方法,把context改成应用的
- 入门案例中使用的组件介绍
- indices should be one-based and in ascending order
- linux adc测试程序,基于Qt4.7的ADC测试程序
- 操作系统饥饿现象_操作系统心得体会
- Python 实现网络爬虫小程序
- Must、should、have to、can 和 need to的否定句_56
- 三星Galaxy S21 Ultra相机再升级:1.08亿主摄+全新传感器夜景更强
- MySQL-事务的实现-redo
- 一个我自己建的程序员资料分享站
- 千军万马跑协程goroutine
- poj 3074 Sudoku
- AppLinks使用详解
- 搭建php环境,更换织梦服务器
- 回弹强度记录表填写_混凝土回弹强度记录表格
- 电子海图的航线多尺度生成方法
热门文章
- java tomcat 日志分析工具_tomcat日志集中采集、分析与展示的几种方法
- 情侣计算器------计算TA的价格
- Java课程设计题目二:保存计算过程的计算器
- K近邻算法--约会网站配对
- springboot+uniapp(vue) 微信公众号h5开发
- multisim怎么设置晶体管rbe_模拟电子电路multisim仿真(很全 很好)
- 【MATLAB App Designer】实例:调用simulink模型并打包为独立程序
- JS校验正整数(不包含0)|| 校验正数(不包含0)
- delphi 中 delete的用法
- 不用代码,从搜索数据中解读星巴克“猫爪杯”如何挠你的心