Создать воронку с именами и параметрами событий в BigQuery (с данными из Firebase Analytics) - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть последовательность первых 20 событий, следующих за событием first_open, но он возвращает только event_name, что является проблемой, потому что большинство из них являются событиями screen_view, где фактическое имя экрана является параметром события. Можно ли как-нибудь получить имена событий для некоторых шагов последовательности и определенный параметр события (называемый firebase_screen) для событий screen_view?

Это запрос на данный момент:

SELECT 
  SUM(user_first_open) as first_open_events_count, SUM(user_uninstall) as uninstall_events_count, COUNT(*) as sequence_count,
  event0, event1, event2, event3, event4, event5, event6, event7, event8, event9, 
  event10, event11, event12, event13, event14, event15, event16, event17, event18, event19
FROM 
  (
  SELECT 
    event_timestamp, user_pseudo_id,
    MIN(event_timestamp) OVER (PARTITION BY user_pseudo_id) as first_user_event_timestamp,
    MAX(CASE WHEN event_name = 'app_remove' THEN 1 ELSE 0 END) OVER (PARTITION BY user_pseudo_id) as user_uninstall,
    MAX(CASE WHEN event_name = 'first_open' THEN 1 ELSE 0 END) OVER (PARTITION BY user_pseudo_id) as user_first_open,
    event_name as event0,
    LEAD(event_name, 1) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event1,
    LEAD(event_name, 2) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event2,
    LEAD(event_name, 3) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event3,
    LEAD(event_name, 4) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event4,
    LEAD(event_name, 5) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event5,
    LEAD(event_name, 6) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event6,
    LEAD(event_name, 7) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event7,
    LEAD(event_name, 8) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event8,
    LEAD(event_name, 9) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event9,
    LEAD(event_name, 10) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event10,
    LEAD(event_name, 11) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event11,
    LEAD(event_name, 12) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event12,
    LEAD(event_name, 13) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event13,
    LEAD(event_name, 14) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event14,
    LEAD(event_name, 15) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event15,
    LEAD(event_name, 16) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event16,
    LEAD(event_name, 17) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event17,
    LEAD(event_name, 18) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event18,
    LEAD(event_name, 19) OVER (PARTITION BY user_pseudo_id ORDER BY event_timestamp) as event19
  FROM `data_set.events_*`
  WHERE
    event_name not in ('user_engagement', 'firebase_campaign', 'session_start')
  ORDER BY user_pseudo_id, event_timestamp
  )
WHERE 
  event_timestamp = first_user_event_timestamp
AND
  event0 = 'first_open'
GROUP BY 
  event0, event1, event2, event3, event4, event5, event6, event7, event8, event9, 
  event10, event11, event12, event13, event14, event15, event16, event17, event18, event19
ORDER BY sequence_count DESC
...