Hive 如何为配置单元中的每个disticnt id选择最新记录?

Hive 如何为配置单元中的每个disticnt id选择最新记录?,hive,Hive,我有一个蜂巢表,看起来像下表 ID | Value | Timestamp (epoch)| Status 1 2300 1516187739 | Active 1 2500 1516187403 | Stopped 1 1800 1516187450 | Stopped 2 1300 1516187730 | Active 2 1500 1516187780 | Active

我有一个蜂巢表,看起来像下表

ID | Value | Timestamp (epoch)| Status
 1   2300      1516187739     | Active
 1   2500      1516187403     | Stopped
 1   1800      1516187450     | Stopped
 2   1300      1516187730     | Active
 2   1500      1516187780     | Active
。我想通过查看状态为活动状态时每个ID的时间戳来获取最新记录。我希望每个ID只有一条记录。因此结果如下表所示。我正在寻找一种在配置单元中实现此查询的有效方法

ID | Value | 
 1   2300      
 2   1500      

您可以使用
row\u number()
分析函数来实现此目的

 SELECT a.id, a.VALUE
  FROM (SELECT id,
               VALUE,
               ROW_NUMBER () OVER (PARTITION BY id ORDER BY timestamp DESC)
                  rn
          FROM yourtable) a
 WHERE rn = 1;

您可以使用
row\u number()
分析函数来实现此目的

 SELECT a.id, a.VALUE
  FROM (SELECT id,
               VALUE,
               ROW_NUMBER () OVER (PARTITION BY id ORDER BY timestamp DESC)
                  rn
          FROM yourtable) a
 WHERE rn = 1;

谢谢你的回复!我收到以下错误消息:编译语句时出错:失败:ParseException行1:133无法识别子查询sourceManos中“where”“rn”“=”附近的输入:我无法模拟该问题,因为我没有';我没有配置单元数据库访问权限。语法看起来很好。您可能需要通过反复试验来确定如何稍微更改语法以适合您的配置单元版本。但是使用的逻辑是一样的,我找到了答案。配置单元要求子查询使用别名,我编辑了答案。@Manos:Great。。祝你一切顺利!。我很高兴它帮助了你谢谢你的回复!我收到以下错误消息:编译语句时出错:失败:ParseException行1:133无法识别子查询sourceManos中“where”“rn”“=”附近的输入:我无法模拟该问题,因为我没有';我没有配置单元数据库访问权限。语法看起来很好。您可能需要通过反复试验来确定如何稍微更改语法以适合您的配置单元版本。但是使用的逻辑是一样的,我找到了答案。配置单元要求子查询使用别名,我编辑了答案。@Manos:Great。。祝你一切顺利!。我很高兴这对你有帮助