Genel bakış

Google Analytics Data API v1, pivot tablolar oluşturmanıza olanak tanır. Pivot tablolar, verilerinizi bir veya daha fazla boyutta döndürerek tablodaki bilgileri yeniden düzenleyip verileri görselleştiren bir veri özetleme aracıdır.

Örneğin, aşağıdaki ham veri tablosunu inceleyin:

Ham veri tablosu

Bu veriler kullanılarak, oturum verilerinin tarayıcıya göre dökümünü yapan bir pivot tablo oluşturulabilir. Ülke ve dil boyutları ek pivot olarak seçilir.

Özetlenmiş veri tablosu

Temel raporlarla paylaşılan özellikler

Özet raporlama istekleri, birçok ortak özellik için temel raporlama istekleriyle aynı anlamsal yapıya sahiptir. Örneğin, sayfalara ayırma, boyut filtreleri ve kullanıcı özellikleri, Pivot Raporlar'da Temel Raporlar'daki gibi çalışır. Bu kılavuzda, pivot raporlama özelliklerine odaklanılmaktadır. Data API v1'in temel raporlama işlevini öğrenmek için Raporlama Temelleri Kılavuzu'nun yanı sıra Gelişmiş Kullanım Alanları Kılavuzu'nu okuyun.

Özet raporlama yöntemleri

Data API v1, aşağıdaki raporlama yöntemlerinde pivot işlevini destekler:

  • runPivotReport Bu yöntem, Google Analytics etkinlik verilerinizin özelleştirilmiş bir pivot raporunu döndürür. Her bir pivot, rapor yanıtındaki görünür boyut sütunlarını ve satırlarını açıklar.

  • batchRunPivotReports: Bu, tek bir API çağrısıyla birden fazla rapor oluşturulmasına olanak tanıyan runPivotReport yönteminin toplu sürümüdür.

Raporlama Varlığı Seçme

Data API v1'in tüm yöntemlerinde, Google Analytics mülk tanımlayıcısının bir URL isteği yolunda properties/GA_PROPERTY_ID biçiminde belirtilmesi gerekir. Örneğin:

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

Sonuç raporu, belirtilen Google Analytics mülkünde toplanan Google Analytics etkinlik verilerine göre oluşturulur.

Data API istemci kitaplıklarından birini kullanıyorsanız istek URL'si yolunu manuel olarak değiştirmeniz gerekmez. Çoğu API istemcisi, property biçiminde bir dize bekleyen bir properties/GA_PROPERTY_ID parametresi sağlar. İstemci kitaplıklarını kullanma örnekleri için Hızlı başlangıç kılavuzu'na bakın.

Özet rapor isteği

Pivot tablo içeren bir istek oluşturmak için runPivotReport veya batchRunPivotReports yöntemini kullanın.

Özetlenmiş verileri istemek için RunPivotReportRequest nesnesi oluşturabilirsiniz. Aşağıdaki istek parametreleriyle başlamanızı öneririz:

  • dateRanges alanına geçerli bir giriş.
  • Boyutlar alanında en az bir geçerli giriş.
  • metrics alanında en az bir geçerli giriş.
  • pivots alanında en az iki geçerli pivot girişi.

Aşağıda, önerilen alanları içeren örnek bir istek verilmiştir:

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
      }
    ]
  }

Pivotlar

Rapor pivotlarını tanımlamak için istek gövdesinin pivot alanındaki Pivot nesnelerini kullanın. Her Pivot, rapor yanıtındaki görünür boyut sütunlarını ve satırlarını açıklar.

Data API v1,her pivot için limit parametresinin çarpımı 100.000'i aşmadığı sürece birden fazla pivotu destekler.

Aşağıda, pivots boyutuna göre pivotlanmış, ülkeye göre oturum sayısı raporu oluşturmak için browser kullanımını gösteren bir snippet yer almaktadır. Sorgunun, orderBys alanını sıralama için, limit ve offset alanlarını ise sayfalara ayırma için nasıl kullandığına dikkat edin.

    "pivots": [
      {
        "fieldNames": [
          "country"
        ],
        "limit": 250,
        "orderBys": [
          {
            "dimension": {
              "dimensionName": "country"
            }
          }
        ]
      },
      {
        "fieldNames": [
          "browser"
        ],
        "offset": 3,
        "limit": 3,
        "orderBys": [
          {
            "metric": {
              "metricName": "sessions"
            },
            "desc": true
          }
        ]
      }
    ],
    ...

Boyutlar

Boyutlar, web siteniz veya uygulamanız için etkinlik verilerini tanımlar ve gruplandırır. Örneğin, city boyutu her etkinliğin kaynağı olan şehri ("Paris" veya "New York") gösterir. Bir rapor isteğinde sıfır veya daha fazla boyut belirtebilirsiniz.

Boyutlar, istek gövdesinin dimensions alanında tanımlanmalıdır. Bu boyutların bir raporda görünür olması için Pivot nesnesinin fieldNames alanında da listelenmesi gerekir. Bir boyut, özet sorgusunun herhangi bir özetinde kullanılmıyorsa raporda görünmez. Her boyut, pivot tablonun fieldNames içinde bulunmak zorunda değildir. Boyutlar yalnızca filtrelerde kullanılabilir ve herhangi bir pivotun fieldNames bölümünde kullanılamaz.

Aşağıda, browser, country ve language pivot'larına sahip bir tabloda dimension ve fieldNames alanlarının kullanımını gösteren bir snippet yer almaktadır:

    "pivots": [
      {
        "fieldNames": [
          "browser"
        ],
        "limit": 5,
        "orderBys": [
          {
            "metric": {
              "metricName": "sessions"
            },
            "desc": true
          }
        ]
      },
      {
        "fieldNames": [
          "country"
        ],
        "limit": 250,
        "orderBys": [
          {
            "dimension": {
              "dimensionName": "country"
            }
          }
        ]
      },
      {
        "fieldNames": [
          "language"
        ],
        "limit": 10
      }
    ],

Metrikler

Metrikler, web siteniz veya uygulamanız için etkinlik verilerinin nicel ölçümleridir. Bir rapor isteğinde bir veya daha fazla metrik belirtebilirsiniz. İsteklerde belirtilebilecek API metriği adlarının tam listesi için API Metrikleri bölümüne bakın.

Pivot rapor isteklerinde metrikler, Temel Raporlama yöntemlerine benzer şekilde istek gövdesinin metrics alanı kullanılarak tanımlanır.

Aşağıdaki örnekte, bir raporda metrik değeri olarak kullanılacak oturum sayısı belirtilmektedir:

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

Metrik toplamaları

Her pivot için toplu metrik değerlerini hesaplamak üzere Pivot nesnesinin metricAggregations alanını kullanın.

Toplamalar yalnızca bir istekte metricAggregations alanı belirtilmişse hesaplanır.

Aşağıda, browser pivot boyutu için toplamları isteyen bir sorgunun snippet'i yer almaktadır:

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

Hesaplanmış metrikler, RunPivotReportResponse nesnesinin aggregates alanında döndürülür. Toplanmış metrik satırları için dimensionValues alanı, RESERVED_TOTAL, RESERVED_MAX veya RESERVED_MIN özel değerini içerir.

  "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"
        }
      ]
    },
  ....

  }

Sayfalara ayırma

Temel raporlama yöntemlerine benzer şekilde, pivot istekleri de sayfalara ayırma uygulamak için sınır ve ofset alanlarını Pivot nesnesinde belirtmenize olanak tanır. Sayfalama ayarları her bir pivot için ayrı ayrı uygulanır. Rapor kardinalitesini sınırlamak için her Pivot nesnesinde limit alanı zorunludur.

Data API v1,her pivot için limit parametresinin çarpımı 100.000'i aşmadığı sürece birden fazla pivotu destekler.

Aşağıda, offset ve limit alanlarının, 10'luk bir ofsetle sonraki beş language boyutunu almak için nasıl kullanıldığını gösteren bir snippet yer almaktadır:

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

Filtreleme

Temel raporlama işlevine benzer şekilde, özet raporlama isteğinde boyutların filtrelenmesi isteniyorsa istek kapsamlı bir boyut filtresi kullanılmalıdır.

Sıralama

Pivot rapor sorgularının sıralama davranışı, orderBys alanı kullanılarak her pivot için ayrı ayrı kontrol edilebilir. Bu alan, OrderBy nesnelerinin listesini içeren bir Pivot nesnesinin alanıdır.

Her OrderBy aşağıdakilerden birini içerebilir:

Bu örnekte, raporu browser boyutuna göre özetleyen ve sonuçları sessions metriğine göre azalan sırada sıralayan bir özet tanımı snippet'i gösterilmektedir.

      {
        "fieldNames": [
          "browser"
        ],
        "limit": 5,
        "orderBys": [
          {
            "metric": {
              "metricName": "sessions"
            },
            "desc": true
          }
        ]
      }

Yanıtı Bildir

Bir pivot raporu API isteğinin Pivot Raporu Yanıtı, öncelikle bir başlık ve satırlardan oluşur.

Yanıt Başlıkları

Pivot rapor başlığı, pivot rapordaki sütunları listeleyen PivotHeaders, DimensionHeaders ve MetricHeaders'dan oluşur.

Örneğin, browser, country ve language pivot boyutlarına ve sessions metriğine sahip bir rapor şu gibi başlıklar oluşturur:

{
  "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"
    }
  ],
  ...

}

Aşağıdaki grafik, Pivot Raporu Yanıtı'nın her bir bileşeninin pivot raporu oluşturmadaki rolünü gösterir:

Ham veri tablosu

Yanıt Satırları

runPivotReport ve batchRunPivotReports yöntemlerinin pivot rapor yanıtı, runReport ve batchRunReports gibi temel raporlama yöntemlerinin yanıtından farklıdır. Her pivot rapor yanıtı satırı, tablonun tek bir hücresini temsil ederken normal bir raporda tek bir yanıt satırı, tablonun tamamını temsil eder.

Aşağıda, browser, country ve language pivot boyutları ile sessions metriğini içeren bir sorgu için pivot rapor yanıtının bir bölümü yer almaktadır. Özet raporun her hücresi ayrı ayrı döndürülür:

  "rows": [
    {
      "dimensionValues": [
        {
          "value": "Chrome"
        },
        {
          "value": "United States"
        },
        {
          "value": "English"
        }
      ],
      "metricValues": [
        {
          "value": "1"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Firefox"
        },
        {
          "value": "Canada"
        },
        {
          "value": "French"
        }
      ],
      "metricValues": [
        {
          "value": "3"
        }
      ]
    },
    ...

  ]

Bu veriler, aşağıdaki tabloda vurgulanan iki hücreye karşılık gelir:

Ham veri tablosu

İstemci kitaplıkları

İstemci kitaplıklarının nasıl yükleneceği ve yapılandırılacağıyla ilgili açıklama için Hızlı başlangıç kılavuzu'na bakın.

Aşağıdaki örneklerde, tarayıcı boyutuna göre pivotlanmış, ülkeye göre oturum sayısı raporu oluşturmak için pivot sorgusu çalıştırmak üzere istemci kitaplığı kullanılmaktadır.

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

Demo uygulaması

JavaScript kullanarak nasıl pivot rapor oluşturulup görüntüleneceğine dair bir örnek için Google Analytics API v1 Pivot Report Demo uygulamasına bakın.