【发布时间】:2014-08-26 07:14:47
【问题描述】:
我有一个包含列事件的表。它有 IN 和 OUT 之类的数据。
现在我需要创建两列,其中包含特定 ID 的第一个 IN 和同一 ID 的最后一个 OUT 的时间。
我需要使用具有领先和滞后的窗口功能分区。
我该怎么做?
任何帮助都会很棒!
我必须在 HIVE 中这样做!
【问题讨论】:
标签: hive partition-by
我有一个包含列事件的表。它有 IN 和 OUT 之类的数据。
现在我需要创建两列,其中包含特定 ID 的第一个 IN 和同一 ID 的最后一个 OUT 的时间。
我需要使用具有领先和滞后的窗口功能分区。
我该怎么做?
任何帮助都会很棒!
我必须在 HIVE 中这样做!
【问题讨论】:
标签: hive partition-by
我假设您也有一些日期列(我们称之为dt)。
要获得所有 ID 的先入后出,您需要执行以下操作:
select
id,
min(case when event='IN' then dt end) first_in,
max(case when event='OUT' then dt end) last_out
from table
group by id
【讨论】:
coalesce,在其中放置除 null 以外的其他内容:coalesce(max(case...),'SOMETHING') 或删除 having 中的这些行:having max(case..) is not null