collect_list保持顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了collect_list保持顺序相关的知识,希望对你有一定的参考价值。

参考技术A 当需要collect_list(item_id) groupby user_id需要保持item_list的顺序时,用辅助列拼接item_id,sort_array做排序
lpad左补齐相同位数,保证字符串排序不会错

参考博客

如何在 MySQL 中对 concat_ws(',',collect_list(a)) 进行排序?

【中文标题】如何在 MySQL 中对 concat_ws(\',\',collect_list(a)) 进行排序?【英文标题】:How to sort concat_ws(',',collect_list(a)) in MySQL?如何在 MySQL 中对 concat_ws(',',collect_list(a)) 进行排序? 【发布时间】:2021-09-28 10:11:37 【问题描述】:

我有一个包含 2 列时间和文本的表格,我想在其中按时间顺序连接文本。

我presto sql,我可以做ARRAY_AGG(text ORDER BY time),我在MySQL中怎么做? 我发现CONCAT_WS(',', COLLECT_LIST(text)) 可以做部分工作,但不知道如何快速按时间订购。

谢谢。

【问题讨论】:

这里的错误,我希望查询在 SparkSQL 中执行 【参考方案1】:

你会使用:

GROUP_CONCAT(test ORDER BY time)

注意:这会产生一个逗号分隔的字符串,而不是一个数组。

【讨论】:

我可以再问一个问题,我试过了,但我收到了这个错误'org.apache.spark.sql.catalyst.parser.ParseException: mismatched input 'ORDER' Expecting ')' , ','(第 3 行,位置 41)'。我正在使用 SparkSQL,我的代码是 SELECT GROUP_CONCAT(text ORDER BY time ASC) as lst from ... @duoduolikes 。 . .您的问题是:“我怎样才能在 MySQL 中做到这一点?”。这回答了你的问题。

以上是关于collect_list保持顺序的主要内容,如果未能解决你的问题,请参考以下文章

HiveQL collect_list保持顺序小记

PySpark 使用 collect_list 收集不同长度的数组

collect_list 通过保留基于另一个变量的顺序

Groupby 和 collect_list 基于 PySpark 中的另一列维护顺序

在 SQL (Hive) 中使用 collect_list 函数来聚合用户序列

如何在 MySQL 中对 concat_ws(',',collect_list(a)) 进行排序?