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

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

الميزات المشترَكة مع التقارير الأساسية
تتضمّن طلبات إعداد التقارير المحورية دلالات مشابهة لطلبات التقارير الأساسية في العديد من الميزات المشتركة. على سبيل المثال، تتشابه طريقة عمل التقسيم على صفحات وفلاتر السمات وخصائص المستخدمين في التقارير المحورية مع التقارير الأساسية. يركّز هذا الدليل على ميزات إعداد التقارير المحورية. للتعرّف على وظيفة إعداد التقارير الأساسية في الإصدار 1 من Data API، يمكنك الاطّلاع على دليل أساسيات إعداد التقارير، بالإضافة إلى دليل حالات الاستخدام المتقدّمة.
طُرق إعداد التقارير المحورية
تتيح واجهة Data API الإصدار 1 وظيفة "الجداول المحورية" في طُرق إعداد التقارير التالية:
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 للطلب يدويًا. توفّر معظم برامج API
معلَمة property تتوقّع سلسلة بالتنسيق
properties/GA_PROPERTY_ID. اطّلِع على دليل البدء السريع
للحصول على أمثلة على استخدام مكتبات البرامج.
طلب تقرير محوري
لإنشاء طلب باستخدام جدول محوري، استخدِم الطريقة runPivotReport أو الطريقة batchRunPivotReports.
لطلب بيانات محورية، يمكنك إنشاء عنصر RunPivotReportRequest. ننصحك بالبدء بمعلَمات الطلب التالية:
- إدخال قيمة صالحة في حقل dateRanges
- يجب إدخال قيمة صالحة واحدة على الأقل في حقل السمات.
- قيمة صالحة واحدة على الأقل في حقل المقاييس
- يجب توفُّر قيمتَين صحيحتَين على الأقل في الحقل 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 أعمدة وصفوف السمات المرئية في ردّ التقرير.
تتيح Data API الإصدار 1 استخدام محاور متعدّدة طالما أنّ ناتج مَعلمة الحدّ الأقصى لكل محور لا يتجاوز 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 من أجل الحد من عدد النتائج في التقرير.
تتيح Data API الإصدار 1 استخدام عدة جداول محورية طالما أنّ ناتج 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); }); }); }
تطبيق تجريبي
راجِع تطبيق العرض التوضيحي للتقرير المحوري في الإصدار 1 من Google Analytics API للاطّلاع على مثال حول كيفية إنشاء تقرير محوري وعرضه باستخدام JavaScript.