Skip to content Skip to sidebar Skip to footer

Counting Rows That Had A Previous Event With A Condition In Bigquery

I have a big query table which looks like this: event_date event_timestamp event_name user_pseudo_id 20210207 1612690020556013 purc

Solution 1:

Aggregate twice. Once to user level, where you can ascertain if that user had a trial or not, completed a purchase of note, etc. Then aggregate again to your final results.

WITH
  user_summary
AS
(
  SELECT
    geo.country as country,
    platform,
    event_date,
    pseudo_user_id,
    MAX(CASE WHEN event_name = 'session_start'            THEN 1 ELSE 0 end)   AS `has_session_start`,
    MAX(CASE WHEN event_name = 'purchase_preview_page'    THEN 1 ELSE 0 end)   AS `has_purchase_preview_page`,
    MAX(CASE WHEN event_name = 'purchase_trial_activated' THEN 1 ELSE 0 end)   AS `has_purchase_trial_activated`,
    MAX(CASE WHEN event_name = 'purchase_completed'       THEN 1 ELSE 0 end)   AS `has_purchase_completed`
  FROM
    `project.dataset.*`
  WHERE
    event_date > '20200101'
  GROUP BY
    geo.country,
    platform,
    event_date,
    pseudo_user_id
)
SELECT
  country,
  platform,
  event_date,
  SUM(has_session_start)                                      AS count_session_start,
  SUM(has_purchase_preview_page)                              AS count_purchase_preview_page,
  SUM(has_purchase_trial_activated)                           AS count_purchase_trial_activated,
  SUM(has_purchase_completed)                                 AS count_purchase_completed,
  SUM(has_purchase_trial_activated * has_purchase_completed)  AS count_trial_activated_and_purchased
FROM
  user_summary
GROUP BY
  country,
  platform,
  event_date

Post a Comment for "Counting Rows That Had A Previous Event With A Condition In Bigquery"