配置单元-列更改时的增量值

ahy6op9u  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(240)

我只是在尝试添加一个列,其中包含一个旅程的唯一标识符。我有一张类似的table:

Time                id  station     newtrip
2017-11-15 16:45    100 St.George   TRUE
2017-11-15 16:46    100 Bloor       FALSE
2017-11-15 16:47    110 Wellesley   TRUE
2017-11-15 16:48    110 Wellesley   FALSE
2017-11-15 16:49    200 Dundas      TRUE
2017-11-15 16:55    200 College     FALSE
2017-11-15 16:56    200 Union       FALSE
2017-11-15 17:51    200 Union       TRUE
2017-11-15 17:52    200 St.Andrew   FALSE

我所要做的就是每次最后一列显示true时递增一个计数器。所以结果应该是这样的:

Time                id  station     newtrip journeyID
2017-11-15 16:45    100 St.George   TRUE    1
2017-11-15 16:46    100 Bloor       FALSE   1
2017-11-15 16:47    110 Wellesley   TRUE    2
2017-11-15 16:48    110 Wellesley   FALSE   2
2017-11-15 16:49    200 Dundas      TRUE    3
2017-11-15 16:55    200 College     FALSE   3
2017-11-15 16:56    200 Union       FALSE   3
2017-11-15 17:51    200 Union       TRUE    4
2017-11-15 17:52    200 St.Andrew   FALSE   4

有几件事需要注意
如果使用窗口分析函数,我不会对任何东西进行分区。我希望这个能覆盖整个table(大约30毫升行)。
我可以在hortonworks ambari vm上实现这一点,方法是为整个表添加一个行计数器(rowid),然后执行以下操作:
sum(if(newtrip,1,0))over(order by rowid)as journeyid
但是当在aws emr的集群中运行完全相同的代码时,添加一个行id似乎会打乱其他列的顺序,结果会变得一团糟。
当然有一个简单的方法可以做到这一点?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题