unified_insights sein iatz stabiler

This commit is contained in:
2025-11-26 11:30:04 +00:00
parent c0f24715f4
commit a9f6323715

View File

@@ -480,6 +480,22 @@ FROM (
GROUP BY google_account_id, time, customer_currency_code, account_name GROUP BY google_account_id, time, customer_currency_code, account_name
) base; ) base;
DROP VIEW IF EXISTS g_account_insights_by_country CASCADE;
CREATE VIEW g_account_insights_by_country AS
select segments_date as time, customer_id as google_account_id,
g.metrics_clicks as clicks,
g.metrics_impressions as impressions,
g.metrics_cost_micros as cost_micros,
g.metrics_cost_micros / 1000000.0 as cost,
g.metrics_conversions as conversions,
g.metrics_conversions_value as conversion_value,
metrics_interactions as interactions,
m.country_code
from google.geo_view_with_metrics as g join geotargets as m on m.criteria_id =
g.geographic_view_country_criterion_id
order by time;
DROP VIEW IF EXISTS g_account_insights_device CASCADE; DROP VIEW IF EXISTS g_account_insights_device CASCADE;
@@ -581,22 +597,23 @@ DROP VIEW IF EXISTS unified_account_insights CASCADE;
CREATE VIEW unified_account_insights AS CREATE VIEW unified_account_insights AS
SELECT SELECT
g.time, COALESCE(g.time, m.time) as time,
g.google_account_id::varchar as google_account_id, g.google_account_id::varchar as google_account_id,
m.account_id as meta_account_id, m.account_id as meta_account_id,
sum(g.impressions + m.impressions) as impressions, SUM(COALESCE(g.impressions, 0) + COALESCE(m.impressions, 0)) as impressions,
sum(g.clicks + m.clicks) as clicks, SUM(COALESCE(g.clicks, 0) + COALESCE(m.clicks, 0)) as clicks,
sum(g.clicks + m.link_click) as link_click, SUM(COALESCE(g.clicks, 0) + COALESCE(m.link_click, 0)) as link_clicks,
sum(g.leads + m.lead) as lead, sum(g.leads + m.lead) as lead,
sum(g.cost + m.spend) as spend SUM(COALESCE(g.cost, 0) + COALESCE(m.spend, 0)) as spend
FROM account_metadata as am FROM account_metadata as am
JOIN g_account_insights as g ON g.google_account_id::varchar = am.google_account_id FULL OUTER JOIN g_account_insights as g ON g.google_account_id::varchar = am.google_account_id
JOIN account_insights as m ON m.account_id = am.meta_account_id AND m.time = g.time FULL OUTER JOIN account_insights as m ON m.account_id = am.meta_account_id AND m.time = g.time
GROUP BY g.time, 2, 3 GROUP BY 1, 2, 3
ORDER BY g.time; ORDER BY 1;
-- Unified device-level insights combining Google and Meta data -- Unified device-level insights combining Google and Meta data
DROP VIEW IF EXISTS unified_account_insights_by_device CASCADE; DROP VIEW IF EXISTS unified_account_insights_by_device CASCADE;
@@ -604,7 +621,7 @@ DROP VIEW IF EXISTS unified_account_insights_by_device CASCADE;
CREATE VIEW unified_account_insights_by_device AS CREATE VIEW unified_account_insights_by_device AS
-- Man verliert Tablet und mobile-app als device type ober who cares. TV und so bei google werd a als mobile innigschmisse. Taucht lei olle heiligen zeiten auf -- Man verliert Tablet und mobile-app als device type ober who cares. TV und so bei google werd a als mobile innigschmisse. Taucht lei olle heiligen zeiten auf
SELECT SELECT
g.time, COALESCE(g.time, m.time) as time,
g.google_account_id::varchar as google_account_id, g.google_account_id::varchar as google_account_id,
m.account_id as meta_account_id, m.account_id as meta_account_id,
-- Normalize device types -- Normalize device types
@@ -612,23 +629,32 @@ SELECT
WHEN UPPER(COALESCE(g.device, m.device_platform)) IN ('DESKTOP') THEN 'DESKTOP' WHEN UPPER(COALESCE(g.device, m.device_platform)) IN ('DESKTOP') THEN 'DESKTOP'
ELSE 'MOBILE' ELSE 'MOBILE'
END as device_type, END as device_type,
SUM(g.impressions) as google_impressions, SUM(COALESCE(g.impressions, 0) + COALESCE(m.impressions, 0)) as impressions,
SUM(m.impressions) as meta_impressions, SUM(COALESCE(g.clicks, 0) + COALESCE(m.clicks, 0)) as clicks,
SUM(g.impressions + m.impressions) as total_impressions, SUM(COALESCE(g.clicks, 0) + COALESCE(m.link_click, 0)) as link_clicks,
SUM(g.clicks) as google_clicks, SUM(COALESCE(g.cost, 0) + COALESCE(m.spend, 0)) as spend
SUM(m.clicks) as meta_clicks,
SUM(g.clicks + m.clicks) as total_clicks,
SUM(g.cost) as google_cost,
SUM(m.spend) as meta_spend,
SUM(g.cost + m.spend) as total_spend,
SUM(m.link_click) as meta_link_clicks,
SUM(m.lead) as meta_leads
FROM account_metadata as am FROM account_metadata as am
FULL OUTER JOIN g_account_insights_device as g ON g.google_account_id::varchar = am.google_account_id FULL OUTER JOIN g_account_insights_device as g
FULL OUTER JOIN account_insights_by_device as m ON m.account_id = am.meta_account_id AND m.time = g.time ON g.google_account_id::varchar = am.google_account_id
WHERE g.time IS NOT NULL AND m.time IS NOT NULL FULL OUTER JOIN account_insights_by_device as m
GROUP BY g.time, g.google_account_id, m.account_id, device_type ON m.account_id = am.meta_account_id
ORDER BY g.time, device_type; AND m.time = g.time
AND CASE
WHEN UPPER(g.device) IN ('DESKTOP') THEN 'DESKTOP'
ELSE 'MOBILE'
END = CASE
WHEN UPPER(m.device_platform) IN ('DESKTOP') THEN 'DESKTOP'
ELSE 'MOBILE'
END
GROUP BY
COALESCE(g.time, m.time),
g.google_account_id,
m.account_id,
CASE
WHEN UPPER(COALESCE(g.device, m.device_platform)) IN ('DESKTOP') THEN 'DESKTOP'
ELSE 'MOBILE'
END
ORDER BY 1, device_type;
-- Unified gender-level insights combining Google and Meta data for better audience analysis -- Unified gender-level insights combining Google and Meta data for better audience analysis
DROP VIEW IF EXISTS unified_account_insights_by_gender CASCADE; DROP VIEW IF EXISTS unified_account_insights_by_gender CASCADE;
@@ -649,4 +675,33 @@ FROM account_insights_by_gender as m
GROUP BY m.time, m.account_id, m.gender GROUP BY m.time, m.account_id, m.gender
ORDER BY m.time; ORDER BY m.time;
DROP VIEW IF EXISTS unified_account_insights_by_country CASCADE;
CREATE VIEW unified_account_insights_by_country AS
SELECT
COALESCE(g.time, m.time) as time,
g.google_account_id::varchar as google_account_id,
m.account_id as meta_account_id,
COALESCE(g.country_code, m.country) as country_code,
SUM(g.impressions) as google_impressions,
SUM(m.impressions) as meta_impressions,
SUM(COALESCE(g.impressions, 0) + COALESCE(m.impressions, 0)) as total_impressions,
SUM(g.clicks) as google_clicks,
SUM(m.clicks) as meta_clicks,
SUM(COALESCE(g.clicks, 0) + COALESCE(m.clicks, 0)) as total_clicks,
SUM(g.cost) as google_cost,
SUM(m.spend) as meta_spend,
SUM(COALESCE(g.cost, 0) + COALESCE(m.spend, 0)) as total_spend,
SUM(m.link_click) as meta_link_clicks,
SUM(m.lead) as meta_leads
FROM account_metadata as am
FULL OUTER JOIN g_account_insights_by_country as g
ON g.google_account_id::varchar = am.google_account_id
FULL OUTER JOIN account_insights_by_country as m
ON m.account_id = am.meta_account_id
AND m.time = g.time
AND m.country = g.country_code
GROUP BY COALESCE(g.time, m.time), g.google_account_id, m.account_id, COALESCE(g.country_code, m.country)
ORDER BY COALESCE(g.time, m.time);