Hive 如何查找特定列的先进先出?
我有一个具有列事件的表。它有输入和输出之类的数据 现在我需要创建两个列,其中第一个列用于特定ID,最后一个列用于相同ID 我需要使用带超前和滞后的按窗口划分函数 我该怎么做 任何帮助都会很好Hive 如何查找特定列的先进先出?,hive,partition-by,Hive,Partition By,我有一个具有列事件的表。它有输入和输出之类的数据 现在我需要创建两个列,其中第一个列用于特定ID,最后一个列用于相同ID 我需要使用带超前和滞后的按窗口划分函数 我该怎么做 任何帮助都会很好 我必须在蜂箱里做这件事 我假设您也有一些日期列(我们称之为dt)。 要获得所有ID的先进先出,您需要执行以下操作: select id, min(case when event='IN' then dt end) first_in, max(case when event='OUT' the
我必须在蜂箱里做这件事 我假设您也有一些日期列(我们称之为
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
你好非常感谢你的意见。。如果我使用此查询,将有空值。。因为并非所有id都有输入和输出值。。您能告诉我如何删除这些空值吗?您可以使用
coalesce
将非空值放在那里:coalesce(max(case…,'something')
或删除having
中的那些行:having max(case…)不为空
,因为某些原因,它不起作用。。。我会给你一个场景。。我需要为某个特定ID找到第一个输入,为同一个会话找到最后一个输出,而不是一天中的最后一个。。这有意义吗?