HIVE - 列更改的增量值

时间:2018-06-08 01:25:37

标签: hive window row partitioning emr

我基本上只是想为旅程添加一个带有唯一标识符的列。我有一张看起来与此类似的表:

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

要注意事项

  • 如果使用窗口分析函数,我不会对任何内容进行分区。我希望这能覆盖整个表格(大约30万行)。
  • 通过为整个表添加row_counter(rowid)然后执行以下操作,我能够在Hortonworks Ambari VM上运行此工作:

    SUM(IF(newtrip,1,0))OVER(按rowid排序)作为journeyID

但是当在AWS EMR中的集群中运行EXACT相同的代码时,添加行ID似乎会弄乱其他列的顺序,并且我搞砸了结果。

当然有一种简单的方法可以做到这一点吗?

0 个答案:

没有答案