Длина сеанса для каждого сеанса из Firebase в BigQuery - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь написать SQL-запрос в BigQuery, чтобы получить продолжительность сеанса для каждого сеанса из Firebase.

Использование первого и второго ответа от этот вопрос Мне удалось создать следующий запрос SQL:

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

SELECT user_id, sess_id, MIN(min_time) sess_start, MAX(max_time) sess_end, COUNT(*) records, MAX(sess_id) OVER(PARTITION BY user_id) total_sessions,
   (ROUND((MAX(max_time)-MIN(min_time))/(1000*1000),1)) sess_length_seconds
FROM (
  SELECT *, SUM(session_start) OVER(PARTITION BY user_id ORDER BY min_time) sess_id
  FROM (
    SELECT *, IF(
                previous IS null 
                OR (min_time-previous)>(20*60*1000*1000), 1, 0) session_start 
    FROM (
        SELECT *, LAG(max_time, 1) OVER(PARTITION BY user_id ORDER BY max_time) previous
        FROM (SELECT user_id, MIN(event_timestamp) AS min_time, MAX(event_timestamp) AS max_time
        FROM `dataset_name.table_name`
         GROUP BY user_id)
      )
    )
  )
GROUP BY 1, 2
ORDER BY 1, 2

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

снимок экрана результатов

Буду признателен за любую помощь, чтобы получить истинную продолжительность сеанса для каждого сеанса!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...