Hello,
I have several concerns regarding new API, I fill like making tests instead to do the migration...
1. performance downgrade in new API and not the same result:
When I'm downloading KEYWORDS_PERFORMANCE_REPORT (last_7_days) using old API with inlclude_zero_impressions=False:
FIELDS = ['ExternalCustomerId', 'AccountDescriptiveName', 'AccountCurrencyCode', 'CampaignName', 'Criteria', 'KeywordMatchType', 'BiddingStrategyType',
'Clicks', 'CpcBid', 'AverageCpc', 'AveragePosition', 'CreativeQualityScore', 'PostClickQualityScore', 'QualityScore',
'SearchPredictedCtr', 'HistoricalLandingPageQualityScore', 'HistoricalQualityScore', 'HistoricalSearchPredictedCtr',
'HistoricalCreativeQualityScore']
REPORT_DEFINITION = {
'reportName': 'Custom KEYWORDS_PERFORMANCE_REPORT',
'dateRangeType': 'LAST_7_DAYS',
'reportType': 'KEYWORDS_PERFORMANCE_REPORT',
'downloadFormat': 'CSV',
'selector': {
'fields': FIELDS,
'predicates': [{
'field': 'Clicks',
'operator': 'GREATER_THAN',
'values': [0]
}]
}}
It take around 3 secs and return 10222 keywords
When I'm using new API mechanism GoogleAdsService.Search using the query same definition as above just translated to query:
SELECT
customer.id,
customer.descriptive_name,
customer.currency_code,
campaign.name,
ad_group_criterion.criterion_id,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
campaign.bidding_strategy_type,
metrics.clicks,
ad_group_criterion.effective_cpc_bid_micros,
metrics.average_cpc,
metrics.average_position,
metrics.historical_creative_quality_score,
metrics.historical_landing_page_quality_score,
metrics.historical_quality_score,
metrics.historical_search_predicted_ctr,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.search_predicted_ctr
FROM
keyword_view
WHERE
metrics.impressions > 0 AND
metrics.clicks > 0 AND
segments.date DURING LAST_7_DAYS
It take around 15 secs and return 10220 keywords
5 times longer than in old API
2. performance degradation in new API and not the same results when I removed predicate clicks:old API:
FIELDS = ['ExternalCustomerId', 'AccountDescriptiveName', 'AccountCurrencyCode', 'CampaignName', 'Criteria', 'KeywordMatchType', 'BiddingStrategyType',
'Clicks', 'CpcBid', 'AverageCpc', 'AveragePosition', 'CreativeQualityScore', 'PostClickQualityScore', 'QualityScore',
'SearchPredictedCtr', 'HistoricalLandingPageQualityScore', 'HistoricalQualityScore', 'HistoricalSearchPredictedCtr',
'HistoricalCreativeQualityScore']
REPORT_DEFINITION = {
'reportName': 'Custom KEYWORDS_PERFORMANCE_REPORT',
'dateRangeType': 'LAST_7_DAYS',
'reportType': 'KEYWORDS_PERFORMANCE_REPORT',
'downloadFormat': 'CSV',
'selector': {
'fields': FIELDS
}}
It take ~5 sec and returned 43402 keywords
new API:
SELECT
customer.id,
customer.descriptive_name,
customer.currency_code,
campaign.name,
ad_group_criterion.criterion_id,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
campaign.bidding_strategy_type,
metrics.clicks,
ad_group_criterion.effective_cpc_bid_micros,
metrics.average_cpc,
metrics.average_position,
metrics.historical_creative_quality_score,
metrics.historical_landing_page_quality_score,
metrics.historical_quality_score,
metrics.historical_search_predicted_ctr,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.search_predicted_ctr
FROM
keyword_view
WHERE
metrics.impressions > 0 AND
segments.date DURING LAST_7_DAYS
It take ~36 sec and returned 23383 keywords
3. dramatic performance degradation in new API and not the same results when using without predicate clicks and inlclude_zero_impressions=True
old API:
FIELDS = ['ExternalCustomerId', 'AccountDescriptiveName', 'AccountCurrencyCode', 'CampaignName', 'Criteria', 'KeywordMatchType', 'BiddingStrategyType',
'Clicks', 'CpcBid', 'AverageCpc', 'AveragePosition', 'CreativeQualityScore', 'PostClickQualityScore', 'QualityScore',
'SearchPredictedCtr', 'HistoricalLandingPageQualityScore', 'HistoricalQualityScore', 'HistoricalSearchPredictedCtr',
'HistoricalCreativeQualityScore']
REPORT_DEFINITION = {
'reportName': 'Custom KEYWORDS_PERFORMANCE_REPORT',
'dateRangeType': 'LAST_7_DAYS',
'reportType': 'KEYWORDS_PERFORMANCE_REPORT',
'downloadFormat': 'CSV',
'selector': {
'fields': FIELDS
}}
took ~24 sec and returned 637404 keywords
new API:
SELECT
customer.id,
customer.descriptive_name,
customer.currency_code,
campaign.name,
ad_group_criterion.criterion_id,
ad_group_criterion.keyword.text,
ad_group_criterion.keyword.match_type,
campaign.bidding_strategy_type,
metrics.clicks,
ad_group_criterion.effective_cpc_bid_micros,
metrics.average_cpc,
metrics.average_position,
metrics.historical_creative_quality_score,
metrics.historical_landing_page_quality_score,
metrics.historical_quality_score,
metrics.historical_search_predicted_ctr,
ad_group_criterion.quality_info.creative_quality_score,
ad_group_criterion.quality_info.post_click_quality_score,
ad_group_criterion.quality_info.quality_score,
ad_group_criterion.quality_info.search_predicted_ctr
FROM
keyword_view
WHERE
segments.date DURING LAST_7_DAYS
took 1064 sec and returned
646710 keywords50 times longer, it's dramatic for us.
a. Please explain difference in amount of keywords in each case
b. What we should do in order to stay within same performance rates like in old API?
Regards,
Vadim