Google Analytics - получение журналов необработанных данных

У меня есть приложение, которое отправляет данные в Google Analytics. Я заинтересован в доступе и хранении этих данных в кластере Hadoop. Я предполагаю, что эти исходные данные будут в форме журналов. В частности, я хотел бы видеть user_id, поиск пользователя и параметр поиска, который он/она решил заплатить за приложение.

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

Хотел бы добавить, что я не могу использовать Big Query, так как у нас нет доступа к нему. И люди, которые создали GA, не заинтересованы в обновлении до Universal Analytics.

Любая помощь/мысли/предложения приветствуются.

Спасибо!

Ответ 1

Нет способа получить журналы, но..

API Google Analytics позволит вам извлечь ваши данные из системы.

Существуют ограничения на то, что вы можете сделать:

  • Вы ограничены 7 размерами и 10 метриками на каждый запрос.
  • Существует также квота в 10 000 запросов в день на профиль (просмотр).
  • некоторая информация, о которой вы говорите, недоступна. Если учетная запись Google Analytics не настроена правильно.
  • Данные все равно будут агрегироваться так или иначе. Наименьшая единица времени, доступная в API, - это минуты, поэтому вы не сможете получить необработанные данные с отметками времени, например.

Можно заметить, что профессиональный клиент Google Analytics мог экспортировать необработанные данные из GA в Big Query. Экспорт данных из BigQuery является бесплатным, но хранение и обработка запросов оцениваются по использованию.

Премиум-аналитика по разумной цене за единую годовую плату в размере 150 000 долларов

Ответ 2

так как мы должны ответить на исходный вопрос, нет способа получить фактические необработанные журналы Google Analytics, кроме как путем дублирования серверной системы вызовов.

Другими словами, вам нужно использовать измененную копию analytics.js script, чтобы указать на размещенный веб-сервер, который может собирать вызовы сервера.

Короче говоря, вы хотите, чтобы ваш сайт захватывал хиты http://www.yourdatacollectionserver.com/collect?v=1&t=pageview[...] вместо http://www.google-analytics.com/collect?v=1&t=pageview[...]

Это легко развертывается с помощью диспетчера тегов, такого как Google GTM, наряду с обычными тегами Google Analytics.

Это позволит эффективно создавать записи журнала на вашем веб-сервере, которые вы можете обрабатывать с помощью ETL или Snowplow или Splunk или вашего любимого механизма анализа текста Python/perl/Ruby.

Теперь вам нужно обрабатывать фактические необработанные журналы во что-то управляемое. И прежде чем вы спросите, это не ретроактивно.

Ответ 3

Вы можете получить агрегированные данные, т.е. данных, которые вы можете увидеть в своей учетной записи Google Analytics, используя API Google Analytics. Чтобы получить необработанные данные, вы должны быть премиум-пользователем (стоит ~ 150 тыс. В год). Премиум-пользователи могут экспортировать в Google BigQuery и оттуда туда, где вы хотите.

Ответ 4

Чтобы получить данные GA щелчком мыши, вы можете делать запросы таким образом, чтобы дать вам возможность объединить данные вместе.

Сначала нужно подготовить данные в ГА. Поэтому при каждом отправляемом вами хите добавьте какое-нибудь хэшированное значение или clientId + некоторую временную метку в пользовательское измерение. Это даст вам возможность присоединиться к каждому результату запроса.

Например (это то, как мы это делаем в Scitylana). Этот скрипт ниже подключается к скрипту отслеживания GA и гарантирует, что каждое попадание содержит ключ для последующего сшивания результатов запроса.

<script>
var BindingsDimensionIndex = CUSTOM DIMENSION INDEX HERE;
var Version = 1;

function overrideBuildTask() {
    var c = window[window['GoogleAnalyticsObject'] || 'ga'];
    var d = c.getAll();
    if (console) { console.log('Found ' + d.length + ' ga trackers') }
    for (var i = 0; i < d.length; i++) {
        var e = d[i]; var f = e.get('name');
        if (console) { console.log(f + ' modified') }
        var g = e.get('buildHitTask');
        if (!e.buildHitTaskIsModified) {
            e.set('buildHitTask', function(a) {
            window['_sc_order'] = typeof window['_sc_order'] == 'undefined' ? 0 : window['_sc_order'] + 1;
                var b = ['sl=' + Version, 'u=' + e.get('clientId'), 't=' + (new Date().getTime() + window['_sc_order'])].join('&');
                a.set('dimension' + BindingsDimensionIndex, b);
                g(a);
                if (console) {
                    console.log(f + '.' + a.get('hitType') + '.set.customDimension' + BindingsDimensionIndex + ' = ' + b)
                }
            });
            e.buildHitTaskIsModified = true
        }
    }
}
window.ga = window.ga || function() {
    (ga.q = ga.q || []).push(arguments);
    if (arguments[0] === 'create') { ga(overrideBuildTask) }
};
ga.l = +new Date();

</script>

Конечно, теперь вам нужно сделать какой-нибудь скрипт, который объединит все результаты, которые вы извлекли из GA.