December 1, 2012

Gdata APIでGoogle Analytics情報を取得する際に、APIコール数を減らすポイント


2012/12/01現在、Gdata APIによるGoogle Analytics情報の取得は、デイリーで50000コールが上限となっています。
この上限を超えない事だけを意識すれば良いかと言うと、そうでもありません。
例えば定時処理で大量にAPIをコールする場合、仮に1コールで1秒を要すると、50000コールで約14時間必要となるので、その辺りの考慮も必要です。

その際、重要なポイントは、以下の二つになりそうです。

(1). 1APIにおける最大返却行数は10000行
https://developers.google.com/analytics/devguides/reporting/core/v3/reference#maxResults
"The Analytics Core Reporting API returns a maximum of 10,000 rows per request"

(2). API(GET)によるアクセス時、最大URL長は2073バイトとなる模様(環境により異なる??)
2073バイトで正常なレスポンス、2074バイトで異常なレスポンスになりました。

この二つをまとめると、意識すべきことは、APIのリクエストパラメータを工夫して
URL長が2073バイト以内になるようにしつつ
10000行に限りなく近い行数のレスポンスを狙う
になります。
パラメータには正規表現も使えるので、理想なリクエストを見つけたいところです。

パラメータの確認には、以下が重宝しそうです。
Google Analytics Query Explorer 2:
http://ga-dev-tools.appspot.com/explorer/

パラメータについて、まとめておきます。
ids : Google AnalyticsのプロファイルID
metrics : 指標
dimensions : 指標の次元
sort : ソート順
start-date : 開始日
end-date : 終了日
segment : (調査中...)
filters : 正規表現等のフィルタ
start-index : 開始行No.
max-results : 返却される最大行数

公式ヘルプ:
https://support.google.com/analytics/?hl=ja

metricsとdimensionsの使い方ですが
metricsでPV数や新規訪問数といった、取得する指標を決定して
dimensionsで細分化(年単位、月単位、URL単位...)を行う
と理解しています。

ディメンションと指標:
https://support.google.com/analytics/bin/answer.py?hl=ja&answer=1033861

segmentが、まだ良くわかっていないのですが、以下に関係しているのだろうか。。。

アドバンス セグメントについて
https://support.google.com/analytics/bin/answer.py?hl=ja&answer=1033017


パラメータについて、以下を参考にさせて頂きました。

[C#] Google Analytics Data Export API を使う - ページごとのページビュー数の取得:
http://www.ipentec.com/document/document.aspx?page=csharp-google-analytics-data-export-api-get-value


まずは、URLのルールと取得したい情報の整理を行い、
次に、それらから最も効率良くAPIをコールするパラメータを見つける事が近道と思います。

行き当たりばったりで突き進むと怪我しそう。。。

No comments:

Post a Comment