ภาพรวม

Google Analytics Admin API v1 ช่วยให้คุณรายงานการเข้าถึงข้อมูลได้โดยใช้ runAccessReport รายงานจะแสดงบันทึกในแต่ละครั้งที่ผู้ใช้อ่าน Google Analytics ข้อมูลการรายงาน ระบบจะเก็บบันทึกการเข้าถึงไว้ไม่เกิน 2 ปี การเข้าถึงข้อมูล รายงานใช้ได้เฉพาะกับผู้ใช้ที่มีบทบาทผู้ดูแลระบบเท่านั้น

การสร้างรายงานการเข้าถึงข้อมูล

การรายงานการเข้าถึงข้อมูลนั้นให้บริการโดย runAccessReport

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

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

ทำความคุ้นเคยกับภาพรวมของฟังก์ชันการรายงานหลัก Data API v1 เป็นส่วนที่เหลือของ จะมุ่งเน้นไปที่คุณลักษณะเฉพาะของคำขอรายงานการเข้าถึงข้อมูล

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

ซึ่งคล้ายกับ การรายงานหลัก ฟังก์ชันของ Data API v1, runAccessReport Google Analytics Admin API v1 จำเป็นต้องใช้ Google Analytics ตัวระบุพร็อพเพอร์ตี้ที่จะต้องระบุภายใน เส้นทางคำขอ URL ในรูปแบบ properties/GA_PROPERTY_ID เช่น

  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport

รายงานการเข้าถึงข้อมูลที่ได้จะสร้างขึ้นโดยอิงจากข้อมูล Google Analytics บันทึกการเข้าถึงข้อมูลสำหรับพร็อพเพอร์ตี้ Google Analytics ที่ระบุ

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

มิติข้อมูลและเมตริก

มิติข้อมูล อธิบายและข้อมูลการเข้าถึงกลุ่มสำหรับพร็อพเพอร์ตี้ของคุณ เช่น มิติข้อมูล userEmail ระบุอีเมลของผู้ใช้ที่เข้าถึงข้อมูลการรายงาน ค่ามิติข้อมูลในคำตอบของรายงานเป็นสตริง

เมตริก แสดงการวัดเชิงปริมาณของรายงาน เมตริก accessCount แสดงผลจำนวนบันทึกการเข้าถึงข้อมูลทั้งหมด

ดูสคีมาการเข้าถึงข้อมูลสำหรับรายการมิติข้อมูลทั้งหมด และ ชื่อเมตริกที่มีอยู่ในคำขอรายงานการเข้าถึงข้อมูล

คำขอรายงานการเข้าถึงข้อมูล

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

  • มีรายการที่ถูกต้องอย่างน้อย 1 รายการในวันที่ ช่วง ด้วย
  • ข้อมูลที่ถูกต้องอย่างน้อย 1 รายการใน มิติข้อมูล ด้วย
  • หากไม่ได้ใช้มิติข้อมูล epochTimeMicros มีรายการที่ถูกต้องอย่างน้อย 1 รายการใน เวลา เมตริก เพื่อรับข้อมูลเชิงปริมาณสำหรับชุดค่าผสมของค่ามิติข้อมูลแต่ละชุดใน รายงาน

ตัวอย่างคำขอที่มีช่องที่แนะนำมีดังนี้ คำค้นหานี้จะสร้าง รายการอีเมลของผู้ใช้ เวลาล่าสุดที่ผู้ใช้เข้าถึงพร็อพเพอร์ตี้ที่ระบุ ในช่วง 7 วันที่ผ่านมา และจำนวนการเข้าถึงที่เกี่ยวข้อง

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

รายงานคำตอบ

มีลักษณะคล้ายคลึงกันกับ การรายงานหลัก ฟังก์ชันของ Data API v1 รายงานการเข้าถึงข้อมูล คำตอบจาก คำขอรายงานการเข้าถึงจะเป็นส่วนหัวและแถวเป็นหลัก ส่วนหัวประกอบด้วย AccessDimensionHeaders และ AccessMetricHeaders ซึ่งแสดงรายการคอลัมน์ในรายงาน

รายงานการเข้าถึงแต่ละรายการ แถวประกอบด้วย AccessDimensionValues และ AccessMetricValues สำหรับคอลัมน์ในรายงาน ลำดับของคอลัมน์สอดคล้องกันใน ส่วนหัว และทุกแถว

ตัวอย่างการตอบกลับสำหรับคำขอตัวอย่างก่อนหน้านี้

{
  "dimensionHeaders": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricHeaders": [
    {
      "metricName": "accessCount"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "1667591408427733"
        },
        {
          "value": "Bola@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "1238"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667710959827161"
        },
        {
          "value": "Alex@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "475"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667868650762743"
        },
        {
          "value": "Mahan@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "96"
        }
      ]
    }
  ],
  "rowCount": 3
}

การกรองในบันทึกการเข้าถึง

ใช้เมนู dimensionFilter ของฟิลด์ RunAccessReportRequest เพื่อจำกัดการตอบสนองของรายงานเฉพาะกับค่ามิติข้อมูลที่ระบุซึ่งตรงกับ ตัวกรอง

ตัวอย่างต่อไปนี้จะสร้างรายงานตามการเข้าถึงข้อมูลแต่ละรายการ ระเบียน ซึ่งกรองบันทึกการเข้าถึงของผู้ใช้รายเดียวด้วยอีเมล Alex@example.net รายงานจะประกอบด้วยเวลาของบันทึกการเข้าถึงแต่ละรายการ อีเมลและที่อยู่ IP

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "epochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    },
    {
      "dimensionName": "userIP"
    }
  ],
  "dimensionFilter": {
    "accessFilter": {
      "fieldName": "userEmail",
      "stringFilter": {
        "matchType": "EXACT",
        "value": "Alex@example.net"
      }
    }
  }
}

ในทำนองเดียวกัน metricFilter ของฟิลด์ RunAccessReportRequest ใช้เพื่อจำกัดการตอบสนองต่อรายงานให้เป็นค่าเมตริกเฉพาะซึ่ง ตรงกับตัวกรอง

ตัวอย่างต่อไปนี้จะสร้างรายงานที่มีอีเมลและจำนวนการเข้าถึงของ ผู้ใช้ทั้งหมดที่เข้าถึงพร็อพเพอร์ตี้ที่ระบุมากกว่า 100 ครั้ง

HTTP

{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricFilter": {
    "accessFilter": {
      "numericFilter": {
        "operation": "GREATER_THAN",
        "value": {
          "int64Value": 100
        }
      },
      "fieldName": "accessCount"
    }
  },
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

ตัวอย่างรายงาน

นี่คือตัวอย่างรายงานบางส่วนที่คุณสามารถลองใช้ได้

รายงานการเข้าถึงต่อผู้ใช้ล่าสุด

ตัวอย่างรายงานการเข้าถึงที่สามารถสร้างโดยใช้ runAccessReport ได้มีดังนี้

เวลาในหน่วยไมโครของการเข้าถึงล่าสุด อีเมลผู้ใช้ จำนวนการเข้าถึง
1525220215025371 Bola@example.net 5
1525220215028361 Alex@example.net 36
1525220215027671 Charlie@example.net 1153
1525220215027341 Mahan@example.net 1

รายงานนี้สามารถสร้างขึ้นได้ด้วยการค้นหา มิติข้อมูล mostRecentAccessEpochTimeMicros userEmail และเมตริก accessCount รายงานมีหนึ่งแถวต่อผู้ใช้แต่ละราย: mostRecentAccessEpochTimeMicros มิติข้อมูลจะรวมบันทึกการเข้าถึงข้อมูลสำหรับผู้ใช้แต่ละรายที่เข้าถึงพร็อพเพอร์ตี้ และแสดงผลเวลาเข้าถึงล่าสุด (ใน Unix ไมโครวินาทีนับตั้งแต่ Epoch) สําหรับแต่ละแถว

รายงานรายละเอียดการเข้าถึงของผู้ใช้

อีกตัวอย่างของรายงานที่มีประโยชน์คือ รายละเอียดการเข้าถึงของผู้ใช้ตามการเข้าถึง กลไก (เช่น อินเทอร์เฟซผู้ใช้ของ Google Analytics, API ฯลฯ)

เวลาในหน่วยไมโครของการเข้าถึงล่าสุด อีเมลผู้ใช้ กลไกการเข้าถึง จำนวนการเข้าถึง
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net อินเทอร์เฟซผู้ใช้ Google Analytics 1
1525220215022378 Bola@example.net อินเทอร์เฟซผู้ใช้ Google Analytics 65
1525220215026389 Bola@example.net API ของ Google Analytics 894
1525220215025631 Charlie@example.net API ของ Google Analytics 67
1525220215068325 Mahan@example.net Google Ads 3

รายงานนี้สามารถสร้างขึ้นได้ด้วยการค้นหา มิติข้อมูล mostRecentAccessEpochTimeMicros userEmail accessMechanism และaccessCount เมตริก

รายงานจะประกอบด้วยหนึ่งแถวต่อชุดค่าผสมผู้ใช้/กลไกการเข้าถึงแต่ละชุด มิติข้อมูล mostRecentAccessEpochTimeMicros รายการมีข้อมูลเวลาล่าสุดที่ผู้ใช้ เข้าถึงพร็อพเพอร์ตี้โดยใช้กลไกการเข้าถึงที่ระบุ

รายงานภาพรวมการเข้าถึงพร็อพเพอร์ตี้

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

รหัสพร็อพเพอร์ตี้ที่เข้าถึง ชื่อพร็อพเพอร์ตี้ที่มีการเข้าถึง กลไกการเข้าถึง จำนวนการเข้าถึง
12345678 DemoApp Firebase 31
12345678 DemoApp อินเทอร์เฟซผู้ใช้ Google Analytics 624
12345678 DemoApp Google Ads 83
12345678 DemoApp API ของ Google Analytics 1744

รายงานนี้สามารถสร้างขึ้นได้ด้วยการค้นหา มิติข้อมูล accessedPropertyId accessedPropertyName accessMechanism และaccessCount เมตริก

รายงานจะมี 1 แถวต่อชุดค่าผสมรหัสพร็อพเพอร์ตี้/กลไกการเข้าถึงแต่ละชุด

รายงานการเข้าถึงข้อมูลแต่ละรายการ

เพื่อสร้างรายงานที่แต่ละแถวอิงตามการเข้าถึงข้อมูลแต่ละรายการ ยกเว้นมิติข้อมูล mostRecentAccessEpochTimeMicros ในการค้นหาและ ให้ใช้มิติข้อมูล epochTimeMicros แทน คุณไม่จำเป็นต้องค้นหา accessCount เนื่องจากทุกแถวของรายงานประกอบด้วยข้อมูลเกี่ยวกับ การเข้าถึงข้อมูลครั้งเดียว

รายงานต่อไปนี้มีข้อมูลโดยละเอียดเกี่ยวกับทุกครั้งที่ผู้ใช้ เข้าถึงพร็อพเพอร์ตี้ที่ระบุ

Unix Epoch Time Micros อีเมลผู้ใช้ รหัสพร็อพเพอร์ตี้ที่เข้าถึง ชื่อพร็อพเพอร์ตี้ที่มีการเข้าถึง IP ผู้ใช้ กลไกการเข้าถึง ข้อมูลค่าใช้จ่ายที่แสดงผล ข้อมูลรายได้ที่แสดงผล
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 อินเทอร์เฟซผู้ใช้ Google Analytics จริง จริง
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 อินเทอร์เฟซผู้ใช้ Google Analytics เท็จ เท็จ
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google Ads จริง เท็จ
1525220210234221 Alex@example.net 12345678 DemoApp 11.22.33.22 Firebase เท็จ เท็จ
1525220215028368 Alex@example.net 12345678 DemoApp 1.2.3.2 Google Ads เท็จ เท็จ
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google Ads จริง จริง
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 API ของ Google Analytics จริง เท็จ
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Ads จริง จริง

รายงานนี้สามารถสร้างขึ้นได้ด้วยการค้นหา มิติข้อมูล epochTimeMicros, userEmail accessedPropertyId, accessedPropertyName, userIP, accessMechanism costDataReturned, revenueDataReturned

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

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

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

Python

from datetime import datetime

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessDateRange,
    AccessDimension,
    AccessMetric,
    RunAccessReportRequest,
)


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    run_access_report(property_id)


def run_access_report(property_id: str, transport: str = None):
    """
    Runs an access report for a Google Analytics property. The report will
    aggregate over dimensions `userEmail`, `accessedPropertyId`,
    `reportType`, `revenueDataReturned`, `costDataReturned`,
    `userIP`, and return the access count, as well as the most recent access
    time for each combination.
    See https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema
    for the description of each field used in a data access report query.
    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    request = RunAccessReportRequest(
        entity=f"properties/{property_id}",
        dimensions=[
            AccessDimension(dimension_name="userEmail"),
            AccessDimension(dimension_name="accessedPropertyId"),
            AccessDimension(dimension_name="reportType"),
            AccessDimension(dimension_name="revenueDataReturned"),
            AccessDimension(dimension_name="costDataReturned"),
            AccessDimension(dimension_name="userIP"),
            AccessDimension(dimension_name="mostRecentAccessEpochTimeMicros"),
        ],
        metrics=[AccessMetric(metric_name="accessCount")],
        date_ranges=[AccessDateRange(start_date="yesterday", end_date="today")],
    )

    access_report = client.run_access_report(request)

    print("Result:")
    print_access_report(access_report)


def print_access_report(response):
    """Prints the access report."""
    print(f"{response.row_count} rows received")
    for dimensionHeader in response.dimension_headers:
        print(f"Dimension header name: {dimensionHeader.dimension_name}")
    for metricHeader in response.metric_headers:
        print(f"Metric header name: {metricHeader.metric_name})")

    for rowIdx, row in enumerate(response.rows):
        print(f"\nRow {rowIdx}")
        for i, dimension_value in enumerate(row.dimension_values):
            dimension_name = response.dimension_headers[i].dimension_name
            if dimension_name.endswith("Micros"):
                # Convert microseconds since Unix Epoch to datetime object.
                dimension_value_formatted = datetime.utcfromtimestamp(
                    int(dimension_value.value) / 1000000
                )
            else:
                dimension_value_formatted = dimension_value.value
            print(f"{dimension_name}: {dimension_value_formatted}")

        for i, metric_value in enumerate(row.metric_values):
            metric_name = response.metric_headers[i].metric_name
            print(f"{metric_name}: {metric_value.value}")