Как я могу непрерывно находить группы событий, используя BigQuery? - PullRequest
0 голосов
/ 21 марта 2019

Я использую Firebase Analytics с BigQuery.Предположим, мне нужно дать ваучер пользователям, которые используют сервис каждый день, по крайней мере, 7 дней подряд.Если кто-то будет делиться непрерывно в течение 2 недель, он получит 2 ваучера и т. Д.

Как узнать сегменты непрерывных событий, зарегистрированных в Firebase Analytics?

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

SELECT event.user_id, event.event_date,
MAX((SELECT p.value FROM UNNEST(user_properties) p WHERE p.key='name').string_value)  as name,
MAX((SELECT p.value FROM UNNEST(user_properties) p WHERE p.key='email').string_value ) as email,
SUM((SELECT event_params.value.int_value from event.event_params where event_params.key = 'share_session_length')) as total_share_session_length

FROM `myProject.analytics_183565123.*` as event
where event_name like 'share_end'  
group by user_id,event_date
having total_share_session_length >= 1
order by user_id desc

И это вывод:

enter image description here

1 Ответ

3 голосов
/ 21 марта 2019

Как узнать сегменты непрерывно регистрируемых событий

Ниже приведен пример для BigQuery Standard SQL - надеюсь, что вы сможете применить подход к конкретному варианту использования

#standardSQL
SELECT id, ARRAY_AGG(STRUCT(first_day, days) ORDER BY grp) continuous_groups
FROM (
  SELECT id, grp, MIN(day) first_day, MAX(day) last_day, COUNT(1) days
  FROM (
    SELECT id, day,
      COUNTIF(gap != 1) OVER(PARTITION BY id ORDER BY day) grp
    FROM (
      SELECT id, day,
        DATE_DIFF(day,LAG(day) OVER(PARTITION BY id ORDER BY day), DAY) gap
      FROM (
        SELECT DISTINCT fullVisitorId id, PARSE_DATE('%Y%m%d', t.date) day
        FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*` t
      )
    )
  )
  GROUP BY id, grp
  HAVING days >= 7
)
GROUP BY id
ORDER BY ARRAY_LENGTH(continuous_groups) DESC

с результатом

enter image description here

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