sql - 将多行合并为一行
问题描述
我正在尝试通过 pyspark 构建 sql 来实现这一点。目标是将多行组合成单行示例:我想将其转换为
+-----+----+----+-----+
| col1|col2|col3| col4|
+-----+----+----+-----+
|x | y | z |13::1|
|x | y | z |10::2|
+-----+----+----+-----+
到
+-----+----+----+-----------+
| col1|col2|col3| col4|
+-----+----+----+-----------+
|x | y | z |13::1;10::2|
+-----+----+----+-----------+
解决方案
您正在寻找的是此答案的 spark-sql 版本,如下所示:
query = """
select col1,
col2,
col3,
concat_ws(';', collect_list(col4)) as col4
from some_table
group by col1,
col2,
col3
"""
spark.sql(query).show()
#+----+----+----+-----------+
#|col1|col2|col3| col4|
#+----+----+----+-----------+
#| x| y| z|13::1;10::2|
#+----+----+----+-----------+
但是请注意,由于 spark 是分布式的,因此不能保证保持任何特定的顺序,除非您明确指定顺序。
看更多:
推荐阅读
- javascript - 如何设置最小重新加载时间
- python - Plotly:如何为 Plotly 3D Scatter 图形创建自定义悬停标签?
- c - 在复制 wc 命令的 C 程序中使用两个缓冲区
- swift - UICollectionViewCompositionalLayout 水平,使用估计和不水平拥抱时不计算内容的宽度
- c# - 使用 Visual Studio 2019 时的负 Array.Length
- javascript - Node JS - 在对服务器的调用之间保持会话?
- android - 每两天触发一次警报
- mysql - SQL 查询仅显示 28 个预期行中的 14 个
- apostrophe-cms - 在 PHP 页面检查 ApostropheCMS 登录用户
- android - groupie 适配器在应用程序发布中未绑定到 recyclerView,但在调试中工作