การย้ายข้อมูลไปยัง Google Analytics Data API v1

เอกสารนี้จะอธิบายวิธีย้ายข้อมูลโค้ดที่มีอยู่จาก Google Analytics Reporting API v4 ไปยัง Google Analytics Data API v1 และให้ภาพรวมคร่าวๆ เกี่ยวกับความแตกต่างสำคัญระหว่าง API ทั้งสอง

เหตุใดฉันจึงต้องย้ายข้อมูล

หากแอปพลิเคชันต้องการเข้าถึงข้อมูลในพร็อพเพอร์ตี้ Google Analytics 4 คุณต้องอัปเดตโค้ดให้ใช้ Data API v1 เนื่องจาก Reporting API v4 จะเข้าถึงได้เฉพาะพร็อพเพอร์ตี้ที่สร้างด้วย Universal Analytics เท่านั้น

ข้อกำหนดเบื้องต้น

โปรดทำความคุ้นเคยกับข้อมูลพื้นฐานของ Data API v1 โดยใช้คู่มือเริ่มใช้งานฉบับย่อ

เริ่มต้นใช้งาน

ในการเริ่มต้นใช้งาน คุณจะต้องเตรียมพร็อพเพอร์ตี้ Google Analytics 4 เปิดใช้ Data API v1 แล้วตั้งค่าไลบรารีของไคลเอ็นต์ API ที่เหมาะกับแพลตฟอร์มของคุณ

เตรียมพร็อพเพอร์ตี้ Google Analytics 4

ก่อนที่จะเริ่มย้ายโค้ดเพื่อรองรับ Data API v1 คุณต้องย้ายข้อมูลเว็บไซต์ไปใช้พร็อพเพอร์ตี้ Google Analytics 4 คุณไม่สามารถทดแทนข้อมูลพร็อพเพอร์ตี้ Google Analytics 4 ด้วยข้อมูลย้อนหลังจากพร็อพเพอร์ตี้ Universal Analytics

เปิดใช้ API

คลิกปุ่มนี้เพื่อเปิดใช้ Data API v1 โดยอัตโนมัติในโปรเจ็กต์ Google Cloud ที่คุณเลือก

เปิดใช้ Google Analytics Data API v1

การใช้ไลบรารีของไคลเอ็นต์

ติดตั้งไลบรารีของไคลเอ็นต์

หากใช้ไลบรารีของไคลเอ็นต์ คุณต้องติดตั้งไลบรารีของไคลเอ็นต์ Data API v1 สำหรับภาษาโปรแกรมที่คุณใช้

เริ่มต้นไลบรารีของไคลเอ็นต์

ไลบรารีของไคลเอ็นต์ Data API v1 ออกแบบมาเพื่อช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว โดยค่าเริ่มต้น ไลบรารีของไคลเอ็นต์จะพยายามค้นหาข้อมูลเข้าสู่ระบบของบัญชีบริการโดยอัตโนมัติ

วิธีง่ายๆ ในการระบุข้อมูลเข้าสู่ระบบของบัญชีบริการคือการตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS โดยไคลเอ็นต์ API จะใช้ค่าของตัวแปรนี้เพื่อค้นหาไฟล์ JSON ของคีย์บัญชีบริการ

เช่น คุณตั้งค่าข้อมูลเข้าสู่ระบบของบัญชีบริการได้โดยเรียกใช้คำสั่งต่อไปนี้และใช้เส้นทางไปยังไฟล์ JSON ของบัญชีบริการ

export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

ด้านล่างนี้คือข้อมูลโค้ดที่ใช้กันโดยทั่วไปในการเริ่มต้นไลบรารีของไคลเอ็นต์ Data API v1

Java

    // Using a default constructor instructs the client to use the credentials
    // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {

Python

    # Using a default constructor instructs the client to use the credentials
    # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = BetaAnalyticsDataClient()

.NET

            // Using a default constructor instructs the client to use the credentials
            // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
            BetaAnalyticsDataClient client = BetaAnalyticsDataClient.Create();

PHP

// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
$client = new BetaAnalyticsDataClient();

Node.js

  // Imports the Google Analytics Data API client library.
  const {BetaAnalyticsDataClient} = require('@google-analytics/data');

  // Using a default constructor instructs the client to use the credentials
  // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
  const analyticsDataClient = new BetaAnalyticsDataClient();

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

Java

    // Explicitly use service account credentials by specifying
    // the private key file.
    GoogleCredentials credentials =
        GoogleCredentials.fromStream(new FileInputStream(credentialsJsonPath));

    BetaAnalyticsDataSettings betaAnalyticsDataSettings =
        BetaAnalyticsDataSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
            .build();

    try (BetaAnalyticsDataClient analyticsData =
        BetaAnalyticsDataClient.create(betaAnalyticsDataSettings)) {

Python

    # TODO(developer): Uncomment this variable and replace with a valid path to
    #  the credentials.json file for your service account downloaded from the
    #  Cloud Console.
    # credentials_json_path = "/path/to/credentials.json"

    # Explicitly use service account credentials by specifying
    # the private key file.
    client = BetaAnalyticsDataClient.from_service_account_json(credentials_json_path)

.NET

            /**
             * TODO(developer): Uncomment this variable and replace with a valid path to
             *  the credentials.json file for your service account downloaded from the
             *  Cloud Console.
             *  Otherwise, default service account credentials will be derived from
             *  the GOOGLE_APPLICATION_CREDENTIALS environment variable.
             */
            // credentialsJsonPath = "/path/to/credentials.json";

            // Explicitly use service account credentials by specifying
            // the private key file.
            BetaAnalyticsDataClient client = new BetaAnalyticsDataClientBuilder
            {
              CredentialsPath = credentialsJsonPath
            }.Build();

PHP

/**
 * @param string $credentialsJsonPath Valid path to the credentials.json file for your service
 *                                    account downloaded from the Cloud Console.
 *                                    Example: "/path/to/credentials.json"
 */
function client_from_json_credentials(string $credentialsJsonPath)
{
    // Explicitly use service account credentials by specifying
    // the private key file.
    $client = new BetaAnalyticsDataClient([
        'credentials' => $credentialsJsonPath
    ]);

    return $client;
}

Node.js

  /** TODO(developer): Uncomment this variable and replace with a valid path to
   *  the credentials.json file for your service account downloaded from the
   *  Cloud Console.
   */
  // credentialsJsonPath = '/path/to/credentials.json';

  // Imports the Google Analytics Data API client library.
  const {BetaAnalyticsDataClient} = require('@google-analytics/data');

  // Explicitly use service account credentials by specifying
  // the private key file.
  const analyticsDataClient = new BetaAnalyticsDataClient({
    keyFilename: credentialsJsonPath,
  });

ไม่ใช้ไลบรารีของไคลเอ็นต์

หากเคยใช้ Reporting API v4 โดยไม่มีไลบรารีของไคลเอ็นต์และต้องการใช้งาน Data API v1 ต่อไป คุณจะยังคงใช้ข้อมูลเข้าสู่ระบบได้

คุณต้องใช้ปลายทาง HTTP และเอกสารการค้นหาใหม่ที่ให้โดย Data API ดังนี้

หากโค้ดใช้ประโยชน์จากเอกสาร Discovery คุณจะต้องอัปเดตโค้ดในเอกสารการค้นพบที่มาจาก Data API v1 ดังนี้

หลังจากอัปเดตปลายทางแล้ว คุณจะต้องทำความคุ้นเคยกับโครงสร้างคำขอและแนวคิดใหม่ของ Data API เพื่ออัปเดตการค้นหา JSON

การรายงานหลัก

วิธีการรายงานที่มีให้บริการ

Reporting API v4 เสนอ batchGet โดยใช้วิธีเดียวในการเข้าถึงฟังก์ชันการรายงานหลัก Data API v1 มีวิธีการรายงาน หลักมากมายให้เลือก ได้แก่

  • runReport วิธีนี้จะแสดงผลรายงานที่กำหนดเองของข้อมูลเหตุการณ์ Google Analytics โดยไม่รองรับฟังก์ชัน Pivot และเป็นวิธีที่แนะนำให้ใช้สำหรับการค้นหารายงานแบบง่าย
  • runPivotReport เมธอดนี้จะแสดงรายงาน Pivot ที่กำหนดเองของข้อมูลเหตุการณ์ Google Analytics คล้ายกับ Pivot ใน Reporting API v4 โดย Pivot แต่ละรายการจะอธิบายคอลัมน์มิติข้อมูลและแถวที่มองเห็นได้ในคำตอบของรายงาน
  • batchRunReports เป็นรูปแบบกลุ่มของเมธอด runReport ที่ช่วยให้สร้างรายงานหลายรายการได้โดยใช้การเรียก API เดียว
  • batchRunPivotReports เป็นรูปแบบของเมธอด runPivotReport หลายรายการที่ช่วยให้สร้างรายงานหลายฉบับได้โดยใช้การเรียก API เดียว

จุดประสงค์ของการมีวิธีการรายงานหลายวิธีนั้นส่วนใหญ่คือความสะดวก โดยมีบางวิธีที่รองรับฟีเจอร์ที่ซับซ้อนกว่าวิธีอื่นๆ (การเปลี่ยนแนวทาง การจัดกลุ่ม) แต่ก็ใช้โครงสร้างคำขอที่คล้ายกันร่วมกัน

การเปลี่ยนแปลงสคีมา API

ความสามารถในการรายงานของทั้ง Reporting API และ Data API จะกำหนดตามสคีมาเป็นหลัก เช่น มิติข้อมูลและเมตริกที่รองรับในการค้นหาการรายงาน สคีมา API ทั้ง 2 แบบมีความแตกต่างกันอย่างมากเนื่องจากแนวคิดที่แตกต่างกันระหว่าง Universal Analytics กับ Google Analytics 4

  • ทำความคุ้นเคยกับรายการมิติข้อมูลและเมตริกปัจจุบันที่ Data API รองรับ ในปัจจุบัน มิติข้อมูลและเมตริกทั้งหมดใช้ร่วมกันได้ ดังนั้นจึงไม่จำเป็นต้องใช้เครื่องมือสำรวจมิติข้อมูลและเมตริกในการระบุชุดค่าผสมที่เข้ากันได้ โดยจะมีการเปลี่ยนแปลงลักษณะการทำงานนี้ในอนาคต
  • มิติข้อมูลที่กำหนดเองใน Google Analytics 4 จะเข้าถึงได้โดยใช้ไวยากรณ์มิติข้อมูลที่กำหนดเองของ Data API v1 ซึ่งควรใช้แทนช่องมิติข้อมูล ga:dimensionXX ของ Reporting API v4
  • เมตริกที่กำหนดเองใน Google Analytics 4 เข้าถึงได้โดยใช้ไวยากรณ์เมตริกที่กำหนดเอง Data API v1 ซึ่งควรใช้แทนช่องเมตริก ga:metricXX ของ Reporting API v4
  • มิติข้อมูลและเมตริกบางรายการที่พบใน Universal Analytics เทียบเท่ากับใน Google Analytics 4 โดยตรง ดูข้อมูลเพิ่มเติมได้ในแผนภูมิเทียบเท่าของสคีมา API ของ UA/GA4
  • ชื่อมิติข้อมูลและเมตริกไม่มีคํานําหน้า ga: ใน Google Analytics 4 อีกต่อไป
  • ฟังก์ชันการทำงานบางอย่างที่มีอยู่ใน Universal Analytics ยังไม่พร้อมใช้งานใน GA4 (เช่น การผสานรวม Campaign Manager, DV360, Search Ads 360) เมื่อมีการนำฟังก์ชันนี้มาใช้ใน Google Analytics 4 แล้ว Data API จะรองรับฟังก์ชันดังกล่าว และจะมีการเพิ่มมิติข้อมูลและเมตริกใหม่ลงในสคีมา API

เอนทิตี

Google Analytics 4 ไม่มีแนวคิดเกี่ยวกับข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ที่เปิดตัวใน Universal Analytics ด้วยเหตุนี้ จึงไม่มีพารามิเตอร์ viewId ในคำขอการรายงาน Data API v1 แต่คุณควรระบุรหัสพร็อพเพอร์ตี้ Google Analytics 4 ที่เป็นตัวเลขในเส้นทาง URL คำขอเมื่อเรียกใช้เมธอด Data API v1 แทน ลักษณะการทำงานนี้จะแตกต่างจาก Reporting API v4 ที่อาศัยรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ในการระบุเอนทิตีการรายงาน

API ข้อมูล v1

ในกรณีที่เป็น Data API v1 คุณต้องระบุรหัสพร็อพเพอร์ตี้ Google Analytics 4 ที่เป็นตัวเลขในเส้นทาง URL

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport

API การรายงาน v4

Reporting API v4 จำเป็นต้องระบุรหัสข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ของ Universal Analytics ในส่วนเนื้อหาของการค้นหารายงาน

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",

    ....

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

ช่วงวันที่

ทั้ง Reporting API v4 และ Data API v1 รองรับช่วงวันที่หลายช่วงที่ระบุโดยใช้ช่อง dateRanges ในคำขอการรายงาน API ทั้งสองใช้รูปแบบการป้อนข้อมูลวันที่เดียวกัน โดยยอมรับค่าวันที่สัมบูรณ์ในรูปแบบ YYYY-MM-DD หรือวันที่สัมพัทธ์ เช่น yesderday, today, 7daysAgo เป็นต้น

คำขอ API ข้อมูลเวอร์ชัน 1 จำกัดอยู่ที่ 4 ช่วงวันที่ ขณะที่ Reporting API เวอร์ชัน 4 อนุญาตให้ใช้ช่วงวันที่ได้ 2 ช่วงในคำขอรายงานเดียว

dateRange แต่ละรายการใน Data API v1 อาจมีช่อง name ที่ไม่บังคับ ซึ่งใช้เพื่ออ้างอิงช่วงวันที่ที่เกี่ยวข้องในการตอบกลับ หากไม่ได้ระบุ name ระบบจะสร้างชื่อช่วงวันที่โดยอัตโนมัติ

เมื่อระบุช่วงวันที่หลายช่วงในคำขอ Data API v1 ระบบจะเพิ่มมิติข้อมูล dateRange ใหม่ลงในการตอบกลับโดยอัตโนมัติ และใช้ชื่อช่วงวันที่เป็นค่ามิติข้อมูล โปรดทราบว่าลักษณะการทำงานนี้แตกต่างจาก Reporting API v4 ซึ่งแสดงข้อมูลสำหรับช่วงวันที่เป็นกลุ่มของค่าเมตริกในแต่ละแถว

คำขอ API ข้อมูล v1

ฟิลด์ name (ไม่บังคับ) จะใช้สำหรับค่า dateRange แต่ละค่าในคำขอ ชื่อช่วงวันที่นี้จะใช้เป็นค่าของมิติข้อมูล dateRange ในการตอบกลับ

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "2020-01-01",
      "endDate": "2020-01-31",
      "name": "year_ago"
    },
    {
      "startDate": "2021-01-01",
      "endDate": "2021-01-31",
      "name": "current_year"
    }
  ]
}

การตอบกลับ Data API v1

ระบบจะรวมมิติข้อมูล dateRange เพิ่มเติมไว้ในคำตอบโดยอัตโนมัติ ค่ามิติข้อมูล dateRange มีชื่อช่วงวันที่ที่มาจากช่อง dateRange.name หรือสร้างขึ้นโดยอัตโนมัติ

....

"dimensionHeaders": [
  {
    "name": "country"
  },
  {
    "name": "dateRange"
  }
],

....

"rows": [

....

  {
    "dimensionValues": [
      {
        "value": "Japan"
      },
      {
        "value": "year_ago"
      }
    ],
    "metricValues": [
      {
        "value": "253286"
      }
    ]
  },
  {
    "dimensionValues": [
      {
        "value": "Japan"
      },
      {
        "value": "current_year"
      }
    ],
    "metricValues": [
      {
        "value": "272582"
      }
    ]
  },

....

คำขอ API การรายงาน v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "2020-01-01",
          "endDate": "2020-01-31",
        },
        {
          "startDate": "2021-01-01",
          "endDate": "2021-01-31",
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ]
    }
  ]
}

การตอบกลับ API การรายงาน v4

ใน Reporting API v4 ระบบจะจัดกลุ่มค่าสำหรับช่วงวันที่แต่ละช่วงไว้ในช่อง metrics ดังนี้

{
  "dimensions": [
    "Japan"
  ],
  "metrics": [
    {
      "values": [
        "253286"
      ]
    },
    {
      "values": [
        "272582"
      ]
    }
  ]
},

กำลังจัดเรียง

คุณสามารถควบคุมลักษณะการเรียงลำดับของการค้นหารายงาน Data API v1 ได้โดยใช้ช่อง orderBys ซึ่งคล้ายกับช่อง orderBys ของ Reporting API v4

มีการเปลี่ยนแปลงข้อกำหนด OrderBy ใน Data API v1 ทุกๆ OrderBy จะมีค่าใดค่าหนึ่งต่อไปนี้ได้

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

ประเภทการเรียงลำดับ DELTA, SMART, HISTOGRAM_BUCKET ที่รองรับโดย Reporting API v4 จะไม่มีการใช้งานใน Data API v1

ประเภทการเรียงลำดับ OrderType.NUMERIC ของ Data API v1 จะมีค่าเท่ากับค่า OrderType.DIMENSION_AS_INTEGER ของ API การรายงาน v4

คำขอ API ข้อมูล v1

ตัวอย่างนี้แสดงตัวอย่างคำค้นหาที่รายงานจำนวนเซสชันตามประเทศ โดยจัดเรียงแถวตามเมตริก sessions จากมากไปน้อย

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ],
  "orderBys": [
    {
      "metric": {
        "metricName": "sessions"
      },
      "desc": true
    }
  ]
}

การตอบกลับ Data API v1

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "sessions",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "United States"
        }
      ],
      "metricValues": [
        {
          "value": "510449"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Japan"
        }
      ],
      "metricValues": [
        {
          "value": "283430"
        }
      ]
    },

....

  ],
  "totalSize": 212,
  "metadata": {}
}

คำขอ API การรายงาน v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
      "orderBys": [
        {
          "fieldName": "ga:sessions",
          "sortOrder": "DESCENDING"
        }
      ]
    }
  ]
}

การตอบกลับ API การรายงาน v4

{
"reports": [
  {

....

    "data": {
      "rows": [
        {
          "dimensions": [
            "United States"
          ],
          "metrics": [
            {
              "values": [
                "510449"
              ]
            }
          ]
        },
        {
          "dimensions": [
            "Japan"
          ],
          "metrics": [
            {
              "values": [
                "283430"
              ]
            }
          ]
        },

....

    }
  ]
}

การกรอง

คุณสามารถใช้อนุประโยค dimensionFilter และ metricFilter ของ Data API v1 แล้ว เพื่อขอให้ API แสดงผลเฉพาะข้อมูลของค่ามิติข้อมูลหรือเมตริกที่ต้องการเท่านั้น ซึ่งคล้ายกับ dimensionFilterClauses และ metricFilterClauses ของ Reporting API v4

Data API v1 ไม่รองรับสตริงนิพจน์ตัวกรอง เช่น คำสั่ง filtersExpression ของ Reporting API v4 ควรเขียนนิพจน์เหล่านี้ใหม่โดยใช้อนุประโยค dimensionFilter และ metricFilter

คำขอ API ข้อมูล v1

คำขอตัวอย่างนี้จะแสดงรายการจำนวนเซสชันสำหรับเส้นทางหน้าเว็บบางเส้นทางที่ผู้ใช้เข้าชม

คำสั่ง dimensionFilter ใช้เพื่อแสดงเฉพาะแถวที่มีค่ามิติข้อมูล pagePath ที่ขึ้นต้นด้วย /webstore/ และมีสตริง action=a12345

คำสั่ง metricFilter จะขอให้เมธอด runReport แสดงเฉพาะแถวที่มีค่าเมตริก sessions มากกว่า 1,000

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "pagePath"
    }
  ],
  "dimensionFilter": {
    "andGroup": {
      "expressions": [
        {
          "filter": {
            "stringFilter": {
              "value": "/webstore/",
              "matchType": "BEGINS_WITH"
            },
            "fieldName": "pagePath"
          }
        },
        {
          "filter": {
            "stringFilter": {
              "matchType": "CONTAINS",
              "value": "action=a12345"
            },
            "fieldName": "pagePath"
          }
        }
      ]
    }
  },
  "metricFilter": {
    "filter": {
      "numericFilter": {
        "value": {
          "int64Value": 1000
        },
        "operation": "GREATER_THAN"
      },
      "fieldName": "sessions"
    }
  },
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ]
}

คำขอ API การรายงาน v4

คำขอตัวอย่างนี้คล้ายกับตัวอย่าง Data API v1 โดยจะแสดงรายการจำนวนเซสชันสำหรับเส้นทางหน้าเว็บบางเส้นทางที่ผู้ใช้เข้าชม

ช่อง dimensionFilterClauses จะใช้เพื่อแสดงเฉพาะแถวที่มีค่ามิติข้อมูล pagePath ขึ้นต้นด้วย /webstore/ และมีสตริง action=a12345

ช่อง metricFilterClauses จะใช้เพื่อแสดงเฉพาะแถวที่มีค่าเมตริก ga:sessions มากกว่า 1,000

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:pagePath"
        }
      ],
      "metricFilterClauses": [
        {
          "filters": [
            {
              "metricName": "ga:sessions",
              "operator": "GREATER_THAN",
              "comparisonValue": "1000"
            }
          ]
        }
      ],
      "dimensionFilterClauses": [
        {
          "filters": [
            {
              "dimensionName": "ga:pagePath",
              "operator": "BEGINS_WITH",
              "expressions": [
                "/webstore/"
              ]
            },
            {
              "dimensionName": "ga:pagePath",
              "operator": "PARTIAL",
              "expressions": [
                "action=a12345"
              ]
            }
          ],
          "operator": "AND"
        }
      ],
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ]
    }
  ]
}

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

Data API v1 ใช้ช่อง limit และ offset เพื่อใส่เลขหน้าผ่านผลลัพธ์การตอบสนองที่ครอบคลุมหลายหน้า ในขณะที่ Reporting API v4 ใช้ pageToken และ pageSize

สำหรับคำขอ Pivot ของ Data API v1 ควรใช้ช่อง limit และ offset ของออบเจ็กต์ Pivot เพื่อใช้การแบ่งหน้าสำหรับ Pivot แต่ละรายการ ตอนนี้คุณต้องระบุช่อง limit สำหรับออบเจ็กต์ Pivot ทุกรายการ

โดยค่าเริ่มต้น Data API v1 จะแสดงข้อมูลเหตุการณ์ไม่เกิน 10,000 แถวแรก ในขณะที่ค่าเริ่มต้นสำหรับ Reporting API v4 คือ 1,000 แถว

ระบบจะแสดงผลจำนวนแถวทั้งหมดที่ตรงกับการค้นหาโดยใช้ช่อง rowCount ในการตอบสนองของ Data API v1 ซึ่งคล้ายกับ Reporting API v4

คำขอ API ข้อมูล v1

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "dateRanges": [

....

  ],
  "metrics": [

....

  ],
  "dimensions": [

....

  ],
  "limit": 5,
  "offset": 15
}

การตอบกลับ Data API v1

{
  "dimensionHeaders": [

....

  ],
  "metricHeaders": [

....

  ],
  "rows": [

....

  ],
  "rowCount": 228,
}

คำขอ API การรายงาน v4

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [

....

      ],
      "metrics": [

....

      ],
      "dimensions": [

....

      ],
      "pageSize": 5,
      "pageToken": "5"

    }
  ]
}

การตอบกลับ API การรายงาน v4

{
  "reports": [
    {

....

      "data": {
        "rows": [

....

        ],

....

        "rowCount": 225,
      },
      "nextPageToken": "15"
    }
  ]
}

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

Data API v1 จะคำนวณค่าการรวมเมื่อมีการระบุช่อง metricAggregations ในคำขอเท่านั้น ในทางตรงกันข้าม Reporting API v4 จะแสดงค่ารวม ต่ำสุด และสูงสุดสำหรับแต่ละเมตริกโดยค่าเริ่มต้น เว้นแต่ว่าช่อง hideTotals และ hideValueRanges เป็น true

คำขอ API ข้อมูล v1

ระบบจะคำนวณการรวมเมื่อมีการระบุช่อง metricAggregations ในคำขอเท่านั้น

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "metricAggregations": [
    "TOTAL",
    "MAXIMUM",
    "MINIMUM"
  ],
  "metrics": [
    {
      "name": "sessions"
    }
  ],
  "dimensions": [
    {
      "name": "country"
    }
  ],
  "dateRanges": [
    {
      "startDate": "yesterday",
      "endDate": "today"
    }
  ]
}

การตอบกลับ Data API v1

ระบบจะแสดงแถวเมตริกแบบรวมในช่อง totals, minimum และ maximum ของคำตอบ สำหรับแถวเมตริกรวม ช่อง dimensionValues จะมีค่าพิเศษเป็น RESERVED_TOTAL, RESERVED_MAX หรือ RESERVED_MIN

{
  "dimensionHeaders": [

  ....

  ],
  "metricHeaders": [

  ....

  ],
  "rows": [

  ....

  ],
  "totals": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_TOTAL"
        },
        {
          "value": "RESERVED_TOTAL"
        }
      ],
      "metricValues": [
        {
          "value": "6026053"
        }
      ]
    }
  ],
  "maximums": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_MAX"
        },
        {
          "value": "RESERVED_MAX"
        }
      ],
      "metricValues": [
        {
          "value": "493655"
        }
      ]
    }
  ],
  "minimums": [
    {
      "dimensionValues": [
        {
          "value": "RESERVED_MIN"
        },
        {
          "value": "RESERVED_MIN"
        }
      ],
      "metricValues": [
        {
          "value": "1"
        }
      ]
    }
  ],

....

}

คำขอ API การรายงาน v4

ตัวอย่างคำขอเพื่อส่งคืนจำนวนเซสชันตามประเทศ

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "yesterday",
          "endDate": "today"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
    }
  ]
}

การตอบกลับ API การรายงาน v4

ช่อง totals, minimums และ maximums จะมีอยู่โดยค่าเริ่มต้นในการตอบกลับจาก Reporting API v4

{
  "reports": [
    {
      "columnHeader": {

         ....

      },
      "data": {
        "rows": [

         ....

        ],

       ....

        "totals": [
          {
            "values": [
              "4493363"
            ]
          }
        ],
        "minimums": [
          {
            "values": [
              "1"
            ]
          }
        ],
        "maximums": [
          {
            "values": [
              "684005"
            ]
          }
        ]

      }
    }
  ]
}

บทความที่เกี่ยวข้อง

Data API v1 รองรับฟังก์ชัน Pivot ในวิธีการรายงาน runPivotReport และ batchRunPivotReports

Reporting API v4 อนุญาตให้รวม pivot ในการค้นหาการรายงานโดยใช้เมธอด batchGet

มีการใช้ Pivot แตกต่างกันไปใน Data API v1 เมื่อเทียบกับ Reporting API v4 ตรงที่แถวคำตอบแต่ละแถวจะแสดงเซลล์เดียวของตาราง ขณะที่ใน Reporting API v4 แถวคำตอบเดียวจะหมายถึงบรรทัดตารางที่สมบูรณ์

API ข้อมูล v1

ข้อมูลด้านล่างคือส่วนย่อยของการตอบสนองของ Data API v1 สำหรับการค้นหา runPivotReport แต่ละเซลล์ของรายงาน Pivot จะแสดงผลแยกออกมาต่างหาก ดังนี้

    "rows": [
      {
        "dimensionValues": [
          {
            "value": "Albania"
          },
          {
            "value": "Edge"
          }
        ],
        "metricValues": [
          {
            "value": "1701"
          }
        ]
      },

API การรายงาน v4

ด้านล่างคือส่วนย่อยของการตอบสนองของ Reporting API v4 สำหรับการค้นหา batchGet แถวการตอบกลับ 1 แถวจะแสดงบรรทัดของตารางที่สมบูรณ์ซึ่งมีค่าเมตริกทั้งหมดสำหรับ Pivot ใน pivotValueRegions ดังนี้

      "data": {
        "rows": [
          {
            "dimensions": [
              "Albania"
            ],
            "metrics": [
              {
                "values": [
                  "42394"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "24658",
                      "17208",
                      "132"
                    ]
                  }
                ]
              }
            ]
          },

ใน Data API v1 ต้องระบุมิติข้อมูลทั้งหมดของการค้นหา runPivotReport หรือ batchRunPivotReports ภายในออบเจ็กต์ Pivot มิติข้อมูลจะไม่ปรากฏในรายงานหากไม่ได้ใช้ใน Pivot ของการค้นหา Pivot

คอลัมน์ Pivot ของ Data API v1 จะระบุโดยใช้ช่อง fieldNames แทนช่อง dimensions ของ Reporting API v4

คุณต้องใช้ตัวกรองมิติข้อมูลที่กําหนดขอบเขตระดับคําขอหากต้องการการกรองมิติข้อมูลในคำขอการรายงาน Data API v1 ซึ่งแตกต่างจาก Reporting API v4 ซึ่งยอมรับข้อกําหนด dimensionFilterClauses ในออบเจ็กต์ Pivot

ช่อง offset ของ Data API v1 ทำงานคล้ายกับช่อง startGroup ของ Reporting API v4

ช่องขีดจํากัดของ Data API v1 คล้ายกับ maxGroupCount ของ Reporting API v4 และควรใช้เพื่อจำกัด Cardinality ของรายงาน

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

โดยค่าเริ่มต้น Data API v1 จะเรียงลำดับมิติข้อมูลภายใน Pivot ตามเมตริกแรกในรายงาน ลักษณะการทำงานนี้จะแตกต่างจาก Reporting API v4 ที่การเรียงลำดับ Pivot จะกำหนดตามลำดับ "ทั้งหมด" ของเมตริกที่ขอจากมากไปน้อย หากต้องการระบุลำดับการจัดเรียงใน Data API v1 ให้ใช้ช่อง orderBys ของข้อกำหนด Pivot

คำขอ API ข้อมูล v1

การค้นหา Pivot ของ Data API v1 นี้จะสร้างรายงานจํานวนเซสชันตามประเทศ โดยแบ่งตามมิติข้อมูล browser หมายเหตุวิธีที่การค้นหาใช้ช่อง orderBys, limit, offset เพื่อสร้างลักษณะการทำงานของคำค้นหา Reporting API v4 ที่คล้ายกัน เพื่อรักษาการตั้งค่าการจัดลำดับและการแบ่งหน้าไว้

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

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

การตอบกลับ Data API v1

{
  "pivotHeaders": [
    {
      "pivotDimensionHeaders": [
        {
          "dimensionValues": [
            {
              "value": "(not set)"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Albania"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Algeria"
            }
          ]
        }
      ],
      "rowCount": 234
    },
    {
      "pivotDimensionHeaders": [
        {
          "dimensionValues": [
            {
              "value": "Safari"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Edge"
            }
          ]
        },
        {
          "dimensionValues": [
            {
              "value": "Opera"
            }
          ]
        }
      ],
      "rowCount": 124
    }
  ],
  "dimensionHeaders": [
    {
      "name": "country"
    },
    {
      "name": "browser"
    }
  ],
  "metricHeaders": [
    {
      "name": "sessions",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "2531"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "1701"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "(not set)"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "1564"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "2531"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "1701"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "1564"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Safari"
        }
      ],
      "metricValues": [
        {
          "value": "237"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Edge"
        }
      ],
      "metricValues": [
        {
          "value": "44"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Algeria"
        },
        {
          "value": "Opera"
        }
      ],
      "metricValues": [
        {
          "value": "22"
        }
      ]
    },

....

  ],

....

}

คำขอ API การรายงาน v4

คำค้นหา Pivot ของ API การรายงาน v4 นี้จะสร้างรายงานจำนวนเซสชันตามประเทศ ซึ่งแบ่งตามมิติข้อมูล ga:browser

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dateRanges": [
        {
          "startDate": "2021-01-01",
          "endDate": "2021-01-30"
        }
      ],
      "metrics": [
        {
          "expression": "ga:sessions"
        }
      ],
      "dimensions": [
        {
          "name": "ga:country"
        }
      ],
      "pivots": [
        {
          "dimensions": [
            {
              "name": "ga:browser"
            }
          ],
          "startGroup": 3,
          "maxGroupCount": 3,
          "metrics": [
            {
              "expression": "ga:sessions"
            }
          ]
        }
      ]
    }
  ]
}

การตอบกลับ API การรายงาน v4

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:country"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:sessions",
              "type": "INTEGER"
            }
          ],
          "pivotHeaders": [
            {
              "pivotHeaderEntries": [
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Edge"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                },
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Opera"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                },
                {
                  "dimensionNames": [
                    "ga:browser"
                  ],
                  "dimensionValues": [
                    "Samsung Internet"
                  ],
                  "metric": {
                    "name": "ga:sessions",
                    "type": "INTEGER"
                  }
                }
              ],
              "totalPivotGroupsCount": 19
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "(not set)"
            ],
            "metrics": [
              {
                "values": [
                  "781283"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "6923",
                      "1385",
                      "66"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "dimensions": [
              "Albania"
            ],
            "metrics": [
              {
                "values": [
                  "42394"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "24658",
                      "17208",
                      "132"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "dimensions": [
              "Algeria"
            ],
            "metrics": [
              {
                "values": [
                  "23208"
                ],
                "pivotValueRegions": [
                  {
                    "values": [
                      "19252",
                      "66",
                      "1582"
                    ]
                  }
                ]
              }
            ]
          },

  ....

        ],

  ....

      }
    }
  ]
}

กลุ่มประชากรตามรุ่น

Data API v1 ใช้ข้อกำหนด CohortSpec เพื่อกำหนดค่ารายงานกลุ่มประชากรตามรุ่น ซึ่งคล้ายกับข้อกำหนดของ CohortGroup ของ Reporting API v4

ปัจจุบันเมตริกทั้งหมดที่มีอยู่ใน Data API v1 สามารถใช้งานร่วมกับการค้นหากลุ่มประชากรตามรุ่นได้ ในขณะที่ Reporting API v4 อนุญาตให้ใช้ชุดเมตริกพิเศษในการค้นหากลุ่มประชากรตามรุ่นเท่านั้น

ในคำขอกลุ่มประชากรตามรุ่น Data API v1 ต้องมีเมตริก cohortActiveUsers

ทั้ง Data API v1 และ Reporting API v4 อนุญาตกลุ่มประชากรตามรุ่น 12 กลุ่มในคำขอเดียว

เมตริกมูลค่าตลอดอายุการใช้งาน (LTV) ยังไม่รองรับใน Data API v1 ในขณะนี้

ความเทียบเท่ากันของเมตริกกลุ่มประชากรตามรุ่น

เมตริกกลุ่มประชากรตามรุ่นส่วนใหญ่ที่กำหนดไว้ใน Reporting API v4 สามารถแทนที่ด้วยนิพจน์เพื่อให้ได้ผลลัพธ์ที่เทียบเท่าใน Data API v1 ได้ตามแผนภูมิด้านล่าง

ชื่อเมตริก API การรายงาน v4 ชื่อหรือนิพจน์เมตริกของ Data API v1
ga:cohortActiveUsers cohortActiveUsers
ga:cohortTotalUsers cohortTotalUsers
ga:cohortRetentionRate "นิพจน์": "กลุ่มประชากรตามรุ่นActiveUsers/cohortTotalUsers"
ga:cohortRevenuePerUser "expression": "totalRevenue/cohortActiveUsers"
ga:cohortVisitDurationPerUser "expression": "userEngagementDuration/cohortActiveUsers"
ga:cohortAppviewsPerUser "expression": "screenPageViews/cohortActiveUsers"
ga:cohortPageviewsPerUser "expression": "screenPageViews/cohortActiveUsers"
ga:cohortSessionsPerUser "expression": "เซสชัน/กลุ่มประชากรตามรุ่นActiveUsers"
ga:cohortGoalCompletionsPerUser "expression": "eventCount/cohortActiveUsers" นอกเหนือจากตัวกรองมิติข้อมูลตาม eventName ที่สอดคล้องกับเหตุการณ์การบรรลุเป้าหมายที่ต้องการ

คำขอ API ข้อมูล v1

ตัวอย่างคำค้นหาที่กำหนดค่ากลุ่มประชากรตามรุ่นของผู้ใช้ซึ่งมีเซสชันแรกเกิดขึ้นในสัปดาห์ของวันที่ 3-01-2021 จำนวนผู้ใช้ที่ใช้งานอยู่และอัตราการรักษาผู้ใช้ จะคำนวณสำหรับกลุ่มประชากรตามรุ่นในช่วง 5 สัปดาห์ โดยใช้รายละเอียด WEEKLY

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runReport
{
  "cohortSpec": {
    "cohorts": [
      {
        "dimension": "firstSessionDate",
        "name": "cohort",
        "dateRange": {
          "startDate": "2021-01-03",
          "endDate": "2021-01-09"
        }
      }
    ],
    "cohortsRange": {
      "startOffset": 0,
      "endOffset": 4,
      "granularity": "WEEKLY"
    }
  },
  "metrics": [
    {
      "name": "cohortActiveUsers"
    },
    {
      "expression": "cohortActiveUsers/cohortTotalUsers",
      "name": "cohortRetentionRate"
    }
  ],
  "dimensions": [
    {
      "name": "cohort"
    },
    {
      "name": "cohortNthWeek"
    }
  ]
}

การตอบกลับ Data API v1

{
  "dimensionHeaders": [
    {
      "name": "cohort"
    },
    {
      "name": "cohortNthWeek"
    }
  ],
  "metricHeaders": [
    {
      "name": "cohortActiveUsers",
      "type": "TYPE_INTEGER"
    },
    {
      "name": "cohortRetentionRate",
      "type": "TYPE_FLOAT"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0000"
        }
      ],
      "metricValues": [
        {
          "value": "4268816"
        },
        {
          "value": "0.999913800857494"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0001"
        }
      ],
      "metricValues": [
        {
          "value": "241580"
        },
        {
          "value": "0.056586926213534013"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0002"
        }
      ],
      "metricValues": [
        {
          "value": "159390"
        },
        {
          "value": "0.037335003597877253"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0003"
        }
      ],
      "metricValues": [
        {
          "value": "131512"
        },
        {
          "value": "0.030804950079453122"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "cohort"
        },
        {
          "value": "0004"
        }
      ],
      "metricValues": [
        {
          "value": "96793"
        },
        {
          "value": "0.022672482610259947"
        }
      ]
    }
  ],
  "totalSize": 5,
  "metadata": {}
}

คำขอ API การรายงาน v4

ตัวอย่างคำค้นหาที่กำหนดค่ากลุ่มประชากรตามรุ่นของผู้ใช้ซึ่งมีเซสชันแรกเกิดขึ้นในสัปดาห์ของวันที่ 3-01-2021 ระบบคำนวณจำนวนผู้ใช้ที่ใช้งานอยู่และอัตราการรักษาผู้ใช้ของกลุ่มประชากรตามรุ่นในช่วง 5 สัปดาห์ โดยใช้รายละเอียดของ WEEKLY

POST https://analyticsreporting.googleapis.com/v4/reports:batchGet
{
  "reportRequests": [
    {
      "viewId": "UA_VIEW_ID",
      "dimensions": [
        {
          "name": "ga:cohort"
        },
        {
          "name": "ga:cohortNthWeek"
        }
      ],
      "metrics": [
        {
          "expression": "ga:cohortActiveUsers"
        },
        {
          "expression": "ga:cohortRetentionRate"
        }
      ],
      "cohortGroup": {
        "cohorts": [
          {
            "name": "cohort",
            "type": "FIRST_VISIT_DATE",
            "dateRange": {
              "startDate": "2021-01-03",
              "endDate": "2021-01-09"
            }
          }
        ]
      }
    }
  ]
}

การตอบกลับ API การรายงาน v4

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:cohort",
          "ga:cohortNthWeek"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:cohortActiveUsers",
              "type": "INTEGER"
            },
            {
              "name": "ga:cohortRetentionRate",
              "type": "PERCENT"
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "cohort",
              "0000"
            ],
            "metrics": [
              {
                "values": [
                  "40793",
                  "100.0"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0001"
            ],
            "metrics": [
              {
                "values": [
                  "3883",
                  "9.518789988478416"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0002"
            ],
            "metrics": [
              {
                "values": [
                  "2165",
                  "5.307283112298679"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0003"
            ],
            "metrics": [
              {
                "values": [
                  "1703",
                  "4.174735861544873"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0004"
            ],
            "metrics": [
              {
                "values": [
                  "1484",
                  "3.637879047875861"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0005"
            ],
            "metrics": [
              {
                "values": [
                  "1103",
                  "2.7038952761503197"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0006"
            ],
            "metrics": [
              {
                "values": [
                  "933",
                  "2.28715711028853"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "cohort",
              "0007"
            ],
            "metrics": [
              {
                "values": [
                  "336",
                  "0.8236707278209496"
                ]
              }
            ]
          }
        ],
        "totals": [
          {
            "values": [
              "52400",
              "16.056676390557204"
            ]
          }
        ],
        "rowCount": 8,
        "minimums": [
          {
            "values": [
              "336",
              "0.8236707278209496"
            ]
          }
        ],
        "maximums": [
          {
            "values": [
              "40793",
              "100.0"
            ]
          }
        ],
        "isDataGolden": true
      }
    }
  ]
}

ทดสอบผลิตภัณฑ์

Data API v1 จะใช้การสุ่มตัวอย่างข้อมูลโดยอัตโนมัติเมื่อคาดการณ์ว่าขีดจำกัดของ Cardinality จะลดคุณภาพของข้อมูล หากผลลัพธ์สำหรับช่วงวันที่ เป็นการสุ่มตัวอย่าง ค่า metadata ของ RunReportResponse จะมี SamplingMetadata ที่เกี่ยวข้อง ซึ่งคล้ายกับช่อง samplingLevel ที่อยู่ใน Reporting API v4

ความใหม่ของข้อมูล

Data API ไม่เทียบเท่ากับช่อง isDataGolden ของ Reporting API v4 ที่ใช้ในการระบุว่า Hit ทั้งหมดสำหรับรายงานประมวลผลเสร็จแล้วหรือไม่ รายงานเดียวกันยังคงแสดงผลลัพธ์ที่ต่างกันได้เมื่อมีการค้นหาในวันต่อๆ มาเนื่องจากมีการประมวลผลเพิ่มเติม

(ไม่รองรับ) กลุ่ม

ขณะนี้ Data API v1 ไม่รองรับกลุ่ม

การรายงานแบบเรียลไทม์

ใช้วิธีการ properties.runRealtimeReport ของ Data API v1 เพื่อสร้างรายงานแบบเรียลไทม์สำหรับพร็อพเพอร์ตี้ Google Analytics 4 ฟังก์ชันการรายงานแบบเรียลไทม์สำหรับพร็อพเพอร์ตี้ Universal Analytics มาจากเมธอด data.realtime.get ของ Google Analytics API v3

สคีมาการรายงานแบบเรียลไทม์ของ Data API แตกต่างจากสคีมาการรายงานแบบเรียลไทม์ของ Analytics API v3 เนื่องจากแนวคิดความแตกต่างระหว่าง Universal Analytics กับ Google Analytics 4

คำขอ API ข้อมูล v1

ในตัวอย่างต่อไปนี้ เพื่อคงลักษณะการจัดเรียงเริ่มต้นของ Google Analytics API v3 ได้มีการเพิ่มองค์ประกอบ orderBy (ไม่บังคับ) ลงในการค้นหาตัวอย่างของ Data API v1

POST  https://analyticsdata.googleapis.com/v1beta/properties/GA4_PROPERTY_ID:runRealtimeReport
{
  "dimensions": [{ "name": "country" }],
  "metrics": [{ "name": "activeUsers" }],
  "orderBys": [
     {
       "dimension": {
         "dimensionName": "country"
         }
     }
   ]
}

การตอบกลับ Data API v1

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "activeUsers",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": ""
        }
      ],
      "metricValues": [
        {
          "value": "199"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Afghanistan"
        }
      ],
      "metricValues": [
        {
          "value": "4"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Albania"
        }
      ],
      "metricValues": [
        {
          "value": "136"
        }
      ]
    },

    ....

  ],
  "rowCount": 172
}

คำขอ Google Analytics API v3

GET https://analytics.googleapis.com/analytics/v3/data/realtime?ids=ga:UA_VIEW_ID&metrics=rt:activeUsers&dimensions=rt:country

การตอบกลับ Google Analytics API v3

{
  "kind": "analytics#realtimeData",
  "id": "https://www.googleapis.com/analytics/v3/data/realtime?ids=ga:UA_VIEW_ID&dimensions=rt:country&metrics=rt:activeUsers",
  "query": {
    "ids": "ga:UA_VIEW_ID",
    "dimensions": "rt:country",
    "metrics": [
      "rt:activeUsers"
    ],
    "max-results": 10
  },
  "totalResults": 178,
  "profileInfo": {
    "profileId": "XXXXXX",
    "accountId": "XXXXXX",
    "webPropertyId": "UA-XXXXXX",
    "profileName": "View Name",
  },
  "columnHeaders": [
    {
      "name": "rt:country",
      "columnType": "DIMENSION",
      "dataType": "STRING"
    },
    {
      "name": "rt:activeUsers",
      "columnType": "METRIC",
      "dataType": "INTEGER"
    }
  ],
  "totalsForAllResults": {
    "rt:activeUsers": "80351"
  },
  "rows": [
    [
      "(not set)",
      "97"
    ],
    [
      "Afghanistan",
      "2"
    ],
    [
      "Albania",
      "78"
    ],

  ....

  ]
}

(ไม่รองรับ) การรายงานกิจกรรมของผู้ใช้

ปัจจุบัน Data API v1 ยังไม่รองรับฟังก์ชันสำหรับรายงานกิจกรรมของผู้ใช้แต่ละรายการที่คล้ายกับเมธอด userActivity.search ของ Reporting API v4

การเปลี่ยนแปลงโควต้า API

หมวดหมู่โควต้าหลักและแบบเรียลไทม์

ตามวัตถุประสงค์ของโควต้า Data API มีคำขอ 2 หมวดหมู่ ได้แก่ หมวดหมู่หลักและแบบเรียลไทม์ คำขอ API ไปยังวิธีการรายงานหลัก (runReport, getMetadata, runPivotReport, batchRunReports, batchRunPivotReports) คิดค่าบริการตามโควต้าหลัก คำขอ API ไปยังโควต้าแบบเรียลไทม์ที่เรียกเก็บจากเมธอด runRealtimeReport

โควต้าโทเค็น

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

คุณดูสถานะปัจจุบันของโควต้าทั้งหมดสำหรับพร็อพเพอร์ตี้ Analytics ได้โดยการตั้งค่า returnPropertyQuota เป็น true ในคำขอการรายงานหลักหรือแบบเรียลไทม์ ระบบจะส่งคืนสถานะโควต้าใน PropertyQuota

(ไม่รองรับ) โควต้าตามทรัพยากร

เนื่องจากรายงานหลักทั้งหมดใน Google Analytics 4 อิงตามข้อมูลแบบไม่สุ่มตัวอย่าง โควต้าตามทรัพยากรที่นำมาใช้ใน Reporting API v4 จึงใช้ไม่ได้อีกต่อไป และไม่มีช่อง useResourceQuotas ที่เทียบเท่ากับในคำขอการรายงาน Data API v1

(ไม่รองรับ) โควต้าคำขอต่อข้อมูลพร็อพเพอร์ตี้ (โปรไฟล์) ต่อวัน

เนื่องจากไม่มีข้อมูลพร็อพเพอร์ตี้ใน Google Analytics 4 โควต้า requests per view (profile) per day จึงไม่แสดงอยู่ใน Data API v1 และแทนที่ด้วยโควต้าโทเค็น