نمای کلی

‫Google Analytics Data API v1 به شما امکان می‌دهد جدول‌های محوری تولید کنید. جدول‌های محوری ابزار خلاصه کردن داده‌ها هستند که با بازآرایی اطلاعات در جدول ازطریق محوری کردن (چرخاندن) داده‌هایتان در یک یا چند بُعد، داده‌ها را به‌تصویر می‌کشند.

به‌عنوان مثال، جدول داده‌های خام زیر را درنظر بگیرید:

جدول داده‌های خام

بااستفاده از این داده‌ها، می‌توان جدول محوری ساخت و داده‌های جلسه‌ها را براساس مرورگر تفکیک کرد، و ابعاد کشور و زبان را به‌عنوان محورهای اضافی انتخاب کرد.

جدول داده‌های محوری

ویژگی‌های مشترک با گزارش‌های اصلی

درخواست‌های گزارش‌دهی محوری با درخواست‌های گزارش اصلی برای بسیاری از ویژگی‌های مشترک معنایی یکسانی دارند. برای مثال، صفحه‌بندی، «فیلترهای بُعد»، و «دارایی‌های کاربر» در «گزارش‌های محوری» همانند «گزارش‌های اصلی» عمل می‌کنند. این راهنما بر ویژگی‌های گزارش‌دهی محوری تمرکز دارد. برای آشنایی با عملکرد اصلی گزارش‌دهی Data API v1، راهنمای اصول گزارش‌دهی و همچنین راهنمای موارد استفاده پیشرفته را بخوانید.

روش‌های گزارش‌دهی محوری

‫Data API v1 از عملکرد محوری در روش‌های گزارش‌دهی زیر پشتیبانی می‌کند:

  • runPivotReport این روش گزارش محوری سفارشی‌شده‌ای از داده‌های رویداد Google Analytics شما برمی‌گرداند. هر محور ستون‌ها و ردیف‌های بُعد نمایان را در پاسخ گزارش توصیف می‌کند.

  • batchRunPivotReports این نسخه دسته‌ای روش runPivotReport است که امکان تولید چندین گزارش را بااستفاده از یک فراخوانی API فراهم می‌کند.

انتخاب نهاد گزارش‌دهنده

همه روش‌های Data API v1 نیاز دارند که شناسه دارایی Google Analytics در مسیر درخواست نشانی وب به‌شکل properties/GA_PROPERTY_ID مشخص شود، مثلاً:

  POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runPivotReport

گزارش حاصل براساس داده‌های رویداد Google Analytics جمع‌آوری‌شده در دارایی Google Analytics مشخص‌شده تولید خواهد شد.

اگر از یکی از کتابخانه‌های مشتری Data API استفاده می‌کنید، نیازی به دستکاری دستی مسیر نشانی وب درخواست نیست. اکثر مشتریان API پارامتر property را ارائه می‌دهند که رشته‌ای را در قالب properties/GA_PROPERTY_ID انتظار دارد. برای نمونه‌هایی از استفاده از کتابخانه‌های مشتری، راهنمای شروع سریع را ببینید.

درخواست گزارش محوری

برای ساختن درخواست با جدول محوری، از روش runPivotReport یا batchRunPivotReports استفاده کنید.

برای درخواست داده‌های محوری، می‌توانید یک شیء RunPivotReportRequest بسازید. توصیه می‌کنیم با این پارامترهای درخواست شروع کنید:

  • ورودی معتبر در فیلد dateRanges.
  • حداقل یک ورودی معتبر در فیلد ابعاد.
  • حداقل یک ورودی معتبر در فیلد سنجه‌ها.
  • حداقل دو ورودی محوری معتبر در فیلد محورها.

در اینجا یک درخواست نمونه با فیلدهای توصیه‌شده آورده شده است:

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 ستون‌ها و ردیف‌های بُعد نمایان را در پاسخ گزارش توصیف می‌کند.

«نسخه ۱ Data API» از چندین جدول محوری پشتیبانی می‌کند، به‌شرطی که حاصل‌ضرب پارامتر حد برای هر جدول محوری از ۱۰۰٬۰۰۰ فراتر نرود.

تکه‌کد زیر استفاده از 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 نشان می‌دهد هر رویداد از کدام شهر («پاریس» یا «نیویورک») نشئت گرفته است. در درخواست گزارش، می‌توانید صفر یا چند بُعد را مشخص کنید.

ابعاد باید در فیلد ابعاد بدنه درخواست تعریف شوند. برای اینکه این ابعاد در گزارش نمایان باشند، باید در فیلد 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 برای هر شیء Pivot الزامی است تا کاردینالی گزارش محدود شود.

«نسخه ۱ Data API» از چندین جدول محوری پشتیبانی می‌کند، به‌شرطی که حاصل‌ضرب پارامتر limit برای هر جدول محوری از ۱۰۰٬۰۰۰ فراتر نرود.

تکه‌کد زیر استفاده از فیلدهای offset و limit را برای بازیابی پنج بُعد 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
          }
        ]
      }

گزارش کردن پاسخ

پاسخ گزارش محوری درخواست 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 تفاوت دارد، زیرا هر ردیف پاسخ گزارش محوری نشان‌دهنده یک سلول از جدول است، درحالی‌که در گزارش معمولی، یک ردیف پاسخ نشان‌دهنده یک خط کامل جدول است.

مثال زیر بخشی از پاسخ گزارش محوری برای پُرسمانی با ابعاد محوری 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 مراجعه کنید.