eager-musician-86191
09/11/2025, 7:16 PMeager-musician-86191
09/11/2025, 7:22 PMstrong-mouse-55694
09/11/2025, 8:52 PMeager-musician-86191
09/12/2025, 2:56 AMWITH purchases AS (
SELECT
e.user_pseudo_id AS user_id,
DATETIME(TIMESTAMP_MICROS(e.event_timestamp), "America/New_York") AS timestamp,
COALESCE((
SELECT ep.value.double_value
FROM UNNEST(e.event_params) ep
WHERE ep.key = "coupon_value"
), 0.0) AS coupon_value,
e.items AS items
FROM
make-my-freshener.analytics_342944115.events_* e
WHERE
e.event_name = 'purchase'
)
SELECT
p.user_id,
p.timestamp,
SUM(
SAFE_CAST(item.quantity AS INT64) * SAFE_CAST(item.price AS FLOAT64)
) - p.coupon_value AS value
FROM
purchases p,
UNNEST(p.items) AS item
GROUP BY
p.user_id,
p.timestamp,
p.coupon_value
ORDER BY
p.timestamp DESC
Metric "Purchases": Counts the number of the purchases
Query:
SELECT
user_pseudo_id AS user_id,
DATETIME(TIMESTAMP_MICROS(event_timestamp), "America/New_York") AS timestamp,
1 AS value
FROM
``make-my-freshener.analytics_342944115.events_*``
WHERE
event_name = 'purchase'eager-musician-86191
09/12/2025, 2:56 AMstrong-mouse-55694
09/12/2025, 3:07 PMeager-musician-86191
09/12/2025, 9:05 PM-- Purchases revenue (revenue)
WITH
__rawExperiment AS (
SELECT
COALESCE(t.user_id, t.user_pseudo_id) AS user_id,
TIMESTAMP_MICROS(t.event_timestamp) AS timestamp,
(
SELECT
ep.value.string_value
FROM
UNNEST (t.event_params) ep
WHERE
ep.key = 'experiment_id'
) AS experiment_id,
(
SELECT
<http://ep.value.int|ep.value.int>_value
FROM
UNNEST (t.event_params) ep
WHERE
ep.key = 'variation_id'
) AS variation_id
FROM
``make-my-freshener`.analytics_342944115.events_* AS t`
WHERE
t.event_name = 'experiment_viewed'
),
__experimentExposures AS (
-- Viewed Experiment
SELECT
e.user_id as user_id,
cast(e.variation_id as string) as variation,
CAST(e.timestamp as DATETIME) as timestamp
FROM
__rawExperiment e
WHERE
e.experiment_id = 'quantity-field-version'
AND e.timestamp >= '2025-08-06 16:57:11'
AND e.timestamp <= '2025-09-12 18:47:28'
),
__experimentUnits AS (
-- One row per user
SELECT
e.user_id AS user_id,
(
CASE
WHEN count(distinct e.variation) > 1 THEN '__multiple__'
ELSE max(e.variation)
END
) AS variation,
MIN(e.timestamp) AS first_exposure_timestamp
FROM
__experimentExposures e
GROUP BY
e.user_id
),
__distinctUsers AS (
SELECT
user_id,
variation,
first_exposure_timestamp AS timestamp,
date_trunc(first_exposure_timestamp, DAY) AS first_exposure_date
FROM
__experimentUnits
),
__metric as ( -- Metric (Purchases revenue)
SELECT
user_id as user_id,
m.value as value,
CAST(m.timestamp as DATETIME) as timestamp
FROM
(
WITH
purchases AS (
SELECT
e.user_pseudo_id AS user_id,
DATETIME(
TIMESTAMP_MICROS(e.event_timestamp),
"America/New_York"
) AS timestamp,
COALESCE(
(
SELECT
ep.value.double_value
FROM
UNNEST (e.event_params) ep
WHERE
ep.key = "coupon_value"
),
0.0
) AS coupon_value,
e.items AS items
FROM
``make-my-freshener.analytics_342944115.events_*` e`
WHERE
e.event_name = 'purchase'
)
SELECT
p.user_id,
p.timestamp,
SUM(
SAFE_CAST(item.quantity AS INT64) * SAFE_CAST(item.price AS FLOAT64)
) - p.coupon_value AS value
FROM
purchases p,
UNNEST (p.items) AS item
GROUP BY
p.user_id,
p.timestamp,
p.coupon_value
ORDER BY
p.timestamp DESC
) m
WHERE
m.timestamp >= '2025-08-06 16:57:11'
AND m.timestamp <= '2025-09-18 18:47:28'
),
__denominator0 as ( -- Metric (Purchases)
SELECT
user_id as user_id,
m.value as value,
CAST(m.timestamp as DATETIME) as timestamp
FROM
(
SELECT
user_pseudo_id AS user_id,
DATETIME(
TIMESTAMP_MICROS(event_timestamp),
"America/New_York"
) AS timestamp,
1 AS value
FROM
``make-my-freshener.analytics_342944115.events_*``
WHERE
event_name = 'purchase'
) m
WHERE
m.timestamp >= '2025-08-06 16:57:11'
AND m.timestamp <= '2025-09-18 18:47:28'
),
__userMetricJoin as (
SELECT
d.variation AS variation,
d.user_id AS user_id,
(
CASE
WHEN m.timestamp >= d.timestamp
AND m.timestamp <= DATETIME_ADD(d.timestamp, INTERVAL 72 HOUR) THEN m.value
ELSE NULL
END
) as value
FROM
__distinctUsers d
LEFT JOIN __metric m ON (m.user_id = d.user_id)
),
__userMetricAgg as (
-- Add in the aggregate metric value for each user
SELECT
umj.variation AS variation,
umj.user_id,
SUM(COALESCE(value, 0)) as value
FROM
__userMetricJoin umj
GROUP BY
umj.variation,
umj.user_id
),
__userDenominatorAgg AS (
SELECT
d.variation AS variation,
d.user_id AS user_id,
SUM(COALESCE(value, 0)) as value
FROM
__distinctUsers d
JOIN __denominator0 m ON (m.user_id = d.user_id)
WHERE
m.timestamp >= d.timestamp
AND m.timestamp <= DATETIME_ADD(d.timestamp, INTERVAL 72 HOUR)
GROUP BY
d.variation,
d.user_id
)
-- One row per variation/dimension with aggregations
SELECT
m.variation AS variation,
COUNT(*) AS users,
SUM(COALESCE(m.value, 0)) AS main_sum,
SUM(POWER(COALESCE(m.value, 0), 2)) AS main_sum_squares,
SUM(COALESCE(d.value, 0)) AS denominator_sum,
SUM(POWER(COALESCE(d.value, 0), 2)) AS denominator_sum_squares,
SUM(COALESCE(d.value, 0) * COALESCE(m.value, 0)) AS main_denominator_sum_product
FROM
__userMetricAgg m
LEFT JOIN __userDenominatorAgg d ON (d.user_id = m.user_id)
GROUP BY
m.variationstrong-mouse-55694
09/12/2025, 9:27 PMeager-musician-86191
09/24/2025, 6:16 AMeager-musician-86191
09/24/2025, 6:27 AMeager-musician-86191
09/24/2025, 6:27 AMstrong-mouse-55694
09/24/2025, 1:36 PM