У меня есть входной набор данных, подобный следующему фиктивного набора данных:BigQuery/SQL: набор данных преобразования с помощью SELF JOIN и LAG
date time userid channel transaction
20161012 12:00:00 1 seo 0
20161018 16:50:00 1 referral 1
20161011 09:20:00 2 sea 0
20161020 12:20:00 2 direct 0
20161020 20:40:00 2 facebook 0
20161021 11:35:00 2 direct 1
20161019 01:05:00 3 seo 0
20161020 24:20:00 3 sea 1
20161021 06:20:00 4 direct 1
Я хотел бы получить следующий выходной набор данных:
userid channel1 channel2
1 seo referral
1 referral transaction
2 sea direct
2 direct facebook
2 facebook direct
2 direct transaction
3 seo sea
3 sea transaction
4 direct transaction
На словах я хочу создать набор данных, который записывает все шаги между каналами, которые следуют друг за другом в поездке клиента. Обозначим, что транзакция выходного datet рассматривается как канал.
Я знаю, что я мог бы быть в состоянии достичь что-то вроде этого с помощью JOIN
(на себя) и LAG
, но я не могу заставить его работать ...
Любой, кто знает простое решение, чтобы получить это выходной набор данных?
Заранее благодарен!
Важно на SO - вы можете «пометить принятый ответ», используя отметку слева от опубликованного ответа ниже голосования. См. Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235, почему это важно! Также важно «голосовать за ответ». Голосовые ответы полезны. Есть еще ... Вы можете проверить, что делать, когда кто-то отвечает на ваш вопрос - http://stackoverflow.com/help/someone-answers. –
Спасибо @MikhailBerlyant за ваши отзывы. Хотя, я не использовал ваш ответ для своего окончательного решения. Вот почему я не принял ваш ответ. – Tomas