يتيح لك الإصدار 1 من Google Analytics Data API إنشاء جداول محورية. الجداول المحورية هي أداة لتلخيص البيانات تعرض البيانات من خلال إعادة ترتيب المعلومات في الجدول عن طريق تغيير محور البيانات إلى بُعد واحد أو أكثر.
فكِّر في جدول البيانات الأولية التالي كمثال:

باستخدام هذه البيانات، من الممكن إنشاء جدول محوري، مع تصنيف بيانات الجلسات حسب المتصفّح، واختيار سمات البلد واللغة كسمات إضافية لتغيير المحور.

الميزات المشترَكة مع التقارير الأساسية
تتطابق دلالات طلبات إعداد التقارير المحورية مع طلبات إعداد التقارير الأساسية للعديد من الميزات المشترَكة. على سبيل المثال، تتشابه طريقة عمل ميزات التقسيم على صفحات وفلاتر السمات وخصائص المستخدم في التقارير المحورية والتقارير الأساسية. يركّز هذا الدليل على ميزات إعداد التقارير المحورية. للتعرّف على وظيفة إعداد التقارير الأساسية في الإصدار 1 من Data API، يُرجى قراءة دليل أساسيات إعداد التقارير، بالإضافة إلى دليل حالات الاستخدام المتقدّمة.
طُرق إعداد التقارير المحورية
يتيح الإصدار 1 من Data API وظيفة تغيير المحور في طُرق إعداد التقارير التالية:
runPivotReport: تعرض هذه الطريقة تقريرًا محوريًا مخصّصًا لبيانات الأحداث في "إحصاءات Google". يصف كل محور أعمدة وصفوف السمات المرئية في ردّ التقرير.
batchRunPivotReports: هذا هو إصدار مُجمّع من طريقة
runPivotReportالتي تتيح إنشاء تقارير متعدّدة باستخدام طلب بيانات من واجهة برمجة التطبيقات واحد.
اختيار كيان إعداد التقارير
تتطلّب جميع طُرق الإصدار 1 من Data API تحديد
معرّف موقع على "إحصاءات Google" ضِمن
مسار طلب عنوان URL على شكل properties/GA_PROPERTY_ID، مثل:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runPivotReport
سيتم إنشاء التقرير الناتج استنادًا إلى بيانات الأحداث في "إحصاءات Google" التي تم جمعها في موقع على "إحصاءات Google" المحدّد.
إذا كنت تستخدم إحدى مكتبات عملاء Data API، لن تحتاج إلى تعديل مسار عنوان URL للطلب يدويًا. توفّر معظم عملاء واجهة برمجة التطبيقات مَعلمة property تتوقّع سلسلة على شكل properties/GA_PROPERTY_ID. يمكنك الاطّلاع على دليل البدء السريع
للاطّلاع على أمثلة عن استخدام مكتبات العملاء.
طلب التقرير المحوري
لإنشاء طلب يتضمّن جدولاً محوريًا، استخدِم طريقة runPivotReport أو طريقة batchRunPivotReports.
لطلب بيانات تم تغيير محورها، يمكنك إنشاء عنصر RunPivotReportRequest object. ننصحك بالبدء باستخدام مَعلمات الطلب التالية:
- إدخال صالح في حقل dateRanges
- إدخال صالح واحد على الأقل في حقل dimensions
- إدخال صالح واحد على الأقل في حقل metrics
- إدخالان صالحان على الأقل لتغيير المحور في حقل pivots
في ما يلي نموذج طلب يتضمّن الحقول المقترَحة:
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 أعمدة وصفوف السمات المرئية في ردّ التقرير.
يتيح الإصدار 1 من Data API استخدام محاور متعدّدة طالما أنّ ناتج مَعلمة limit لكل محور لا يتجاوز 100,000.
يوضّح المقتطف التالي كيفية استخدام pivots لإنشاء تقرير عن عدد الجلسات حسب البلد، مع تغيير المحور حسب سمة browser. لاحظ
كيف يستخدم طلب البحث حقل orderBys
للترتيب، وحقلَي limit
وoffset لتنفيذ
تقسيم النتائج على عدّة صفحات.
"pivots": [
{
"fieldNames": [
"country"
],
"limit": 250,
"orderBys": [
{
"dimension": {
"dimensionName": "country"
}
}
]
},
{
"fieldNames": [
"browser"
],
"offset": 3,
"limit": 3,
"orderBys": [
{
"metric": {
"metricName": "sessions"
},
"desc": true
}
]
}
],
...
الأبعاد
تصف السمات بيانات الأحداث وتُجمّعها لموقعك الإلكتروني أو تطبيقك. على سبيل المثال، تشير سمة city إلى المدينة ("القاهرة"
أو "دبي") التي نشأ منها كل حدث. في طلب التقرير، يمكنك تحديد صفر أو أكثر من السمات.
يجب تحديد السمات ضِمن حقل
dimensions
من نص الطلب. لكي تظهر هذه السمات في التقرير، يجب أيضًا
إدراجها في حقل 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
}
],
المقاييس
المقاييس هي قياسات كمّية لبيانات الأحداث في موقعك الإلكتروني أو تطبيقك. في طلب التقرير، يمكنك تحديد مقياس واحد أو أكثر. يمكنك الاطّلاع على مقاييس واجهة برمجة التطبيقات للحصول على قائمة كاملة بأسماء مقاييس واجهة برمجة التطبيقات التي يمكن تحديدها في الطلبات.
في طلبات التقارير المحورية، يتم تحديد المقاييس باستخدام حقل metrics من نص الطلب، وهو مشابه لـ طُرق إعداد التقارير الأساسية.
يحدّد المثال التالي عدد الجلسات لاستخدامه كقيمة مقياس في التقرير:
"metrics": [
{
"name": "sessions"
}
],
تجميعات المقاييس
استخدِم حقل metricAggregations من عنصر Pivot لحساب قِيم المقاييس المُجمّعة لكل محور.
لن يتم احتساب التجميعات إلا إذا تم تحديد حقل metricAggregations في الطلب.
المثال التالي هو مقتطف من طلب بحث يطلب الإجماليات لسمة تغيير المحور browser:
"pivots": [
{
"fieldNames": [
"browser"
],
"limit": 10,
"metricAggregations": [
"TOTAL",
]
},
...
يتم عرض المقاييس المحتسبة في حقل aggregates
من عنصر 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"
}
]
},
....
}
تقسيم النتائج على عدّة صفحات
على غرار طُرق إعداد التقارير الأساسية، تتيح لك طلبات تغيير المحور
تحديد حقلَي limit
وoffset في العنصر
Pivot لتنفيذ تقسيم النتائج على عدّة صفحات.
يتم تطبيق إعدادات تقسيم النتائج على عدّة صفحات على كل محور على حدة.
حقل limit مطلوب لكل عنصر Pivot من أجل الحدّ من عدد النتائج في التقرير.
يتيح الإصدار 1 من Data API استخدام محاور متعدّدة طالما أنّ ناتج مَعلمة limit لكل محور لا يتجاوز 100,000.
يوضّح المقتطف التالي كيفية استخدام حقلَي offset وlimit لاسترداد سمات language الخمس التالية مع إزاحة تبلغ 10:
{
"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
}
]
}
ردّ التقرير
يتألّف ردّ التقرير المحوري لطلب بيانات من واجهة برمجة التطبيقات لإعداد تقرير محوري بشكل أساسي من عنوان وصفوف.
عناوين الاستجابة
يتألّف عنوان التقرير المحوري من 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 في أنّ كل صف من صفوف ردّ التقرير المحوري يمثّل خلية واحدة من الجدول، بينما يمثّل صف الردّ الواحد في التقرير العادي سطرًا كاملاً من الجدول.
يعرض المثال التالي جزءًا من ردّ التقرير المحوري لطلب بحث يتضمّن سمات تغيير المحور 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"
}
]
},
...
]
تتطابق هذه البيانات مع الخليتَين المميّزتَين في الجدول التالي:

مكتبات العملاء
يمكنك الاطّلاع على دليل البدء السريع للحصول على شرح حول كيفية تثبيت مكتبات العملاء وإعدادها.
تستخدِم الأمثلة التالية مكتبة العميل لتشغيل طلب بحث محوري من أجل إنشاء تقرير عن عدد الجلسات حسب البلد، مع تغيير المحور حسب سمة المتصفّح.
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 Pivot Report Demo application للحصول على مثال عن كيفية إنشاء تقرير محوري وعرضه باستخدام JavaScript.