AI-generated Key Takeaways
-
Accurate calculation of advanced Active View metrics requires querying a union of all three relevant tables.
-
Examples are provided for calculating MRC and GroupM viewability rates by querying a union of three tables with different measurability fields.
-
An example demonstrates how to combine viewability metrics to calculate the number of impressions that were both full-screened and backgrounded.
-
Examples show how to compare measurable and viewable eligible impressions for different format categories, specifically video and display ads.
MRC and GroupM viewability rates
This example shows how to query rates of metrics that have different measurability fields.
-- Write queries as a union of all 3 tables.
WITH
CombinedEvents AS (
SELECT
viewability_metrics,
campaign_id
FROM adh.google_ads_impressions
UNION ALL
SELECT
viewability_metrics,
impression_data.campaign_id
FROM adh.google_ads_active_views
UNION ALL
SELECT
viewability_metrics,
impression_data.campaign_id
FROM adh.google_ads_creative_conversions
),
Metrics AS (
SELECT
campaign_id,
SUM(viewability_metrics.mrc_viewable_impressions.measurable_count)
AS mrc_measurable_impressions,
SUM(viewability_metrics.mrc_viewable_impressions.viewable_count)
AS mrc_viewable_impressions,
SUM(viewability_metrics.groupm_viewable_impressions.measurable_count)
AS groupm_measurable_impressions,
SUM(viewability_metrics.groupm_viewable_impressions.viewable_count)
AS groupm_viewable_impressions
FROM
CombinedEvents
GROUP BY
campaign_id
)
SELECT
campaign_id,
SAFE_DIVIDE(mrc_viewable_impressions, mrc_measurable_impressions)
AS mrc_viewability_rate,
SAFE_DIVIDE(groupm_viewable_impressions, groupm_measurable_impressions)
AS groupm_viewability_rate
FROM
Metrics
Combine viewability metrics
This example calculates the number of impressions that were both full-screened and backgrounded at some point during the view. This metric can only be calculated by combining 2 existing metrics.
-- Write queries as a union of all 3 tables.
WITH
CombinedEvents AS (
SELECT
impression_id,
campaign_id,
viewability_metrics,
TRUE AS is_impression
FROM adh.google_ads_impressions
UNION ALL
SELECT
impression_id,
impression_data.campaign_id,
viewability_metrics,
FALSE AS is_impression
FROM adh.google_ads_active_views
UNION ALL
SELECT
impression_id,
impression_data.campaign_id,
viewability_metrics,
FALSE AS is_impression
FROM adh.google_ads_creative_conversions
),
AnnotatedImpressions AS (
SELECT
campaign_id,
LOGICAL_OR(is_impression) AS is_valid_impression,
SUM(viewability_metrics.active_view_plus_metrics.measurable_count) > 0
AS is_av_plus_measurable,
SUM(viewability_metrics.active_view_plus_metrics.background_count) > 0
AS was_backgrounded,
SUM(viewability_metrics.active_view_plus_metrics.fullscreen_count) > 0
AS was_fullscreened
FROM
CombinedEvents
GROUP BY
impression_id,
campaign_id
HAVING
is_valid_impression
)
SELECT
campaign_id,
COUNT(*) AS total_impressions,
COUNTIF(is_av_plus_measurable) AS av_plus_measurable_impressions,
COUNTIF(was_backgrounded AND was_fullscreened) AS fullscreen_and_backgrounded_impressions
FROM
AnnotatedImpressions
GROUP BY
campaign_id
Compare measurable and viewable eligible impressions for different format categories
Video-measured ads
-- Write queries as a union of all 3 tables.
WITH
VideoImpressions AS (
SELECT impression_id
FROM adh.google_ads_impressions
WHERE format_category = 'VIDEO'
),
CombinedEvents AS (
SELECT
impression_id,
campaign_id,
viewability_metrics,
TRUE AS is_impression
FROM adh.google_ads_impressions
WHERE format_category = 'VIDEO'
UNION ALL
SELECT
Im.impression_id,
Av.impression_data.campaign_id,
Av.viewability_metrics,
FALSE AS is_impression
FROM VideoImpressions AS Im
INNER JOIN adh.google_ads_active_views AS Av
USING (impression_id)
UNION ALL
SELECT
Im.impression_id,
Cc.impression_data.campaign_id,
Cc.viewability_metrics,
FALSE AS is_impression
FROM VideoImpressions AS Im
INNER JOIN adh.google_ads_creative_conversions AS Cc
USING (impression_id)
)
SELECT
campaign_id,
COUNTIF(is_impression) AS total_impressions,
SUM(viewability_metrics.mrc_viewable_impressions.measurable_count)
AS mrc_measurable_impressions,
SUM(viewability_metrics.mrc_viewable_impressions.viewable_count)
AS mrc_viewable_impressions
FROM
CombinedEvents
GROUP BY
campaign_id;
Display-measured ads
-- Write queries as a union of all 3 tables.
WITH
DisplayImpressions AS (
SELECT impression_id
FROM adh.google_ads_impressions
WHERE format_category = 'DISPLAY'
),
CombinedEvents AS (
SELECT
impression_id,
campaign_id,
viewability_metrics,
TRUE AS is_impression
FROM adh.google_ads_impressions
WHERE format_category = 'DISPLAY'
UNION ALL
SELECT
Im.impression_id,
Av.impression_data.campaign_id,
Av.viewability_metrics,
FALSE AS is_impression
FROM DisplayImpressions AS Im
INNER JOIN adh.google_ads_active_views AS Av
USING (impression_id)
UNION ALL
SELECT
Im.impression_id,
Cc.impression_data.campaign_id,
Cc.viewability_metrics,
FALSE AS is_impression
FROM DisplayImpressions AS Im
INNER JOIN adh.google_ads_creative_conversions AS Cc
USING (impression_id)
)
SELECT
campaign_id,
COUNTIF(is_impression) AS total_impressions,
SUM(viewability_metrics.mrc_viewable_impressions.measurable_count)
AS mrc_measurable_impressions,
SUM(viewability_metrics.mrc_viewable_impressions.viewable_count)
AS mrc_viewable_impressions
FROM
CombinedEvents
GROUP BY
campaign_id;
Calculate commonly used metrics
This example calculates a number of commonly used metrics. Download sample code.