Hive Data根据时间戳选择最新值

吉加沙

我有一个包含以下各列的表。

C1,C2,Process TimeStamp,InsertDateTimeStamp
p1,v1,2014-01-30 12:15:23,2013-10-01 05:34:23 
p1,v2,2014-01-31 05:11:34,2013-12-01 06:12:31 
p1,v3,2014-01-31 07:16:05,2012-09-01 07:45:20 
p2,v4,2014-02-01 09:22:52,2013-12-01 06:12:31 
p2,v5,2014-02-01 09:22:52,2012-09-01 07:45:20

现在,我想基于Latest获取每个主键的唯一行Process TimeStamp

如果Process TimeStamp相同,InsertDateTimeStamp则应选择最新的行

所以,我的结果应该是。

p1,v3,2014-01-31 07:16:05,2012-09-01 07:45:20 
p2,v4,2014-02-01 09:22:52,2013-12-01 06:12:31

如何通过HiveQL实现这一目标?

我目前正在使用配置单元0.10。我不能将子查询与IN或EXISTS一起使用。

谢谢。

乔·克
select C1, s.C2, s.ProcessTimeStamp, s.InsertDateTimeStamp from (
  select C1, max(named_struct('unixtime', unix_timestamp(ProcessTimeStamp, 'yyyy-MM-dd HH:mm:ss'), 'C2', C2, 'ProcessTimeStamp', ProcessTimeStamp, 'InsertDateTimeStamp', InsertDateTimeStamp)) as s
  from my_table group by C1
) t;

进行结构的最大值按第一个字段进行比较,然后按第二个字段进行比较,依此类推。因此,如果将所有内容一起进行结构化(首先使用已解析的时间戳记值),则会得到一个代表该行的结构。然后只需通过选择各个字段来取消构造它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hive:时间戳间隔

来自分类Dev

在Hive中转换时间戳

来自分类Dev

Hive 中的时间戳分区

来自分类Dev

sqoop 将时间戳添加到 hive 分区值

来自分类Dev

根据最新时间戳选择记录

来自分类Dev

根据列选择最新的时间戳

来自分类Dev

HIVE转换unix时间戳进行计算

来自分类Dev

计算分区HIVE中行的时间戳差异

来自分类Dev

Hive:如何转换毫秒时间戳?

来自分类Dev

Hive 嵌套选择语句

来自分类Dev

SQL Hive 根据列值添加列

来自分类Dev

在Hive中选择中选择

来自分类Dev

如何在Hive中添加时间戳列

来自分类Dev

如何在Hive表中插入时间戳?

来自分类Dev

Impala时间戳与Hive不匹配-时区问题?

来自分类Dev

在Hive中将字符串转换为时间戳

来自分类Dev

date_add用于Hive中的时间戳

来自分类Dev

如何在Hive中启用时间戳

来自分类Dev

如何在Hive中添加时间戳列

来自分类Dev

如何在Hive表中插入时间戳?

来自分类Dev

Hive-以定义的格式提取时间戳和日期

来自分类Dev

在 hive 中需要“MMM-yyyy”格式的时间戳

来自分类Dev

在Hive中查询地图值

来自分类Dev

在Hive中处理NULL值

来自分类Dev

在Hive中截断日期值

来自分类Dev

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

来自分类Dev

选择MySQL数据并根据时间戳列设置变量的值

来自分类Dev

SQL JOIN-根据ID和时间戳选择最新的时间间隔

来自分类Dev

根据数值条件重新编码HIVE中的值