Отчеты о доступе к данным

Отчеты о доступе к данным можно создавать с помощью метода runAccessReport Admin API версии 1. В этом отчете показано, когда пользователь читает данные Google Аналитики. Записи о доступе к данным хранятся до двух лет. Отчеты о доступе к данным доступны только пользователям с ролью Администратор.

Как запросить отчет о доступе к данным с помощью клиентской библиотеки

Самый быстрый способ начать работу с отчетами о доступе к данным – использовать клиентские библиотеки.

Инструкции по установке и настройке клиентских библиотек Google Аналитики приведены в кратком руководстве.

Ниже приведен пример использования клиентской библиотеки 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}")

Общие функции с основными отчетами

Запросы отчетов о доступе к данным имеют ту же семантику, что и запросы основных отчетов для многих распространенных функций. Например, разбиение на страницы, фильтры параметров и диапазоны дат работают одинаково в отчетах обоих типов.

Ознакомьтесь с обзором основных отчетов в Data API v1, а затем вернитесь на эту страницу, чтобы узнать больше об отчетах о доступе к данным.

Как создать отчет о доступе к данным

Чтобы запросить отчет о доступе к данным, используйте метод runAccessReport.

Как выбрать отчетную организацию

Как и в случае с основными функциями создания отчетов Data API версии 1, метод runAccessReport Google Analytics Admin API версии 1 требует, чтобы идентификатор ресурса Google Аналитики был указан в пути запроса URL в формате properties/GA_PROPERTY_ID, например:

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

Отчет о доступе к данным создается на основе записей о доступе к данным Google Аналитики для указанного ресурса Google Аналитики.

Если вы используете одну из клиентских библиотек Admin API, вам не нужно вручную изменять путь URL запроса. Большинство клиентов API предоставляют параметр property, который ожидает строку в форме properties/GA_PROPERTY_ID. Пример использования клиентских библиотек приведен в фрагменте кода в начале этой страницы.

Как выбрать параметры и показатели

Параметры описывают и группируют данные о доступе к ресурсу. Например, параметр userEmail указывает адрес электронной почты пользователя, который получил доступ к данным отчетов. Значения параметров в ответах отчетов являются строками.

Показатели – это количественные значения в отчете. Показатель accessCount возвращает общее количество записей о доступе к данным.

Полный список названий параметров и показателей, доступных в запросах отчетов о доступе к данным, приведен в схеме доступа к данным.

Как запросить отчет

Чтобы запросить отчеты о доступе к данным, создайте объект RunAccessReportRequest. Рекомендуем начать с этих параметров запроса:

  • Хотя бы одна запись в поле date ranges.
  • Хотя бы одна действительная запись в поле dimensions.
  • Если параметр epochTimeMicros не используется, в поле metrics должна быть хотя бы одна действительная запись, чтобы получать количественные данные для каждой комбинации значений параметров в отчете.

Ниже приведен пример запроса с рекомендуемыми полями. Этот запрос создаст список адресов электронной почты пользователей, время их последнего доступа к указанному ресурсу за последние семь дней и количество соответствующих доступов.

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

Прочитайте ответ.

Ответ на запрос отчета о доступе к данным состоит в основном из заголовка и строк. Заголовок состоит из следующих элементов: 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) для каждой строки.

Разбивка доступа пользователей

Ещё один полезный отчет – это разбивка доступа пользователей по параметру "Способ доступа" (например, интерфейс Google Аналитики, API и т.д.).

Время последнего доступа, выраженное в микросекундах с начала отсчета Адрес электронной почты пользователя Способ доступа Количество операций доступа
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net Пользовательский интерфейс Google Аналитики 1
1525220215022378 Bola@example.net Пользовательский интерфейс Google Аналитики 65
1525220215026389 Bola@example.net Google Analytics API 894
1525220215025631 Charlie@example.net Google Analytics API 67
1525220215068325 Mahan@example.net Google Реклама 3

Этот отчет можно создать, запросив параметры mostRecentAccessEpochTimeMicros, userEmail, accessMechanism и показатель accessCount.

В отчете содержится по одной строке для каждой комбинации пользователя и механизма доступа. Параметр mostRecentAccessEpochTimeMicros содержит информацию о последнем времени доступа пользователя к ресурсу с помощью указанного механизма.

Общие сведения о доступе к ресурсу

Можно создать отчет для ресурса без разбивки по отдельным пользователям. Например, в следующем отчете указано, как часто к ресурсу обращаются с помощью разных механизмов доступа:

Идентификатор ресурса, к которому был получен доступ Название ресурса, к которому был получен доступ Способ доступа Количество операций доступа
12345678 DemoApp Firebase 31
12345678 DemoApp Пользовательский интерфейс Google Аналитики 624
12345678 DemoApp Google Реклама 83
12345678 DemoApp Google Analytics API 1744

Этот отчет можно создать, запросив параметры accessedPropertyId, accessedPropertyName, accessMechanism и показатель accessCount.

В отчете содержится по одной строке для каждой комбинации идентификатора ресурса и механизма доступа.

Доступ к отдельным данным

Чтобы создать отчет, в котором каждая строка основана на отдельной записи доступа к данным, удалите из запроса параметр mostRecentAccessEpochTimeMicros и используйте параметр epochTimeMicros. Запрашивать показатель accessCount не нужно, поскольку каждая строка отчета содержит информацию об одном случае доступа к данным.

В отчете ниже приведена подробная информация о каждом случае доступа пользователя к указанному ресурсу.

Unix-время в микросекундах Адрес электронной почты пользователя Идентификатор ресурса, к которому был получен доступ Название ресурса, к которому был получен доступ IP-адрес пользователя Способ доступа Возвращенные данные о расходах Возвращенные данные о доходе
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 Пользовательский интерфейс Google Аналитики true true
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 Пользовательский интерфейс Google Аналитики false false
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google Реклама true 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 Реклама false false
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google Реклама true true
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 Google Analytics API true false
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Реклама true true

Этот отчет можно создать, запросив параметры epochTimeMicros, userEmail, accessedPropertyId, accessedPropertyName, userIP, accessMechanism, costDataReturned, revenueDataReturned.