Google Analytics Data API v1 memungkinkan Anda membuat tabel pivot. Tabel pivot adalah alat peringkas data yang memvisualisasikan data dengan mengatur ulang informasi dalam tabel dengan membuat pivot (memutar) data Anda dalam satu atau beberapa dimensi.
Sebagai contoh, pertimbangkan tabel data mentah berikut:

Dengan data ini, Anda dapat membuat tabel pivot, yang memecah data sesi menurut browser, dengan dimensi negara dan bahasa yang dipilih sebagai pivot tambahan.

Fitur Bersama dengan Laporan Inti
Permintaan pelaporan pivot memiliki semantik yang sama dengan permintaan laporan Inti untuk banyak fitur bersama. Misalnya, penomoran halaman, Filter Dimensi, dan Properti Pengguna berperilaku sama di Laporan Pivot seperti Laporan Inti. Panduan ini berfokus pada fitur pelaporan pivot. Untuk mempelajari fungsi Pelaporan Inti Pelaporan Data API v1, baca panduan dasar pelaporan, serta panduan kasus penggunaan lanjutan.
Metode pelaporan pivot
Data API v1 mendukung fungsi pivot dalam metode pelaporan berikut:
runPivotReport Metode ini menampilkan laporan pivot yang disesuaikan untuk data peristiwa Google Analytics Anda. Setiap pivot mendeskripsikan baris dan kolom dimensi yang terlihat dalam respons laporan.
batchRunPivotReports Ini adalah versi batch metode
runPivotReportyang memungkinkan pembuatan beberapa laporan menggunakan satu panggilan API.
Memilih Entitas Pelaporan
Semua metode Data API v1 mengharuskan
ID properti Google Analytics ditentukan di dalam
jalur permintaan URL dalam bentuk properties/GA_PROPERTY_ID, seperti:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runPivotReport
Laporan yang dihasilkan akan dibuat berdasarkan data peristiwa Google Analytics yang dikumpulkan di properti Google Analytics yang ditentukan.
Jika menggunakan salah satu library klien Data API, Anda
tidak perlu memanipulasi jalur URL permintaan secara manual. Sebagian besar klien API menyediakan parameter property yang mengharapkan string dalam bentuk properties/GA_PROPERTY_ID. Lihat Panduan memulai cepat
untuk mengetahui contoh penggunaan library klien.
Permintaan Laporan Pivot
Untuk membuat permintaan dengan tabel pivot, gunakan metode runPivotReport atau metode batchRunPivotReports.
Untuk meminta data pivot, Anda dapat membuat objek RunPivotReportRequest. Sebaiknya mulai dengan parameter permintaan berikut:
- Entri yang valid di kolom dateRanges.
- Setidaknya satu entri yang valid di kolom dimensi.
- Setidaknya satu entri yang valid di kolom metrik.
- Setidaknya dua entri pivot yang valid di kolom pivot.
Berikut adalah contoh permintaan dengan kolom yang direkomendasikan:
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
Gunakan objek Pivot di kolom pivot isi permintaan
untuk menentukan pivot laporan. Setiap Pivot mendeskripsikan baris dan kolom dimensi yang terlihat dalam respons laporan.
Data API v1 mendukung beberapa pivot selama produk parameter batas untuk setiap pivot tidak melebihi 100.000.
Cuplikan berikut menunjukkan penggunaan pivots untuk membuat laporan jumlah sesi menurut negara, yang diubah berdasarkan dimensi browser. Perhatikan
cara kueri menggunakan kolom orderBys
untuk pengurutan, serta kolom batas
dan offset untuk menerapkan
penomoran halaman.
"pivots": [
{
"fieldNames": [
"country"
],
"limit": 250,
"orderBys": [
{
"dimension": {
"dimensionName": "country"
}
}
]
},
{
"fieldNames": [
"browser"
],
"offset": 3,
"limit": 3,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
}
],
...
Dimensi
Dimensi menjelaskan dan mengelompokkan data peristiwa untuk
situs atau aplikasi Anda. Misalnya, dimensi city menunjukkan kota ("Paris"
atau "New York") tempat setiap peristiwa berasal. Dalam permintaan laporan, Anda dapat menentukan nol atau beberapa dimensi.
Dimensi harus ditentukan di dalam
dimensi
kolom isi permintaan. Agar terlihat dalam laporan, dimensi tersebut juga harus
tercantum di kolom fieldNames
objek Pivot.
Dimensi tidak akan terlihat dalam laporan jika tidak digunakan dalam pivot kueri pivot. Tidak semua dimensi harus ada di fieldNames pivot. Dimensi dapat digunakan secara eksklusif dalam filter dan tidak dalam fieldNames pivot mana pun.
Cuplikan berikut menunjukkan penggunaan kolom dimension dan fieldNames untuk tabel dengan pivot browser, country, dan language:
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 5,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
},
{
"fieldNames": [
"country"
],
"limit": 250,
"orderBys": [
{
"dimension": {
"dimensionName": "country"
}
}
]
},
{
"fieldNames": [
"language"
],
"limit": 10
}
],
Metrik
Metrik adalah pengukuran kuantitatif data peristiwa untuk situs atau aplikasi Anda. Dalam permintaan laporan, Anda dapat menentukan satu atau beberapa metrik. Lihat Metrik API untuk mengetahui daftar lengkap nama Metrik API yang dapat ditentukan dalam permintaan.
Dalam permintaan laporan pivot, metrik ditentukan menggunakan kolom metrics dari
isi permintaan, yang mirip dengan metode Pelaporan Inti.
Contoh berikut menentukan jumlah sesi yang akan digunakan sebagai nilai metrik dalam laporan:
"metrics": [
{
"name": "sessions"
}
],
Agregasi metrik
Gunakan kolom metricAggregations objek Pivot untuk menghitung nilai metrik gabungan untuk setiap pivot.
Agregasi hanya akan dihitung jika kolom metricAggregations ditentukan dalam permintaan.
Contoh berikut adalah cuplikan kueri yang meminta total untuk dimensi pivot browser:
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 10,
"metricAggregations": [
"TOTAL",
]
},
...
Metrik yang dihitung ditampilkan di kolom aggregates
objek RunPivotReportResponse. Untuk baris metrik gabungan, kolom dimensionValues berisi nilai khusus RESERVED_TOTAL, RESERVED_MAX, atau 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"
}
]
},
....
}
Penomoran halaman
Mirip dengan metode Pelaporan Inti, permintaan pivot memungkinkan Anda
menentukan kolom batas
dan offset di objek
Pivot untuk menerapkan penomoran halaman.
Setelan penomoran halaman diterapkan ke setiap pivot satu per satu.
Kolom limit diperlukan untuk setiap objek Pivot guna membatasi kardinalitas laporan.
Data API v1 mendukung beberapa pivot selama produk parameter limit untuk setiap pivot tidak melebihi 100.000.
Cuplikan berikut menunjukkan penggunaan kolom offset dan limit untuk mengambil lima dimensi language berikutnya dengan offset 10:
{
"fieldNames": [
"language"
],
"offset": 10,
"limit": 5
}
Pemfilteran
Mirip dengan fungsi Pelaporan Inti, filter dimensi dengan cakupan permintaan harus digunakan jika Anda menginginkan pemfilteran dimensi dalam permintaan pelaporan pivot.
Pengurutan
Perilaku pengurutan kueri laporan pivot dapat dikontrol untuk setiap pivot satu per satu menggunakan kolom orderBys objek Pivot, yang berisi daftar objek OrderBy.
Setiap OrderBy dapat berisi salah satu dari hal berikut:
- DimensionOrderBy, mengurutkan hasil menurut nilai dimensi.
- MetricOrderBy, mengurutkan hasil menurut nilai metrik.
- PivotOrderBy, digunakan dalam kueri pivot dan mengurutkan hasil menurut nilai metrik dalam grup kolom pivot.
Contoh ini menunjukkan cuplikan untuk definisi pivot yang memutar laporan pada dimensi browser, yang mengurutkan hasil menurut metrik sessions dalam urutan menurun.
{
"fieldNames": [
"browser"
],
"limit": 5,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
}
Respons Laporan
Respons Laporan Pivot dari permintaan API laporan pivot terutama adalah header dan baris.
Header Respons
Header laporan pivot terdiri dari PivotHeaders, DimensionHeaders dan MetricHeaders yang mencantumkan kolom dalam laporan pivot.
Misalnya, laporan dengan dimensi pivot browser, country, dan language serta metrik sessions akan menghasilkan header seperti ini:
{
"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"
}
],
...
}
Diagram berikut mengilustrasikan peran setiap komponen Respons Laporan Pivot dalam merender laporan pivot:

Baris Respons
Respons laporan pivot dari metode runPivotReport dan batchRunPivotReports berbeda dengan respons untuk metode Pelaporan Inti seperti runReport dan batchRunReports karena setiap baris respons laporan pivot mewakili satu sel tabel, sedangkan dalam laporan reguler, satu baris respons mewakili seluruh baris tabel.
Contoh berikut menunjukkan fragmen respons laporan pivot untuk kueri dengan dimensi pivot browser, country, dan language serta metrik sessions. Setiap sel dari laporan pivot ditampilkan satu per satu:
"rows": [
{
"dimensionValues": [
{
"value": "Chrome"
},
{
"value": "United States"
},
{
"value": "English"
}
],
"metricValues": [
{
"value": "1"
}
]
},
{
"dimensionValues": [
{
"value": "Firefox"
},
{
"value": "Canada"
},
{
"value": "French"
}
],
"metricValues": [
{
"value": "3"
}
]
},
...
]
Data ini sesuai dengan dua sel yang disorot dalam tabel berikut:

Library klien
Lihat Panduan memulai cepat untuk mengetahui penjelasan tentang cara menginstal dan mengonfigurasi library klien.
Contoh berikut menggunakan library klien untuk menjalankan kueri pivot guna membuat laporan jumlah sesi menurut negara, yang diubah berdasarkan dimensi browser.
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); }); }); }
Aplikasi demo
Lihat aplikasi Demo Laporan Pivot Google Analytics API v1 untuk mengetahui contoh cara membuat dan menampilkan laporan pivot menggunakan JavaScript.