如何按降序连接 HIVE 中具有相同主键的所有值?
我正在使用 HIVE,我有一个这样的表:
S.no | ID | application_num | f_name | l_name | Primary Key |
---|---|---|---|---|---|
1 | 123 | 202201A1 | akhil | yadav | 123~&~akhil~&~yadav |
2 | 123 | 202202A2 | akhil | yadav | 123~&~akhil~& ;~亚达夫 |
3 | 123 | 202203A2 | 阿基尔 | ·亚达夫 | 123~&~akhil~&~yadav |
4 | 987 | 202201B8 | 安基特·亚达夫 | 987 | ~&~ankit~&~yadav |
5 | 987 | 202203B19 | 安基特· | 亚达夫 | 987~&~ankit~&~yadav |
6 | 987 | 202208B34 | ankit | yadav | 987~&~ankit~&~yadav |
我想将同一primary_key 的所有applicant_num 连接成一个字符串,以便它们保持降序(最后一个申请应该排在前面)。
这是我尝试过的:
select
concat_ws('~', collect_set(applicant_num)), primary_key
from
(select *
from table
order by applicant_num desc)
group by
primary_key
使用此查询我得到如下结果:
applicant_num | Primary Key |
---|---|
202203A2~202201A1~202202A2 | 123~&~akhil~&~yadav |
202203B19~202208B34~202201B8 | 987~&~ankit~& 〜亚达夫 |
而我想要的是
applicant_num | Primary Key |
---|---|
202203A2~202202A2~202201A1 | 123~&~akhil~&~yadav |
202208B34~202203B19~202201B8 | 987~&~ankit~&~yadav |
连接不保持降序。
我尝试过
select
concat_ws('~', sort_array(collect_set(applicant_num))), primary_key
from
(select *
from table
order by applicant_num desc)
group by
primary_key
,但是 sort_array
按升序返回数组,并且无法按降序排序。
有没有办法将所有applicant_num连接在一个字符串中作为主键,同时保持applicant_num的降序排列?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
array_sort 始终按上升顺序排序(羞耻)。
幸运的是, 确实支持它(有点)。因此,尽管表达不必要,但这就是您要寻找的
PySpark API of
array_sort
always sorting in ascending order (shame).Luckily, Spark SQL API of
array_sort
does support it (sort of). So despite the unnecessary lengthy expression, this is what you're looking forsort_array
也可以按降序
顺序排序,请参考此处sort_array
can also be sorted indescending
order, Please refer to here