web-dev-qa-db-ja.com

Google Analytics-生データログの取得

Googleアナリティクスにデータを送信するアプリがあります。 Hadoopクラスターでこのデータにアクセスして保存することに興味があります。この生データはログの形になると思います。特に、user_id、ユーザーが行った検索、およびユーザーがアプリで支払うことにした検索オプションを確認してください。

これどうやってするの?私はGAにまったく慣れていないので、アプリにGAを設定したのは私ではありませんでした。この生データにアクセスできます。

アクセスできないため、Big Queryを使用できないことを追加します。また、GA=を設定したユーザーは、ユニバーサルアナリティクスへのアップグレードに興味がありません。

どんな助け/考え/提案もありがたいです。

ありがとう!

17
activelearner

ログを取得する方法はありませんが、..

Google Analytics API を使用すると、システムからデータを抽出できます。

できることには制限があります。

  1. リクエストごとに7つのディメンションと10の指標に制限されています。
  2. プロファイルごとに1日あたり1万リクエストの割り当てもあります(ビュー)。
  3. あなたが話しているいくつかの情報は利用できません。 Google Analyticsアカウントが正しく設定されていない限り。
  4. データは引き続き何らかの方法で集計されます。 APIで利用できる最小の時間単位は分であるため、たとえば、タイムスタンプを含む生データを取得することはできません。

Google Analyticsのプロのお客様は、GA to Big Query から生データをエクスポートできます。BigQueryからのデータのエクスポートは無料ですが、ストレージですが、クエリ処理の料金は使用量に基づいています。

1年間の定額料金150,000ドルでリーズナブルな価格のプレミアム分析

16
DaImTo

元の質問に回答することになっているため、サーバーコールシステムを複製する以外に、実際の生のGoogle Analyticsログを取得する方法はありません。

つまり、analytics.jsスクリプトの変更されたコピーを使用して、サーバー呼び出しを収集できるホストされたウェブサーバーを指す必要があります。

一言で言えば、あなたのサイトが http://www.yourdatacollectionserver.com/collect?v=1&t=pageview [...]の代わりにhttp://www.google-analytics.com/collect?v=1&t=pageview[...]

これは、通常のGoogle Analyticsタグと共に、GoogleのGTMなどのタグマネージャーを使用して簡単に導入できます。

これにより、ETL、Snowplow、Splunk、またはお気に入りのPython/Perl/Rubyテキスト解析エンジンを使用して処理できるログエントリがWebサーバーに効率的に作成されます。

その場合、実際の生ログを処理可能なものに処理するのはあなた次第です。そして、あなたが尋ねる前に、これは遡及的ではありません。

5
Julien Coquet

つまり、集計データを取得できます。 Google Analytics APIを使用して、Google Analyticsアカウントで表示できるデータ。生データを取得するには、プレミアムユーザーである必要があります(1年あたり約150,000のコスト)。プレミアムユーザーは、Google BigQueryにエクスポートして、そこから好きな場所にエクスポートできます。

1

GAクリックごとのデータを取得するには、データを結合する機能を提供する方法でクエリを作成できます。

まず、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から取り出したすべての結果を結合するスクリプトを作成する必要があります。