نمای کلی

رابط برنامه‌نویسی کاربردی داده گوگل آنالیتیکس نسخه ۱ به شما امکان می‌دهد جداول محوری ایجاد کنید. جداول محوری ابزاری برای خلاصه‌سازی داده‌ها هستند که با تنظیم مجدد اطلاعات موجود در جدول و با چرخش (pivot) داده‌های شما در یک یا چند بعد، داده‌ها را تجسم می‌کنند.

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

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

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

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

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

درخواست‌های گزارش محوری (Pivot reporting request) از نظر بسیاری از ویژگی‌های مشترک، معنای یکسانی با درخواست‌های گزارش اصلی (Core report request) دارند. برای مثال، صفحه‌بندی، فیلترهای ابعاد (Dimension Filters) و ویژگی‌های کاربر (User Properties)، در گزارش‌های محوری (Pivot Reports) مانند گزارش‌های اصلی (Core Reports) رفتار می‌کنند. این راهنما بر ویژگی‌های گزارش محوری تمرکز دارد. برای آشنایی با عملکرد گزارش اصلی (Core Reporting) رابط برنامه‌نویسی کاربردی داده (Data API) نسخه ۱، راهنمای اصول گزارش‌دهی و همچنین راهنمای موارد استفاده پیشرفته را مطالعه کنید.

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

رابط برنامه‌نویسی کاربردی داده نسخه ۱ از قابلیت محوری در روش‌های گزارش‌گیری زیر پشتیبانی می‌کند:

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

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

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

تمام متدهای Data API نسخه ۱ نیاز دارند که شناسه ویژگی Google Analytics در مسیر درخواست URL به شکل properties/GA_PROPERTY_ID مشخص شود، مانند:

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

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

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

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

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

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

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

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

اچ‌تی‌پی

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

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

در زیر قطعه کدی وجود دارد که استفاده از pivots را برای ساخت گزارشی از تعداد جلسات بر اساس کشور، که توسط بُعد browser pivot شده است، نشان می‌دهد. توجه کنید که چگونه پرس و جو از فیلد 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 نیز فهرست شوند. اگر یک بُعد در هیچ pivot از یک پرس‌وجوی pivot استفاده نشود، در گزارش قابل مشاهده نخواهد بود. لازم نیست هر بُعدی در fieldNames یک pivot وجود داشته باشد. ابعاد می‌توانند منحصراً در فیلترها استفاده شوند و نه در fieldNames هیچ pivot.

در زیر قطعه کدی وجود دارد که نحوه استفاده از فیلدهای 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
      }
    ],

معیارها

معیارها ، اندازه‌گیری‌های کمی از داده‌های رویداد برای وب‌سایت یا برنامه شما هستند. در یک درخواست گزارش، می‌توانید یک یا چند معیار را مشخص کنید. برای مشاهده لیست کامل نام‌های معیارهای API که برای مشخص شدن در درخواست‌ها موجود هستند، به معیارهای API مراجعه کنید.

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

مثال زیر تعداد جلسات را به عنوان یک مقدار معیار در یک گزارش مشخص می‌کند:

    "metrics": [
      {
        "name": "sessions"
      }
    ],

تجمیع‌های متریک

از فیلد metricAggregations یک شیء Pivot برای محاسبه مقادیر متریک تجمیع‌شده برای هر محور استفاده کنید.

تجمیع‌ها فقط در صورتی محاسبه می‌شوند که فیلد metricAggregations در درخواست مشخص شده باشد.

در زیر قطعه‌ای از یک پرس‌وجو آمده است که مجموع مقادیر را برای بُعد محوری browser درخواست می‌کند:

"pivots": [
  {
    "fieldNames": [
      "browser"
    ],
    "limit": 10,
    "metricAggregations": [
      "TOTAL",
    ]
  },
  ...

معیارهای محاسبه‌شده در فیلد تجمیع‌شده از شیء 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"
        }
      ]
    },
  ....

  }

صفحه بندی

مشابه روش‌های گزارش‌گیری اصلی ، درخواست‌های محوری به شما امکان می‌دهند فیلدهای محدودیت و افست را در شیء Pivot برای پیاده‌سازی صفحه‌بندی مشخص کنید. تنظیمات صفحه‌بندی به صورت جداگانه برای هر شیء Pivot اعمال می‌شود. فیلد limit برای هر شیء Pivot به منظور محدود کردن تعداد تکرار گزارش مورد نیاز است.

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

در زیر قطعه کدی وجود دارد که استفاده از فیلدهای offset و limit را برای بازیابی پنج بعد language بعدی با offset برابر با 10 نشان می‌دهد:

      {
        "fieldNames": [
          "language"
        ],
        "offset": 10,
        "limit": 5
      }

فیلتر کردن

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

مرتب‌سازی

رفتار مرتب‌سازی کوئری‌های گزارش‌های محوری را می‌توان برای هر محور به صورت جداگانه با استفاده از فیلد orderBys از یک شیء Pivot کنترل کرد، که شامل لیستی از اشیاء OrderBy است.

هر OrderBy می‌تواند شامل یکی از موارد زیر باشد:

  • DimensionOrderBy ، نتایج را بر اساس مقادیر یک بُعد مرتب می‌کند.
  • تابع MetricOrderBy نتایج را بر اساس مقادیر یک معیار مرتب می‌کند.
  • PivotOrderBy ، در کوئری‌های pivot استفاده می‌شود و نتایج را بر اساس مقادیر یک معیار در یک گروه ستون pivot مرتب می‌کند.

این مثال قطعه کدی برای تعریف محور (pivot) را نشان می‌دهد که گزارش را بر اساس بُعد 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 با پاسخ متدهای Core Reporting مانند 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"
        }
      ]
    },
    ...

  ]

این داده‌ها مربوط به دو سلول مشخص شده در جدول زیر هستند:

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

کتابخانه‌های کلاینت

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

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

پی اچ پی

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()
        );
    }
}

پایتون

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)

نود جی اس

  // 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 مراجعه کنید.