Преобразуйте поле «дата» в метку времени в bigQuery - набор данных Google Analytics - PullRequest
0 голосов
/ 12 февраля 2019

Рассчитайте разницу в часах между датой первой транзакции и датой первого сеанса того же посетителя.

Привет!

Мне нужно рассчитать разницу в часахМежду первой транзакцией и датой первого сеанса того же посетителя.

Сейчас у меня есть таблица только с посетителями, совершившими покупки, и у меня уже есть 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.Очевидно, что что-то не работает, когда я пытаюсь преобразовать дату в отметку времени

...