我试图使用LAG和LEAD函数从一列中选择超前和滞后值。以下是表格和数据。

hive> select * from foo;
OK
a
1
2
3
4
5
6
7
8
9
Time taken: 0.923 seconds

当我尝试选择超前和滞后值时,抛出以下错误。
hive> select LAG(a, 1) over (order by a) as previous, a, LEAD(a, 1) over (order by a) as next from foo;
FAILED: ParseException line 1:22 missing FROM at '(' near '(' in subquery source
line 1:23 cannot recognize input near 'order' 'by' 'a' in subquery source

如何解决这个问题?

最佳答案

我可以看到语句中缺少“partition by”子句。

从foo中选择Lead(a,1)代替(按a的顺序划分)

仅在表中的一列上运行将不会有用,如果您有更多的列(如日期/时间,类别),它将起作用。

关于hadoop - Apache Hive Windowing函数滞后和提前错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36996774/

10-12 23:24