Я пытаюсь написать 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
Проблема, с которой я сталкиваюсь, заключается в том, что, похоже, получается только получение общей длины для каждого пользователя, а не общей длины для каждого сеанса.
снимок экрана результатов
Буду признателен за любую помощь, чтобы получить истинную продолжительность сеанса для каждого сеанса!