Google アナリティクス Data API v1 では、ピボット テーブルを生成できます。ピボット テーブルは、特徴のリストを再編成してデータを可視化するデータ要約ツールです。 テーブル内の情報をピボット(ローテーション)して、 定義できます。
例として、次の元データのテーブルについて考えてみます。
このデータを使用してピボット テーブルを作成し、 ブラウザ別のセッション数 データ(国と言語のディメンションが選択されている) ピボット化できます
コアレポートと共有機能
ピボット レポートのリクエストは、 多くの共有機能があります。ページ分け、ディメンション フィルタ、ユーザーなど プロパティ。ピボット レポートでは、コアレポートと同じように動作します。この このガイドでは、ピボットレポート機能に絞って説明します。「Core Data API v1 のレポート機能については、レポートの基本ガイドをご覧ください。 高度なユースケースのガイドをご覧ください。
ピボット レポート方法
Data API v1 では、以下のレポート メソッドのピボット機能がサポートされています。
runPivotReport このメソッド は、Google アナリティクスのイベントデータのカスタマイズされたピボット レポートを返します。各 ピボットは、レポートのレスポンスに表示されるディメンションの列と行を表します。
batchRunPivotReports
runPivotReport
メソッドのバッチ バージョンです。これにより、 1 回の API 呼び出しで複数のレポートを作成できます
報告エンティティの選択
Data API v1 のすべてのメソッドには、Google アナリティクス プロパティ ID が必要です。
URL リクエストパス内で
properties/GA_PROPERTY_ID
。例:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runPivotReport
結果のレポートは Google アナリティクスのイベントデータに基づいて生成される 収集されているデータタイプです
Data API クライアント ライブラリのいずれかを使用している場合は、リクエスト URL パスを手動で操作する必要はありません。ほとんどの API クライアントでは、文字列が properties/GA_PROPERTY_ID
の形式の property
パラメータが提供されています。クライアント ライブラリの使用例については、クイック スタートガイドをご覧ください。
ピボット レポート リクエスト
ピボット テーブルを使用してリクエストを作成するには、 runPivotReport または batchRunPivotReports メソッドを呼び出します。
ピボットデータをリクエストするには、RunPivotReportRequest を作成します。 渡されます。次のリクエスト パラメータから始めることをおすすめします。
- dateRanges フィールドの有効なエントリ。
- dimensions フィールドに有効なエントリが 1 つ以上ある。
- metrics フィールドの 1 つ以上の有効なエントリ。
- pivots フィールドに 2 つ以上の有効なピボット エントリがある。
推奨フィールドを含むリクエストの例を次に示します。
HTTP
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runPivotReport
{
"dateRanges": [{ "startDate": "2020-09-01", "endDate": "2020-09-15" }],
"dimensions": [
{ "name": "browser" },
{ "name": "country" },
{ "name": "language" }
],
"metrics": [{ "name": "sessions" }],
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 5
},
{
"fieldNames": [
"country"
],
"limit": 250
},
{
"fieldNames": [
"language"
],
"limit": 15
}
]
}
ピボット
リクエストの pivot
フィールドで Pivot オブジェクトを使用します。
レポートのピボットを定義します各 Pivot
は、表示されるディメンションを表します。
行と列の両方が含まれます。
Data API v1 は、上限の積である限り、複数のピボットをサポートします。 各ピボットのパラメータが 100,000 を超えないようにしてください。
以下のスニペットは、pivots
を使用して以下のレポートを作成する方法を示しています。
国別のセッション数(browser
ディメンションでピボット)。なお、
クエリでは orderBys フィールドを使用して、
並べ替え、上限と
offset フィールド: ページ分けを実装します。
"pivots": [
{
"fieldNames": [
"country"
],
"limit": 250,
"orderBys": [
{
"dimension": {
"dimensionName": "country"
}
}
]
},
{
"fieldNames": [
"browser"
],
"offset": 3,
"limit": 3,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
}
],
...
ディメンション
ディメンション: イベントのイベントデータの説明とグループ化
アクセスします。たとえば、city
ディメンションは都市(「パリ」)を示します。
(例: 「ニューヨーク」)。レポート リクエストでは、
0 個以上のディメンションを指定します。
ディメンションは
ディメンション
フィールド名.レポートにこれらのディメンションを表示するには、次の条件も満たしている必要があります。
fieldNames にリストされます。
Pivot
オブジェクトのフィールドです。
使用されていないディメンションはレポートに表示されません
ピボットクエリの
ピボットフィールドが作成されますすべてのディメンションがピボットの
fieldNames
。ディメンションをフィルタでのみ使用でき、
ピボットの fieldNames
。
以下は、dimension
フィールドと fieldNames
フィールドの使用方法を示すスニペットです。
browser
、country
、language
のピボットを含むテーブルの場合:
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 5,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
},
{
"fieldNames": [
"country"
],
"limit": 250,
"orderBys": [
{
"dimension": {
"dimensionName": "country"
}
}
]
},
{
"fieldNames": [
"language"
],
"limit": 10
}
],
指標
指標とは、 測定しますレポート リクエストでは、1 つ以上の指標を指定できます。 API 指標名の完全なリストについては、API 指標をご覧ください。 リクエスト内で指定できます。
ピボット レポート リクエストでは、metrics
リクエスト本文です。コアレポートのメソッドと類似しています。
以下の例では、セッションの指標値として使用されるセッションの数を指定しています。 レポート:
"metrics": [
{
"name": "sessions"
}
],
指標の集計
metricAggregations を使用する 集計指標を計算するための Pivot オブジェクトのフィールドです。 各ピボットの値です
集計は、リクエストで metricAggregations フィールドが指定されている場合にのみ計算されます。
以下は、
browser
ピボット ディメンション:
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 10,
"metricAggregations": [
"TOTAL",
]
},
...
計算された指標は、集計値で返されます。
RunPivotReportResponse フィールド
渡されます。集計指標の行の場合、dimensionValues
フィールド
特別な値 RESERVED_TOTAL
、RESERVED_MAX
、または RESERVED_MIN
が含まれている。
"aggregates": [
{
"dimensionValues": [
{
"value": "Chrome"
},
{
"value": "RESERVED_TOTAL"
},
{
"value": "RESERVED_TOTAL"
}
],
"metricValues": [
{
"value": "4"
}
]
},
{
"dimensionValues": [
{
"value": "Firefox"
},
{
"value": "RESERVED_TOTAL"
},
{
"value": "RESERVED_TOTAL"
}
],
"metricValues": [
{
"value": "6"
}
]
},
....
}
ページネーション
主要なレポートのメソッドと同様に、ピボット リクエストを使用すると、
上限を指定します
および offset フィールド
Pivot オブジェクトでページ分けを実装します。
ページ分けの設定は、各ピボットに個別に適用されます。
limit
フィールドは、すべての Pivot
オブジェクトで必須であり、
基づいています。
Data API v1 は、limit
の積である限り、複数のピボットをサポートします。
各ピボットのパラメータが 100,000 を超えないようにしてください。
以下は、offset
フィールドと limit
フィールドを使用して以下を行うためのスニペットです。
オフセット 10 で次の 5 つの language
ディメンションを取得します。
{
"fieldNames": [
"language"
],
"offset": 10,
"limit": 5
}
フィルタリング
コアレポート機能と同様に、 リクエスト スコープのディメンション フィルタ ピボット レポートでディメンションのフィルタリングが必要な場合は、こちらを使用する必要があります リクエストできます。
並べ替え
ピボット レポートのクエリの順序付けは、ピボットごとに制御できる orderBys を使用して個別に フィールドの Pivot フィールドです。このフィールドには、 OrderBy オブジェクト。
すべての OrderBy
には次のいずれかを含めることができます。
- DimensionOrderBy, ディメンションの値で結果を並べ替えます。
- MetricOrderBy、並べ替え 表示することもできます。
- PivotOrderBy: クエリをピボットして、指標の値で結果を並べ替えます グループ化できます
この例では、レポートをピボットするピボット定義のスニペットを示しています。
browser
ディメンション(指標 sessions
で結果を並べ替え)
降順で表示されます。
{
"fieldNames": [
"browser"
],
"limit": 5,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
}
回答を報告
ピボットのピボット レポートのレスポンス Reporting API リクエストは、主にヘッダーと行です。
レスポンス ヘッダー
ピボット レポートのヘッダーは、PivotHeaders、 DimensionHeaders および MetricHeaders です。これにより、 ピボットレポート
たとえば、browser
、country
、language
のピボット ディメンションを含むレポート
sessions
指標では、次のようなヘッダーが生成されます。
{
"pivotHeaders": [
{
"pivotDimensionHeaders": [
{
"dimensionValues": [
{
"value": "Chrome"
}
]
},
{
"dimensionValues": [
{
"value": "Firefox"
}
]
},
...
],
...
},
{
"pivotDimensionHeaders": [
{
"dimensionValues": [
{
"value": "United States"
}
]
},
{
"dimensionValues": [
{
"value": "Canada"
}
]
},
...
],
...
},
{
"pivotDimensionHeaders": [
{
"dimensionValues": [
{
"value": "English"
}
]
},
{
"dimensionValues": [
{
"value": "French"
}
]
},
...
],
...
}
],
"dimensionHeaders": [
{
"name": "browser"
},
{
"name": "country"
},
{
"name": "language"
}
],
"metricHeaders": [
{
"name": "sessions",
"type": "TYPE_INTEGER"
}
],
...
}
以下のグラフは、ピボット レポートの各コンポーネントの役割を示しています。 ピボット レポートのレンダリングでのレスポンス:
レスポンス行
runPivotReport のピボット レポートのレスポンス および batchRunPivotReports メソッドによるレスポンスは、コアレポート メソッドのレスポンスと異なる runReport など と batchRunReports ピボット レポートの各回答行は、 ですが、通常のレポートでは 1 行がレスポンスの完了を表し、 使用します。
以下は、ピボットされたレポートのレスポンスの一部分です。
browser
、country
、language
のピボット ディメンションと、
sessions
指標。ピボット レポートの各セルは個別に返されます。
"rows": [
{
"dimensionValues": [
{
"value": "Chrome"
},
{
"value": "United States"
},
{
"value": "English"
}
],
"metricValues": [
{
"value": "1"
}
]
},
{
"dimensionValues": [
{
"value": "Firefox"
},
{
"value": "Canada"
},
{
"value": "French"
}
],
"metricValues": [
{
"value": "3"
}
]
},
...
]
このデータは、下の表でハイライト表示されている 2 つのセルに対応しています。
クライアント ライブラリ
詳しくは、クイック スタートガイドをご覧ください。 クライアント ライブラリをインストールして構成する方法を確認する。
次の例では、クライアント ライブラリを使用してピボットクエリを実行し、 国別のセッション数のレポートが、ブラウザ ディメンションでピボットされています。
PHP
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient; use Google\Analytics\Data\V1beta\DateRange; use Google\Analytics\Data\V1beta\Dimension; use Google\Analytics\Data\V1beta\Metric; use Google\Analytics\Data\V1beta\OrderBy; use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy; use Google\Analytics\Data\V1beta\OrderBy\MetricOrderBy; use Google\Analytics\Data\V1beta\Pivot; use Google\Analytics\Data\V1beta\RunPivotReportRequest; use Google\Analytics\Data\V1beta\RunPivotReportResponse; /** * Runs a pivot query to build a report of session counts by country, * pivoted by the browser dimension. * @param string $propertyId Your GA-4 Property ID */ function run_pivot_report(string $propertyId) { // Create an instance of the Google Analytics Data API client library. $client = new BetaAnalyticsDataClient(); // Make an API call. $request = (new RunPivotReportRequest()) ->setProperty('properties/' . $propertyId) ->setDateRanges([new DateRange([ 'start_date' => '2021-01-01', 'end_date' => '2021-01-30', ]), ]) ->setPivots([ new Pivot([ 'field_names' => ['country'], 'limit' => 250, 'order_bys' => [new OrderBy([ 'dimension' => new DimensionOrderBy([ 'dimension_name' => 'country', ]), ])], ]), new Pivot([ 'field_names' => ['browser'], 'offset' => 3, 'limit' => 3, 'order_bys' => [new OrderBy([ 'metric' => new MetricOrderBy([ 'metric_name' => 'sessions', ]), 'desc' => true, ])], ]), ]) ->setMetrics([new Metric(['name' => 'sessions'])]) ->setDimensions([ new Dimension(['name' => 'country']), new Dimension(['name' => 'browser']), ]); $response = $client->runPivotReport($request); printPivotReportResponse($response); } /** * Print results of a runPivotReport call. * @param RunPivotReportResponse $response */ function printPivotReportResponse(RunPivotReportResponse $response) { print 'Report result: ' . PHP_EOL; foreach ($response->getRows() as $row) { printf( '%s %s' . PHP_EOL, $row->getDimensionValues()[0]->getValue(), $row->getMetricValues()[0]->getValue() ); } }
Python
from google.analytics.data_v1beta import BetaAnalyticsDataClient from google.analytics.data_v1beta.types import ( DateRange, Dimension, Metric, OrderBy, Pivot, RunPivotReportRequest, ) def run_sample(): """Runs the sample.""" # TODO(developer): Replace this variable with your Google Analytics 4 # property ID before running the sample. property_id = "YOUR-GA4-PROPERTY-ID" run_pivot_report(property_id) def run_pivot_report(property_id="YOUR-GA4-PROPERTY-ID"): """Runs a pivot query to build a report of session counts by country, pivoted by the browser dimension.""" client = BetaAnalyticsDataClient() request = RunPivotReportRequest( property=f"properties/{property_id}", date_ranges=[DateRange(start_date="2021-01-01", end_date="2021-01-30")], pivots=[ Pivot( field_names=["country"], limit=250, order_bys=[ OrderBy( dimension=OrderBy.DimensionOrderBy(dimension_name="country") ) ], ), Pivot( field_names=["browser"], offset=3, limit=3, order_bys=[ OrderBy( metric=OrderBy.MetricOrderBy(metric_name="sessions"), desc=True ) ], ), ], metrics=[Metric(name="sessions")], dimensions=[Dimension(name="country"), Dimension(name="browser")], ) response = client.run_pivot_report(request) print_run_pivot_report_response(response) def print_run_pivot_report_response(response): """Prints results of a runPivotReport call.""" print("Report result:") for row in response.rows: for dimension_value in row.dimension_values: print(dimension_value.value) for metric_value in row.metric_values: print(metric_value.value)
Node.js
// TODO(developer): Uncomment this variable and replace with your // Google Analytics 4 property ID before running the sample. // propertyId = 'YOUR-GA4-PROPERTY-ID'; // Imports the Google Analytics Data API client library. const {BetaAnalyticsDataClient} = require('@google-analytics/data'); // Initialize client that will be used to send requests. This client only // needs to be created once, and can be reused for multiple requests. const analyticsDataClient = new BetaAnalyticsDataClient(); // Runs a pivot query to build a report of session counts by country, pivoted by the browser dimension. async function runPivotReport() { const [response] = await analyticsDataClient.runPivotReport({ property: `properties/${propertyId}`, dateRanges: [ { startDate: '2021-01-01', endDate: '2021-01-30', }, ], pivots: [ { fieldNames: ['country'], limit: 250, orderBys: [ { dimension: { dimensionName: 'country', }, }, ], }, { fieldNames: ['browser'], offset: 3, limit: 3, orderBys: [ { metric: { metricName: 'sessions', }, desc: true, }, ], }, ], metrics: [ { name: 'sessions', }, ], dimensions: [ { name: 'country', }, { name: 'browser', }, ], }); printPivotReportResponse(response); } runPivotReport(); // Prints results of a runReport call. function printPivotReportResponse(response) { console.log('Report result:'); response.rows.forEach(row => { row.dimensionValues.forEach(dimensionValue => { console.log(dimensionValue.value); }); row.metricValues.forEach(metricValue => { console.log(metricValue.value); }); }); }
デモ アプリケーション
Google Analytics API v1 のピボット レポートのデモを見る アプリケーション をご覧ください。