Hive如何根据条件组合组内的多个记录

Posted

技术标签:

【中文标题】Hive如何根据条件组合组内的多个记录【英文标题】:Hive how to combine multiple records within a group based on condition 【发布时间】:2019-04-05 12:24:57 【问题描述】:

我有如下数据集。

client-Id   Name    HasCar     HasHome
A01          ABC      Y          N
A01          ABC      N          N
B01          EFG      N          N
B01          EFG      N          Y

从这里我需要为每个客户派生一个单行,无论他有车还是家。预期的输出应如下所示

Client-Id    Name    HasCar     HasHome
A01          ABC      Y          N
B01          EFG      N          Y

这需要使用 Hive-QL 来完成

【问题讨论】:

您也可以向我们展示您的尝试吗? 我尝试了以下 1) 使用带有子查询的 case 语句,但 hive 不支持子查询。 【参考方案1】:

使用 max() 聚合:

select client-Id,Name, max(HasCar) HasCar,  max(HasHome) HasHome
  from your_table 
 group by client-Id,Name

【讨论】:

以上是关于Hive如何根据条件组合组内的多个记录的主要内容,如果未能解决你的问题,请参考以下文章

根据多个筛选条件 - SQL访问排除记录

选择日期范围,根据关闭条件计算范围内的多条记录,按班次分组

如何根据具有特定条件的特定记录的用户权限有效过滤大量记录?

当必须根据条件对记录进行分组时如何选择最多 x 行

Hive:根据查询结果插入多个表

如何从一个表中查找多个列满足不同条件的记录?