Google Ad keyword metrics is not matching in Big Query with Google Ads
I have loaded google ads data to Big query using data transfer. I am trying to get keyword and search keyword metrics for my analysis
I used below code from p_ads_KeywordBasicStats table
WITH stats AS ( SELECT campaign_id AS CampaignId, ad_group_id AS AdGroupId, ad_group_criterion_criterion_id AS CriterionID, segments_ad_network_type AS AdNetworkType1, metrics_clicks AS Clicks, metrics_cost_micros AS Cost, segments_date AS Date, metrics_impressions AS Impressions FROM `micro-reserve.google_ad.p_ads_KeywordBasicStats_xxxxxx ), keywords AS ( SELECT ad_group_criterion_criterion_id AS CriterionId, MAX(ad_group_criterion_keyword_text) AS Criteria, ad_group_criterion_negative, ad_group_criterion_status FROM `micro-reserve.google_ad.p_ads_Keyword_xxxxxxx GROUP BY ad_group_criterion_criterion_id, ad_group_criterion_negative, ad_group_criterion_status ), campaigns AS ( SELECT campaign_id, MAX(campaign_name) AS campaign_name FROM `micro-reserve.google_ad.p_ads_Campaign_xxxxx GROUP BY campaign_id ) SELECT Clicks, Cost, Date, Impressions, Criteria AS Keywords, campaign_name, ROUND(SAFE_DIVIDE(Clicks, Impressions) * 100, 2) AS CTR FROM stats LEFT JOIN keywords ON stats.CriterionID = keywords.CriterionId LEFT JOIN campaigns ON stats.CampaignId = campaigns.campaign_id WHERE keywords.ad_group_criterion_negative IS FALSE AND keywords.ad_group_criterion_status = 'ENABLED' AND Date BETWEEN '2024-09-01' AND '2024-09-13'
========== Using below query for p_ads_SearchQueryStats table
WITH stats AS ( SELECT campaign_id AS CampaignId, ad_group_id AS AdGroupId, ad_group_ad_ad_id AS CriterionID, segments_ad_network_type AS AdNetworkType1, SUM(metrics_clicks) AS Clicks, SUM(metrics_cost_micros) AS Cost, segments_date AS Date, SUM(metrics_impressions) AS Impressions, MAX(search_term_view_search_term) AS Criteria, search_term_view_status FROM `micro-reserve.google_ad.p_ads_SearchQueryStats_xxxxxx WHERE _PARTITIONTIME = TIMESTAMP('2024-09-13') GROUP BY ad_group_ad_ad_id, search_term_view_status, ad_group_id, campaign_id, segments_ad_network_type, segments_date ), campaigns AS ( SELECT campaign_id, MAX(campaign_name) AS campaign_name FROM `micro-reserve=.google_ad.p_ads_Campaign_xxxxxxxx WHERE _PARTITIONTIME = TIMESTAMP('2024-09-13') GROUP BY campaign_id ) SELECT campaigns.campaign_name, stats.Date, stats.Clicks, stats.Impressions, stats.Cost, stats.Criteria AS Search_Keywords FROM stats LEFT JOIN campaigns ON stats.CampaignId = campaigns.campaign_id WHERE stats.Date = '2024-09-13'
The above query works, but the numbers are not matching with Google Ads. Is something I am doing wrong? Can anyone advise please?