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

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 トークンをリクエストする際に、アナリティクス 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 の制限と割り当てをご覧ください。