Рассчитайте разницу в часах между датой первой транзакции и датой первого сеанса того же посетителя.
Привет!
Мне нужно рассчитать разницу в часахМежду первой транзакцией и датой первого сеанса того же посетителя.
Сейчас у меня есть таблица только с посетителями, совершившими покупки, и у меня уже есть Time_Start_session, но я не знаю, какполучить время первой транзакции ...
Я думал, в первую очередь, сделать фильтр в транзакцииUserCount = 1, но это дает мне ошибку нераспознанного имени.А также используйте поле даты, чтобы получить дату и час этих обращений, которые будут содержать только первую транзакцию.Но у меня есть другая проблема, я не знаю, как преобразовать дату поля в метку времени как Time_start_session.
Кстати ,actionUserCount дает нам номер покупки каждого fullvisitorId.
Мой фокус былотдыхайте между этими двумя колонками, но я не получаю результатов ...
Не могли бы вы помочь мне, пожалуйста?
Или, если вы знаете лучший способ сделать этоЯ буду вам так благодарен.
Best,
#standardSQL
SELECT
fullVisitorId,
hit.transaction.transactionId,
hit.transaction.transactionRevenue / 1000000 AS tRevenue,
visitNumber,
hit.hitNumber,
LAG(visitNumber) OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC ) AS prev_session,
IF( LAG(visitNumber) OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC ) IS NULL,
visitNumber,
visitNumber - LAG(visitNumber) OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC )) AS session_diff,
ROW_NUMBER() OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC ) AS transactionUserCount,
TIMESTAMP_SECONDS(visitStartTime) AS Time_Start_Session,
PARSE_TIMESTAMP('%s', date) AS Time_Transaction,
IF( ROW_NUMBER() OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC ) =1,
0,
(visitStartTime - LAG(visitStartTime) OVER(PARTITION BY fullVisitorId ORDER BY visitNumber ASC, hit.hitNumber ASC))/3600) AS Hours_Between_Transaction
FROM
`ads-data-hub-182820.tradeinn_190131.ga_sessions_*`,
UNNEST(hits) AS hit
WHERE
(_TABLE_SUFFIX BETWEEN '20180101'
AND '20191231')
AND hit.transaction.transactionId IS NOT NULL
AND hit.transaction.transactionRevenue IS NOT NULL
ORDER BY
fullVisitorID ASC,
visitNumber ASC,
hit.hitNumber ASC
Time_Start_Session примерно так: 2018-11-09 20:56:49 UTC и Time_Transaction примерно так: 1970-08-22 13:51:49 UTC.Очевидно, что что-то не работает, когда я пытаюсь преобразовать дату в отметку времени