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

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

الميزات المشتركة مع تقارير Core
تتضمّن طلبات إعداد التقارير المحورية الدلالات نفسها التي تتضمّنها طلبات إعداد التقارير الأساسية للعديد من الميزات المشتركة. على سبيل المثال، تعمل ميزات تقسيم الصفحات وفلاتر السمات وخصائص المستخدمين بالطريقة نفسها في تقارير Pivot وتقارير Core. يركّز هذا الدليل على ميزات إعداد التقارير المحورية. للتعرّف على وظائف إعداد التقارير الأساسية في الإصدار 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. ننصحك بالبدء بمعلَمات الطلب التالية:
- إدخال صالح في حقل 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 أعمدة وصفوف السمات المرئية في ردّ التقرير.
يتيح الإصدار 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
}
],
المقاييس
المقاييس هي قياسات كمية لبيانات الأحداث لموقعك الإلكتروني أو تطبيقك. في طلب التقرير، يمكنك تحديد مقياس واحد أو أكثر. يمكنك الاطّلاع على مقاييس واجهة برمجة التطبيقات للحصول على قائمة كاملة بأسماء مقاييس واجهة برمجة التطبيقات التي يمكن تحديدها في الطلبات.
في طلبات تقارير Pivot، يتم تحديد المقاييس باستخدام حقل 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 لكل عنصر 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
}
]
}
الإبلاغ عن الردّ
يتكوّن ردّ تقرير Pivot لطلب بيانات من واجهة برمجة التطبيقات لتقرير Pivot بشكل أساسي من عنوان وصفوف.
عناوين الاستجابة
يتكوّن عنوان التقرير المحوري من 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"
}
],
...
}
يوضّح الرسم البياني التالي دور كل مكوّن من مكوّنات استجابة Pivot Report Response في عرض تقرير Pivot:

صفوف الردود
يختلف ردّ تقرير الجدول المحوري لطريقتَي 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); }); }); }
تطبيق تجريبي
يمكنك الاطّلاع على تطبيق Pivot Report Demo للإصدار الأول من Google Analytics API للحصول على مثال على كيفية إنشاء تقرير محوري وعرضه باستخدام JavaScript.