AWQL-запрос, основанный на нескольких диапазонах дат - PullRequest
0 голосов
/ 09 ноября 2018

Я извлекаю простую статистику из API AdWords и хочу улучшить ее, чтобы вернуть данные за прошлый год.

Я хочу получить общее количество кликов, показов, CTR за месяц в 2017 и 2018 годах.

Моя цель: получить эти данные за 1 вызов ... Я не хочу вызывать API дважды каждый раз, когда мне нужно сравнить 2 диапазона дат.

Я не уверен, что AWQL может справиться с этим. Кто-нибудь может посоветовать? Вот мой код ...

var googleService = adClient.GetService(Services.V0.GoogleAdsService);

string query = @"SELECT date, metrics.impressions, metrics.clicks, metrics.ctr
FROM campaign
WHERE date BETWEEN '2018-10-01' AND '2018-10-31' 
OR date BETWEEN '2017-10-01' AND '2017-10-31' // <- this bit is not working
LIMIT 50";

 PagedEnumerable<SearchGoogleAdsResponse, GoogleAdsRow> response =
     googleService.Search(customerId.ToString(), query);


if(response!=null && response.Count()>0)
{
     //then (just as an example), I could extract my info like...

     long clicks2018 = Convert.ToInt64(response.Where(n => n.Date.StartsWith("2018")).Sum(n => n.Metrics.Clicks));
     long impressions2018 = Convert.ToInt64(response.Where(n => n.Date.StartsWith("2018")).Sum(n => n.Metrics.Impressions));
     double ctr2018 = Convert.ToDouble(response.Where(n => n.Date.StartsWith("2018")).Sum(n => n.Metrics.Ctr));

     long clicks2017 = Convert.ToInt64(response.Where(n=>n.Date.StartsWith("2017")).Sum(n => n.Metrics.Clicks));
     long impressions2017 = Convert.ToInt64(response.Where(n => n.Date.StartsWith("2017")).Sum(n => n.Metrics.Impressions));
     double ctr2017 = Convert.ToDouble(response.Where(n => n.Date.StartsWith("2017")).Sum(n => n.Metrics.Ctr));

}
...