ภาพรวม

Google Analytics Data API v1 ช่วยให้คุณสร้างตาราง Pivot ได้ ตาราง Pivot เป็นเครื่องมือสรุปข้อมูลซึ่งแสดงข้อมูลเป็นภาพโดยการจัดเรียงข้อมูลในตารางใหม่ด้วยการหมุน (Pivot) ข้อมูลในมิติข้อมูล 1 รายการหรือหลายรายการ

ตัวอย่างเช่น ลองดูตารางข้อมูลดิบต่อไปนี้

ตารางข้อมูลดิบ

การใช้ข้อมูลนี้ช่วยให้คุณสร้างตาราง Pivot ซึ่งแจกแจงข้อมูลเซสชันตามเบราว์เซอร์ได้ โดยเลือกมิติข้อมูลประเทศและภาษาเป็น Pivot เพิ่มเติม

ตารางข้อมูลที่กรองข้อมูล

ฟีเจอร์ที่แชร์กับรายงานหลัก

คําขอการรายงาน Pivot มีความหมายเหมือนกับคําขอรายงานหลักสําหรับฟีเจอร์ที่แชร์หลายรายการ เช่น การแบ่งหน้า ตัวกรองมิติข้อมูล และพร็อพเพอร์ตี้ผู้ใช้จะทํางานในรายงาน Pivot เหมือนกับรายงานหลัก คู่มือนี้มุ่งเน้นที่ฟีเจอร์การรายงาน Pivot หากต้องการทําความคุ้นเคยกับฟังก์ชันการรายงานหลักของ Data API v1 โปรดอ่านคู่มือพื้นฐานเกี่ยวกับการรายงาน รวมถึงคู่มือกรณีการใช้งานขั้นสูง

วิธีรายงาน Pivot

Data API v1 รองรับฟังก์ชัน Pivot ในการรายงานด้วยวิธีการต่อไปนี้

  • runPivotReport วิธีนี้จะแสดงรายงาน Pivot ที่กําหนดเองของข้อมูลเหตุการณ์ Google Analytics แต่ละตาราง Pivot จะอธิบายคอลัมน์และแถวมิติข้อมูลที่มองเห็นได้ในการตอบกลับของรายงาน

  • batchRunPivotReports เป็นเมธอด runPivotReport เวอร์ชันกลุ่ม ซึ่งช่วยให้สร้างรายงานได้หลายรายการโดยใช้การเรียก API ครั้งเดียว

การเลือกเอนทิตีการรายงาน

เมธอดทั้งหมดของ Data API v1 กำหนดให้ต้องระบุตัวระบุพร็อพเพอร์ตี้ Google Analytics ในเส้นทางคำขอ URL ในรูปแบบ properties/GA_PROPERTY_ID เช่น

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

รายงานที่สร้างขึ้นจะอิงตามข้อมูลเหตุการณ์ Google Analytics ที่รวบรวมในพร็อพเพอร์ตี้ Google Analytics ที่ระบุ

หากคุณใช้ไลบรารีของไคลเอ็นต์ Data API รายการใดรายการหนึ่ง คุณไม่จำเป็นต้องจัดการเส้นทาง URL คำขอด้วยตนเอง ไคลเอ็นต์ API ส่วนใหญ่จะให้พารามิเตอร์ property ที่คาดหวังสตริงในรูปแบบของ properties/GA_PROPERTY_ID ดูตัวอย่างการใช้ไลบรารีของไคลเอ็นต์ได้ในคู่มือเริ่มใช้งานฉบับย่อ

คําขอรายงาน Pivot

หากต้องการสร้างคําขอที่มีตาราง Pivot ให้ใช้เมธอด runPivotReport หรือ batchRunPivotReports

หากต้องการขอข้อมูล Pivot ให้สร้างออบเจ็กต์ RunPivotReportRequest เราขอแนะนำให้เริ่มต้นด้วยพารามิเตอร์คำขอต่อไปนี้

  • รายการที่ถูกต้องในช่อง dateRanges
  • รายการที่ถูกต้องอย่างน้อย 1 รายการในฟิลด์มิติข้อมูล
  • รายการที่ถูกต้องอย่างน้อย 1 รายการในฟิลด์ metrics
  • รายการ Pivot ที่ถูกต้องอย่างน้อย 2 รายการในฟิลด์ 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 ของเนื้อหาคำขอเพื่อกำหนด Pivot ของรายงาน Pivot แต่ละรายการจะอธิบายมิติข้อมูลคอลัมน์และแถวที่มองเห็นได้ในการตอบกลับรายงาน

Data API v1 รองรับ Pivot หลายรายการ ตราบใดที่ผลคูณของพารามิเตอร์ limit สำหรับ Pivot แต่ละรายการไม่เกิน 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 จะระบุเมือง ("ปารีส" หรือ "นิวยอร์ก") ที่เป็นต้นทางของเหตุการณ์แต่ละรายการ ในคําขอรายงาน คุณสามารถระบุมิติข้อมูลได้ตั้งแต่ 0 รายการขึ้นไป

ต้องกําหนดมิติข้อมูลภายในช่องมิติข้อมูลของเนื้อหาคําขอ มิติข้อมูลเหล่านั้นต้องแสดงอยู่ในช่อง fieldNames ของออบเจ็กต์ Pivot ด้วยจึงจะปรากฏในรายงาน มิติข้อมูลจะไม่ปรากฏในรายงานหากไม่ได้ใช้ใน Pivot ของคําค้นหา Pivot มิติข้อมูลบางรายการไม่จำเป็นต้องอยู่ในfieldNamesของตาราง Pivot มิติข้อมูลใช้ได้เฉพาะในตัวกรองเท่านั้น และไม่ใช้ในfieldNamesของตาราง Pivot

ด้านล่างนี้คือตัวอย่างการใช้ฟิลด์ dimension และ fieldNames สำหรับตารางที่มี Pivot 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
      }
    ],

เมตริก

เมตริกคือการวัดข้อมูลเหตุการณ์เชิงปริมาณสําหรับเว็บไซต์หรือแอปของคุณ คุณสามารถระบุเมตริกอย่างน้อย 1 รายการในคําขอรายงาน ดูรายการชื่อเมตริก API ทั้งหมดที่หัวข้อเมตริก API ซึ่งระบุได้ในคําขอ

ในคําขอรายงาน Pivot ระบบจะกําหนดเมตริกโดยใช้ช่อง metrics ของเนื้อหาคําขอ ซึ่งคล้ายกับวิธีการรายงานหลัก

ตัวอย่างด้านล่างระบุจํานวนเซสชันที่จะใช้เป็นค่าเมตริกในรายงาน

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

การรวมเมตริก

ใช้ฟิลด์ metricAggregations ของออบเจ็กต์ Pivot เพื่อคํานวณค่าเมตริกรวมสําหรับ Pivot แต่ละรายการ

ระบบจะคํานวณการรวมข้อมูลก็ต่อเมื่อระบุช่อง metricAggregations ในคําขอ

ด้านล่างนี้คือตัวอย่างข้อมูลโค้ดของคําค้นหาที่ขอยอดรวมสําหรับbrowserมิติข้อมูล Pivot

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

  }

การใส่เลขหน้า

คำขอ Pivot ช่วยให้คุณสามารถระบุช่อง limit และ offset ในออบเจ็กต์ Pivot เพื่อใช้การแบ่งหน้าได้ ซึ่งคล้ายกับวิธีการรายงานหลัก การตั้งค่าการแบ่งหน้าจะมีผลกับ Pivot แต่ละรายการแยกกัน ออบเจ็กต์ Pivot ทุกรายการต้องมีฟิลด์ limit เพื่อจํากัด Cardinality ของรายงาน

Data API v1 รองรับหลาย Pivot ตราบใดที่ผลคูณของlimit พารามิเตอร์สําหรับ Pivot แต่ละรายการไม่เกิน 100,000

ด้านล่างนี้คือข้อมูลโค้ดที่แสดงการใช้ช่อง offset และ limit เพื่อดึงข้อมูลมิติข้อมูล language 5 รายการถัดไปโดยมีการเลื่อน 10

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

การกรอง

เช่นเดียวกับฟังก์ชันการรายงานหลัก คุณต้องใช้ตัวกรองมิติข้อมูลระดับคำขอหากต้องการกรองมิติข้อมูลในคำขอการรายงาน Pivot

การจัดเรียง

คุณควบคุมลักษณะการจัดเรียงของการค้นหารายงาน Pivot สำหรับ Pivot แต่ละรายการแยกกันได้โดยใช้ช่อง orderBys ของออบเจ็กต์ Pivot ซึ่งมีรายการออบเจ็กต์ OrderBy

OrderBy แต่ละรายการจะมีค่าใดค่าหนึ่งต่อไปนี้

  • DimensionOrderBy จัดเรียงผลลัพธ์ตามค่าของมิติข้อมูล
  • MetricOrderBy จัดเรียงผลลัพธ์ตามค่าของเมตริก
  • PivotOrderBy ใช้กับการค้นหา Pivot และจัดเรียงผลลัพธ์ตามค่าของเมตริกภายในกลุ่มคอลัมน์ Pivot

ตัวอย่างนี้แสดงข้อมูลโค้ดสําหรับคําจํากัดความของ Pivot ที่เปลี่ยนมุมมองรายงานตามมิติข้อมูล browser โดยจัดเรียงผลลัพธ์ตามเมตริก sessions ตามลําดับจากมากไปน้อย

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

รายงานคำตอบ

การตอบกลับรายงาน Pivot ของคําขอ API รายงาน Pivot ประกอบด้วยส่วนหัวและแถวเป็นหลัก

ส่วนหัวการตอบกลับ

ส่วนหัวของรายงาน Pivot ประกอบด้วย PivotHeaders, DimensionHeaders และ MetricHeaders ซึ่งแสดงรายการคอลัมน์ในรายงาน Pivot

เช่น รายงานที่มีมิติข้อมูล Pivot 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ตอบกลับในการแสดงผลรายงาน Pivot

ตารางข้อมูลดิบ

แถวคำตอบ

การตอบสนองของรายงาน Pivot ของเมธอด runPivotReport และ batchRunPivotReports แตกต่างจากการตอบสนองสําหรับเมธอดการรายงานหลัก เช่น runReport และ batchRunReports ตรงที่แถวการตอบสนองของรายงาน Pivot แต่ละแถวแสดงเซลล์เดียวของตาราง ในขณะที่ในรายงานปกติ แถวการตอบสนองแต่ละแถวแสดงบรรทัดตารางที่สมบูรณ์

ด้านล่างคือตัวอย่างคําตอบของรายงาน Pivot สําหรับการค้นหาที่มีมิติข้อมูล Pivot browser, country และ language และเมตริก sessions ระบบจะแสดงผลแต่ละเซลล์ของรายงาน Pivot แยกกัน ดังนี้

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

  ]

ข้อมูลนี้สอดคล้องกับ 2 เซลล์ที่ไฮไลต์ในตารางด้านล่าง

ตารางข้อมูลดิบ

ไลบรารีของไคลเอ็นต์

ดูคำอธิบายเกี่ยวกับวิธีติดตั้งและกำหนดค่าไลบรารีของไคลเอ็นต์ได้ที่คู่มือเริ่มใช้งานฉบับย่อ

ตัวอย่างต่อไปนี้ใช้ไลบรารีของไคลเอ็นต์เพื่อเรียกใช้การค้นหา Pivot เพื่อสร้างรายงานจํานวนเซสชันตามประเทศ โดย Pivot ตามมิติข้อมูลเบราว์เซอร์

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 โดยใช้ JavaScript ได้ในแอปพลิเคชันสาธิตรายงาน Pivot ของ Google Analytics API v1