我有一个包含事件的表(比如x,y,z是随机事件,a,b是我想要跟踪的事件)。如果我找到事件a,我想在当前行和后续行上输出1,如果我找到b,我想在当前行和后续行上输出-1,在我找到任何一个(a或b)之前,我想输出0。如何使用hive(sql)实现这一点?
event | output | ordercol
X 0 1
Y 0 2
Z 0 3
B -1 4
X -1 5
X -1 6
B -1 7
X -1 8
A 1 9
X 1 10
B -1 11
Z -1 12
我知道这可以通过使用连接来实现,但我正在寻找一个更优雅的解决方案(可能使用窗口函数-我尝试过dense\u rank()和row\u count(),但没有成功)
1条答案
按热度按时间nzrxty8p1#
根据本文档,您可以使用
first_value()
还有一些附加逻辑:此功能称为
IGNORE NULLS
在标准和其他数据库中。