У меня есть таблица, которая выглядит следующим образом:
Row | Fullvisitorid | Visitid | New_Session_Flag
1 | A | 111 | 1
2 | A | 120 | 0
3 | A | 128 | 0
4 | A | 133 | 0
5 | A | 745 | 1
6 | A | 777 | 0
7 | B | 388 | 1
8 | B | 401 | 0
9 | B | 420 | 0
10 | B | 777 | 1
11 | B | 784 | 0
12 | B | 791 | 0
13 | B | 900 | 1
14 | B | 904 | 0
Что я хочу сделать, если это первая строка для fullvisitorid, то пометьте поле как 1, в противном случае используйте вышеуказанную строку в качестве значение, но если new_session_flag = 1, то используйте вышеприведенную строку плюс 1, пример вывода, который я ищу ниже:
Row | Fullvisitorid | Visitid | New_Session_Flag | Rank_Session_Order
1 | A | 111 | 1 | 1
2 | A | 120 | 0 | 1
3 | A | 128 | 0 | 1
4 | A | 133 | 0 | 1
5 | A | 745 | 1 | 2
6 | A | 777 | 0 | 2
7 | B | 388 | 1 | 1
8 | B | 401 | 0 | 1
9 | B | 420 | 0 | 1
10 | B | 777 | 1 | 2
11 | B | 784 | 0 | 2
12 | B | 791 | 0 | 2
13 | B | 900 | 1 | 3
14 | B | 904 | 0 | 3
Как видите:
Строка 1 равна 1, потому что это первый раз, когда fullvisitorid A появляется
Строка 2 это 1, потому что это не первый раз, когда fullvisitorid A появляется и new_session_flag <> 1, поэтому он использует вышеуказанную строку (т.е. 1)
Строка 5 равна 2, потому что это не первый раз, когда fullvisitorid A появляется и new_session_Flag = 1, поэтому он использует вышеуказанную строку (т.е. 1) плюс 1
Строка 7 равна 1, потому что это первый раз, когда появляется fullvisitorid B
et c.
Я считаю, что это можно сделать с помощью retain
оператор в SAS, но есть ли эквивалент в Google BigQquery?
Ho пожалуй, вышеупомянутое имеет смысл, дайте мне знать, если нет.
Заранее спасибо