Я просто пытаюсь добавить столбец с уникальным идентификатором для путешествия.У меня есть таблица, которая выглядит примерно так:
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 миллионов строк).
Я смог заставить это работать на моей виртуальной машине Hortonworks Ambari, добавив row_counter (rowid) для всей таблицы, а затем выполнивчто-то вроде:
СУММА (ЕСЛИ (newtrip, 1, 0)) ПЕРЕВЕРНУТЬ (упорядочить по rowid) как travelID
Но при запускеТОЧНО тот же код в кластере в AWS EMR, добавление идентификатора строки, кажется, портит порядок других столбцов, и я получаю испорченные результаты.
Конечно, есть простой способ сделать это?