Google Analytics API — выбор метрики влияет на возвращаемые значения измерения?

Доброе утро. Я видел такое поведение в Google Analytics API, которое мне, как специалисту по SQL, кажется странным. Я хотел бы получить список всех значений для adContent, поэтому я запрашиваю ga:adContent и (поскольку я должен также выбрать показатель без четко определенной причины) ga:organicSearches. Он находится в той же группе (Кампания), поэтому, возможно, он будет работать лучше на сервере.

Я получаю одну строку: adContent — «(не установлено)», OrganicSearchs — 516 674. Ха, я думаю, что adContent не используется. Но отдел маркетинга клянется, что это так, и делает несколько убедительных скриншотов.

Позже я произвольно меняю метрику на ga:transactions. Во вселенной, в которой я проснулся, это не должно абсолютно ни на что влиять, кроме фактического значения, возвращаемого в этом столбце. Вместо этого я получаю миллионы строк с правдоподобными значениями для ga:adContent. Значение для ga:transactions иногда равно нулю, поэтому это не тот случай, когда GA фильтрует «показатель > 0».

В моем запросе нет фильтров. Я не менял диапазон дат между этими двумя вариантами. Кто-нибудь может сказать мне, что происходит? Я ожидаю, что приведенные выше запросы будут преобразованы во что-то вроде этого, что должно возвращать точно такое же количество строк:

SELECT adContent, SUM(organicSearches)
FROM Campaign
WHERE Date BETWEEN X AND Y
GROUP BY adContent

SELECT adContent, SUM(transactions)
FROM Campaign INNER JOIN ECommerce ON <something>
WHERE Date BETWEEN X AND Y
GROUP BY adContent

Я понимаю, что GA, вероятно, не использует обычную RDMS на серверной части, но, безусловно, 1 + 1 по-прежнему равно 2 в любой базе данных!


person Community    schedule 16.02.2011    source источник


Ответы (1)


По определению ga:organicSearches почти никогда не будет соответствовать ga:adContent (за исключением крайних случаев). ga:adContent относится к содержанию рекламы, а ga:organicSearches — к посещениям результатов обычного поиска в течение сеанса (например, если вы используете Google несколько раз в течение одного сеанса, чтобы попытаться найти что-то конкретное на сайте). Не используйте его ни для чего, кроме попытки измерить это конкретное явление.

Старайтесь не использовать здесь мышление SQL; Google Analytics не использует SQL на серверной части, поэтому ваши представления о традиционных отношениях неприменимы. IIRC, они используют несколько вещей, в том числе вариант BigTable, который является NoSQL база данных типа.

Из статьи Google о BigTable за 2006 год:

Мы кратко опишем две таблицы, используемые Google Analytics. Необработанная таблица кликов ( ̃200 ТБ) содержит строку для каждого сеанса конечного пользователя. Имя строки — это кортеж, содержащий имя веб-сайта и время создания сеанса. Эта схема гарантирует, что сеансы, посещающие один и тот же веб-сайт, будут непрерывными и отсортированы в хронологическом порядке. Эта таблица сжимается до 14% от исходного размера. Сводная таблица ( ̃20 ТБ) содержит различные предопределенные сводки для каждого веб-сайта. Эта таблица создается из необработанной таблицы кликов периодически запланированными заданиями MapReduce. Каждое задание MapReduce извлекает данные о последнем сеансе из необработанной таблицы кликов. Общая пропускная способность системы ограничена пропускной способностью GFS. Эта таблица сжимается до 29% от исходного размера.

Если вам нужен наименьший общий знаменатель метрики для списка всех измерений, используйте ga:pageviews.

person Yahel    schedule 16.02.2011
comment
Спасибо за быстрый ответ, yc. В этом есть смысл; Полагаю, я предполагал, что внутри одной группы (Кампании) не будет присоединения и, следовательно, никакой фильтрации, если я не попрошу об этом. Также спасибо за предложение ЖК-дисплея, похоже, это именно то, что мне нужно для запросов только по измерениям. - person ; 16.02.2011