Google Analytics BigQuery получает разницу во времени между двумя разными страницами по пользователю - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь определить разницу во времени между первым этапом оформления заказа и окончательной покупкой. Это мой запрос:

SELECT transactionid1,MAX((t1.hit_moment1-t2.hit_moment2)) as diff_hits,MAX(t2.checkout_step_2) as day  FROM ((SELECT clientId as client1_id,
hits_1.page.pagePath as page_event1,
hits_1.eventInfo.eventAction as action_event1,
hits_1.transaction.transactionId as transactionId1,
TIMESTAMP_SECONDS(visitStartTime) as checkout_step_1,
hits_1.hour as hour1,
hits_1.minute as minute1,
(hits_1.hour*60+hits_1.minute) as hit_moment1
from `616180.ga_sessions_*`  ,
UNNEST(hits) as hits_1 where hits_1.page.pagePath like '%/buy1/suscription%' and  hits_1.eventInfo.eventAction="Transaction" and hits_1.transaction.transactionId is not null)t1 INNER JOIN (SELECT clientId as client2_id,
hits_2.page.pagePath as page_event2,
hits_2.eventInfo.eventAction as action_event2,
TIMESTAMP_SECONDS(visitStartTime) as checkout_step_2,
hits_2.hour as hour2,
hits_2.minute as minute2,
(hits_2.hour*60+hits_2.minute) as hit_moment2
from `616180.ga_sessions_*` ,UNNEST(hits) as hits_2 where hits_2.page.pagePath like '%/buy4/suscription%' and  hits_2.eventInfo.eventAction="Checkout" )t2 on t1.client1_id=t2.client2_id) where (t1.hit_moment1-t2.hit_moment2)>0 and (t1.hit_moment1-t2.hit_moment2)<180 group by transactionId1 order by transactionid1 

Где pagePath содержит / buy1 / suscription представляет событие транзакции, а pagePath, равный buy4 / suscription, представляет первый шаг оформления заказа. Я получаю результаты, но многие из них чрезвычайно большие периоды времени. Я сделал ошибку?

Спасибо.

1 Ответ

1 голос
/ 24 февраля 2020

Я не полностью слежу за тем, как выглядят примеры данных, или за точным форматом, который вы хотите получить для набора результатов.

Тем не менее, вы можете использовать агрегирование, чтобы выполнить необходимые вычисления. Далее предполагается, что извлечение производится после транзакции, но оно дает основную идею c:

select s.transaction_id,
       max(hit.hour * 60 + hit.minutes) - min(hit.hour * 60 + hit.minutes) as diff_minute
from `616180.ga_sessions_*` s cross join
     unnest(s.hits) as hit
where (hit.page.pagePath like '%/buy1/suscription%' and  
       hit.eventInfo.eventAction = 'Transaction' or
      ) or
      (hit.page.pagePath like '%/buy4/suscription%' and   
       hit.eventInfo.eventAction = 'Checkout'
      )
group by s.transaction_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...