Tổng quan

API Quản trị của Google Analytics phiên bản 1 cho phép bạn truy cập vào dữ liệu bằng cách sử dụng runAccessReport . Báo cáo này cung cấp bản ghi về mỗi lần người dùng đọc Google Analytics dữ liệu báo cáo. Hồ sơ truy cập sẽ được lưu giữ trong tối đa 2 năm. Quyền truy cập dữ liệu báo cáo chỉ được cung cấp cho người dùng có vai trò Quản trị viên.

Tạo báo cáo về quyền truy cập dữ liệu

Báo cáo Quyền truy cập dữ liệu được cung cấp bởi runAccessReport.

Các tính năng được chia sẻ với báo cáo cốt lõi

Các yêu cầu báo cáo Quyền truy cập dữ liệu có cùng ngữ nghĩa với Báo cáo chính cho nhiều tính năng dùng chung. Ví dụ: Các thông số kỹ thuật về Phân trang, Bộ lọc phương diện, Phạm vi ngày hoạt động như nhau trong Báo cáo truy cập dữ liệu dưới dạng Báo cáo chính.

Tìm hiểu thông tin tổng quan về chức năng Báo cáo chính của Data API phiên bản 1 làm phần còn lại của sẽ tập trung vào các tính năng dành riêng cho yêu cầu báo cáo Quyền truy cập dữ liệu.

Chọn đối tượng báo cáo

Tương tự như Báo cáo chính chức năng của Data API phiên bản 1, runAccessReport của Google Analytics Admin API v1 yêu cầu Google Analytics mã nhận dạng thuộc tính sẽ được chỉ định bên trong. một đường dẫn yêu cầu URL ở dạng properties/GA_PROPERTY_ID, chẳng hạn như:

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

Báo cáo kết quả về quyền truy cập dữ liệu sẽ được tạo dựa trên dữ liệu của Google Analytics bản ghi quyền truy cập dữ liệu cho tài sản Google Analytics được chỉ định.

Nếu bạn đang dùng một trong các thư viện ứng dụng API Quản trị, bạn không cần thao tác đường dẫn URL yêu cầu theo cách thủ công. Hầu hết ứng dụng API cung cấp tham số property mong đợi một chuỗi ở dạng properties/GA_PROPERTY_ID Xem đoạn mã ở ở cuối hướng dẫn này để xem ví dụ về cách sử dụng thư viện ứng dụng.

Thứ nguyên và chỉ số

Phương diện mô tả và nhóm các dữ liệu về quyền truy cập cho tài sản của mình. Ví dụ: phương diện userEmail cho biết email của người dùng đã truy cập vào dữ liệu báo cáo. Giá trị phương diện trong phản hồi của báo cáo là các chuỗi.

Chỉ số thể hiện các số đo định lượng của báo cáo. Chỉ số accessCount sẽ trả về tổng số bản ghi truy cập dữ liệu.

Xem Giản đồ truy cập dữ liệu để biết danh sách đầy đủ các phương diện và phương diện có sẵn trong yêu cầu báo cáo truy cập dữ liệu.

Yêu cầu báo cáo quyền truy cập dữ liệu

Để yêu cầu báo cáo truy cập dữ liệu, hãy tạo đối tượng RunAccessReportRequest. T4 khuyên bạn nên bắt đầu với các thông số yêu cầu sau:

  • Ít nhất một mục hợp lệ trong ngày phạm vi .
  • Ít nhất một mục hợp lệ trong phương diện .
  • Nếu không sử dụng phương diện epochTimeMicros, có ít nhất một mục hợp lệ trong thời gian chỉ số để nhận dữ liệu định lượng cho từng tổ hợp giá trị phương diện trong một báo cáo.

Dưới đây là yêu cầu mẫu với các trường được đề xuất. Truy vấn này sẽ tạo một danh sách email người dùng, lần gần đây nhất họ truy cập vào tài sản được chỉ định trong phạm vi 7 ngày qua và số lượt truy cập tương ứng.

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

Phản hồi báo cáo

Về mặt lý thuyết, tương tự như Báo cáo chính chức năng của Data API phiên bản 1, Báo cáo quyền truy cập vào dữ liệu Câu trả lời của yêu cầu báo cáo truy cập chủ yếu là tiêu đề và các hàng. Tiêu đề bao gồm AccessDimensionHeadersAccessMetricHeaders liệt kê các cột trong Báo cáo.

Mỗi báo cáo quyền truy cập hàng bao gồm AccessDimensionValuesAccessMetricValues cho các cột trong báo cáo. Thứ tự của các cột là nhất quán trong yêu cầu, tiêu đề và mỗi hàng.

Dưới đây là phản hồi mẫu cho yêu cầu mẫu trước đó:

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

Lọc các bản ghi truy cập

Sử dụng dimensionFilter trường của RunAccessReportRequest để hạn chế phản hồi của báo cáo cho các giá trị thứ nguyên cụ thể khớp với .

Ví dụ sau đây sẽ tạo một báo cáo dựa trên quyền truy cập dữ liệu của từng cá nhân các bản ghi, lọc các bản ghi truy cập của một người dùng riêng lẻ có email Alex@example.net. Báo cáo này chứa thời gian của mỗi bản ghi truy cập, email và địa chỉ 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"
      }
    }
  }
}

Tương tự, metricFilter trường của RunAccessReportRequest Bạn có thể sử dụng đối tượng này để hạn chế phản hồi của báo cáo đối với các giá trị chỉ số cụ thể khớp với bộ lọc.

Ví dụ sau đây sẽ tạo một báo cáo chứa email và số lượt truy cập của tất cả người dùng đã truy cập vào tài sản được chỉ định hơn 100 lần.

HTTP

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

Báo cáo mẫu

Dưới đây là một số báo cáo mẫu mà bạn có thể dùng thử.

Báo cáo lần truy cập gần đây nhất của mỗi người dùng

Bạn có thể tạo báo cáo quyền truy cập mẫu sau đây bằng runAccessReport:

Phần trăm thời gian truy cập gần đây nhất Email người dùng Số lượt truy cập
1525220215025371 Bola@example.net 5
1525220215028361 Alex@example.net 36
1525220215027671 Charlie@example.net 1153
1525220215027341 Mahan@example.net 1

Báo cáo này có thể được tạo bằng cách truy vấn thứ nguyên mostRecentAccessEpochTimeMicros, userEmailaccessCount chỉ số. Chiến lược phát hành đĩa đơn báo cáo chứa một hàng cho mỗi người dùng: mostRecentAccessEpochTimeMicros Phương diện tổng hợp các bản ghi quyền truy cập dữ liệu cho mỗi người dùng truy cập vào tài sản và trả về thời gian truy cập gần đây nhất (tính bằng Unix micrô giây kể từ khi epoch) cho mỗi hàng.

Báo cáo thông tin chi tiết về quyền truy cập của người dùng

Một ví dụ khác về báo cáo hữu ích là bảng chi tiết về lượt truy cập của người dùng theo Quyền truy cập Cơ chế (ví dụ: Giao diện người dùng Google Analytics, API, v.v.).

Phần trăm thời gian truy cập gần đây nhất Email người dùng Cơ chế truy cập Số lượt truy cập
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net Giao diện người dùng Google Analytics 1
1525220215022378 Bola@example.net Giao diện người dùng 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

Báo cáo này có thể được tạo bằng cách truy vấn thứ nguyên mostRecentAccessEpochTimeMicros, userEmail, accessMechanismaccessCount chỉ số.

Báo cáo này chứa một hàng cho mỗi tổ hợp cơ chế người dùng/quyền truy cập. Chiến lược phát hành đĩa đơn Phương diện mostRecentAccessEpochTimeMicros cho biết lần gần đây nhất người dùng sử dụng đã truy cập vào thuộc tính bằng Cơ chế truy cập được chỉ định.

Báo cáo tổng quan về quyền truy cập vào tài sản

Bạn có thể tạo báo cáo cho một tài sản mà không cần chia nhỏ người dùng cá nhân. Ví dụ: báo cáo sau đây cho biết tần suất một tài sản được truy cập qua các Cơ chế truy cập khác nhau:

Mã tài sản được truy cập Tên thuộc tính được truy cập Cơ chế truy cập Số lượt truy cập
12345678 DemoApp Firebase 31
12345678 DemoApp Giao diện người dùng Google Analytics 624
12345678 DemoApp Google Ads 83
12345678 DemoApp API Google Analytics 1744

Báo cáo này có thể được tạo bằng cách truy vấn thứ nguyên accessedPropertyId, accessedPropertyName, accessMechanismaccessCount chỉ số.

Báo cáo này chứa một hàng cho mỗi tổ hợp mã tài sản/cơ chế truy cập.

Báo cáo về quyền truy cập vào dữ liệu của từng cá nhân

Để tạo báo cáo trong đó mỗi hàng dựa trên quyền truy cập dữ liệu riêng lẻ bản ghi, bỏ phương diện mostRecentAccessEpochTimeMicros khỏi truy vấn và hãy sử dụng phương diện epochTimeMicros. Bạn không cần phải truy vấn accessCount, bởi vì mỗi hàng của báo cáo đều chứa thông tin về lần xuất hiện truy cập dữ liệu đơn lẻ.

Báo cáo sau đây chứa thông tin chi tiết về mỗi lần người dùng đã truy cập vào thuộc tính được chỉ định.

Phần mềm Unix Epoch Time Micros Email người dùng Mã tài sản được truy cập Tên thuộc tính được truy cập IP người dùng Cơ chế truy cập Dữ liệu chi phí được trả về Dữ liệu doanh thu được trả về
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 Giao diện người dùng Google Analytics đúng đúng
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 Giao diện người dùng Google Analytics false false
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google Ads đúng false
1525220210234221 Alex@example.net 12345678 DemoApp 11.22.33.22 Firebase false false
1525220215028368 Alex@example.net 12345678 DemoApp 1.2.3.2 Google Ads false false
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google Ads đúng đúng
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 API Google Analytics đúng false
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Ads đúng đúng

Báo cáo này có thể được tạo bằng cách truy vấn phương diện epochTimeMicros, userEmail, accessedPropertyId, accessedPropertyName, userIP, accessMechanism, costDataReturned, revenueDataReturned.

Thư viện ứng dụng

Xem Hướng dẫn bắt đầu nhanh để được giải thích về cách cài đặt và định cấu hình thư viện ứng dụng.

Dưới đây là một ví dụ về cách sử dụng thư viện ứng dụng Python để chạy một truy vấn quyền truy cập dữ liệu và in phản hồi.

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