如何在组内按顺序排序在Hive中额外使用concate\u ws和collect\u set

pftdvrlh  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(449)

我有这种格式的数据,出于安全考虑,我把**放在短语栏中。这基本上是党的一句话。

这是一个特定id的有序对话。
我想达到这样的结果:再次
*而不是句子。

我使用的查询可以实现以下目标:

select tmp.interaction_id,collect_set(tmp.final) from
(select interaction_id,concat_ws(':--  ',party,phrase) as 
final,start_offset,end_offset  from aads_piim.A608232_Myvoice_wt_transcript
 where interaction_id=26951370
order by start_offset,end_offset) as tmp
group by tmp.interaction_id;

在这里我可以做这件事,因为我排序只有一个id。然后对话是正确的顺序。比如代理和客户序列。我有大约40万张这样的唱片。我想为他们做同样的事。我使用的查询是:

create table aads_piim.a608232_myvoice_transcript_combined as
select tmp.interaction_id,collect_set(tmp.final) as final_trans from
(select interaction_id,concat_ws(':--  ',party,phrase) as 
final,start_offset,end_offset  from aads_piim.A608232_Myvoice_wt_transcript 
order by start_offset,end_offset) as tmp
group by tmp.interaction_id;

但在这里,排序时考虑的是所有ID。我的问题是如何在ids中排序。意味着在本例中,如何按id分组并按特定id的偏移量列排序。

ncgqoxb0

ncgqoxb01#

首先按交互id排序,然后按偏移量排序。

select interaction_id,concat_ws(':--  ',party,phrase) as final,start_offset,end_offset  
from aads_piim.A608232_Myvoice_wt_transcript 
order by interaction_id,start_offset,end_offset

相关问题