API Google Analytics - Фильтрация через .NET - так близко!
-
30-09-2019 - |
Вопрос
Добрый день! Я искал Stackoverflow и в Интернете около 24 часов, и я еще не нашел ответ. Я надеюсь, что я пропустил что-то простое, что более опытный пользователь API может указать для меня.
Я запрашиваю API Google Analytics, используя их библиотеку .NET. Этот запрос работает:
https://www.google.com/analytics/feeds/data?start-index=1&max-results=500&dimensions=ga:date&end-date=2011-01-06&ids=ga:________&metrics=ga:visitors,ga:visits&start-date=2011-01-06
... но я хотел бы отфильтровать результаты. Я попробовал один очень простой фильтр, который не требует кодирования URL:
filters=ga:city!@Minsk
Все, что я получаю, это ошибка с размахивающем «400 плохой запрос». Я получаю тот же результат, используя оператор равных:
DataQuery query = new DataQuery(URL);
...
query.Filters = "ga:city==Minsk"
То же самое, если я заканчиваю равных знаков как% 3D. Это переводится в «ГА: City% 253D% 253Dminsk», в соответствии с сообщением об ошибке. Я пробовал одну цитирующую "Минск" и дважды цитирую; неудачно.
Я тупел. Есть идеи? Спасибо!
Решение
Нашел это. Оказывается, что фильтры должны быть «совместимыми» с размерами и метриками, фактически экспрессируемыми в запросе. Droping Ga: Посетители позволили мне применить большинство необходимых фильтров, хотя комбинация GA: PagePath и Ga: Campaign не допускается с GA: посещениями ... по какой-то причине. Вот деталь, но быть предупрежденным: вы можете в конечном итоге скрещивать.
http://code.google.com/apis/Analytics/docs/gdata/gdatareferencevalidCombos.html.
Ох, и используя библиотеку .NET, вам не нужно кодировать, равно знакам или пробелы в ваших фильтрах. Я структурировал свои фильтры, как это:
private static readonly string Filter = string.Join
(
";", new string[]
{
"ga:city!=Simi Valley", // URL encoding is handled for you
"ga:pagePath!@/splash",
"ga:pagePath!@static_test",
"ga:networkLocation!@spring",
"ga:networkLocation!@equinix asia pacific pte ltd"
// ...
}
);
Надеюсь, это поможет кому-то!