非サンプリング レポートに関するデベロッパー ガイド

Google アナリティクス Management API を使用すると、プログラムによって非サンプリング レポートを作成することができます。

はじめに

非サンプリング レポートは、サンプリングされていないデータを使用して生成された Google アナリティクスのレポートです。非サンプリング レポートは現在、Google アナリティクス 360 をご利用の方のみがご利用いただけます。

この API を使用すると、次のことが可能になります。

  • 既存のすべての非サンプリング レポートに関する構成情報の取得、1 回限りの非サンプリング レポートの作成。
  • 非サンプリング レポートの処理ステータスを確認する
  • 処理が完了した時点で、非サンプリング レポートのデータファイルへのリンクを取得する
  • 非サンプリング レポートを削除する

非サンプリング レポートのデータの取得

非サンプリング レポートを作成する場合、レポートをダウンロードできるようになるまでに、 ある程度時間がかかることがあります。非サンプリング レポートの status フィールドは、そのレポートの処理が完了したかどうかを示します。ステータスが COMPLETED とマークされたら、downloadType と対応するダウンロードの詳細フィールドを使用して、レポートデータを含むファイルを取得できます。次に例を示します。

すぐに 1 日の割り当て量に達してしまう可能性が高いため、これらのレポートのステータスを確認するのに、頻繁に高速ポーリングを実行しないでください。非サンプリング レポートのステータスをチェックする際は、リクエスト間にインターバルを設けてください。

Google ドライブまたは Google Cloud Storage API の使用

ファイルが配信される場所(Google ドライブまたは Google Cloud Storage)に応じて、そのファイルに対応するリンクを取得します。このリンクを使用すると、Drive API または Cloud Storage API を使用してファイルをダウンロードできます。ファイルを取得する方法について詳しくは、Google Drive API または Google Cloud Storage API のドキュメントをご覧ください。

たとえば、非サンプリング レポートが Google ドライブに保存されている場合は、そのファイルのリソース URL に対して承認済みの HTTP GET リクエストを行い、クエリ パラメータ alt=media を含めます。

GET /drive/v2/files/XXXXXX?alt=media
Host: www.googleapis.com
Content-length: 0
Authorization: Bearer ya29.AHESVbXTUv5mHMo3RYfmS1YJonjzzdTOFZwvyOAUVhrs

ここで、XXXXXX は非サンプリング レポート driveDownloadDetails.documentId です。

認証

非サンプリング レポートを Drive API または Cloud Storage API と組み合わせてファイルのダウンロードに使用する場合は、OAuth 2.0 トークンをリクエストする際に、Analytics API の認証スコープに加えて、その API に対応する認証スコープを含める必要があります。そうすることで、両方の API に同じ認証トークンを使用することができます。

非サンプリング レポートの削除

スケジュール設定済みまたは完了した非サンプリング レポートは削除できますが、レポートの生成中の短い期間に delete を呼び出すとエラーになります。非サンプリング レポートを削除すると、GA ビュー(旧プロファイル)からリソースだけが削除され、Google ドライブまたは Google Cloud Strage にエクスポートされたデータは残ります。

制限

非サンプリング レポートを作成する場合、以下の制限が適用されます。

  • 指定できるディメンションは最大 4 つです。
  • 一部のレポートデータ(Google 広告 データなど)はサポートされていません。
  • 高額すぎるとみなされたクエリはサポートされません。
  • 非サンプリング レポートを作成しすぎてしまい、上限に達した場合は、非サンプリング レポートのリソースを削除しても問題ありません(Google ドライブや Google Cloud に生成済みのレポートデータはそのまま残ります)。

リクエストが高額すぎると判断された場合、作成操作によって適切なメッセージとエラーが返されます。この場合の対処法は次のとおりです。

  • リクエストするディメンションの数を減らします。
  • 期間を短くしてクエリを複数に分割し、結果のレポートを合成します。

ユースケース

非サンプリング レポートと Core Reporting API

Core Reporting API を使ってレポートデータを取得し、そのデータにサンプルデータが含まれている場合は、以下の手順で同じクエリに対して非サンプリング レポートを作成できます。

  1. Core Reporting API のリクエストを実行します。
  2. レスポンスの containsSampledData プロパティを見て、データがサンプリング済みかどうかを確認します。
  3. このプロパティが true に設定されている場合は、同じレスポンスの query フィールドと profileInfo フィールドを使って、非サンプリング レポートに対するリクエストを作成できます。

次のように、Core Reporting API レスポンスから query フィールドをサンプリングします。

"query": {
  "start-date": "2011-01-01",
  "end-date": "2011-01-31",
  "ids": "ga:1234",
  "dimensions": "ga:browser",
  "metrics": [
  "ga:visits"
  ],
  "filters": "ga:country==US",
  "start-index": 1,
  "max-results": 1000
}

Core Reporting API のレスポンスの profileInfo フィールドの例:

"profileInfo": {
  "profileId": "1234",
  "accountId": "12345",
  "webPropertyId": "UA-12345-1",
  "internalWebPropertyId": "11254",
  "profileName": "Name of the profile",
  "tableId": "ga:1234"
}

Core Reporting API のレスポンスから非サンプリング レポートを作成する方法の例を次に示します。

Java

// Make a Core Reporting API call.
GaData reportingApiData = v3.data().ga().get(...).execute();

// Check if the response is sampled.
if (reportingApiData.getContainsSampledData()) {

  // Use the “query” object to construct an unsampled report object.
  Query query = reportingApiData.getQuery();
  UnsampledReport report = new UnsampledReport()
      .setDimensions(query.getDimensions())
      .setMetrics(Joiner.on(',').join(query.getMetrics()))
      .setStartDate(startDate)
      .setEndDate(endDate)
      .setSegment(query.getSegment())
      .setFilters(query.getFilters())
      .setTitle(“My unsampled report”);

  // Use “profileInfo” to create an InsertRequest for creating an
  // unsampled report.
  ProfileInfo profileInfo = reportingApiData.getProfileInfo();
  Insert insertRequest = analytics.management().unsampledReports()
  .insert(profileInfo.getAccountId(),
          profileInfo.getWebPropertyId(),
          profileInfo.getProfileId(),
          report);
  UnsampledReport createdReport = insertRequest.execute();
}

複数日の非サンプリング データの合成

複数日のレポートを結合または合成すると、特定の期間で非サンプリング データを取得することができます。この方法は、非サンプリング データのリクエストのサイズが大きすぎる場合に役立ちます。このような場合、期間を短くしてリクエストを複数に分割してから、結果を結合します。

割り当てポリシー

非サンプリング レポートの作成時に適用される制限事項と割り当てのリストについては、Configuration API と Reporting API の制限と割り当てをご覧ください。