Отчеты о доступе к данным можно создавать с помощью метода 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 версии 1, а затем вернитесь на эту страницу, чтобы узнать больше об отчетах о доступе к данным.
Как создать отчет о доступе к данным
Чтобы запросить отчет о доступе к данным, используйте метод 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. Рекомендуем начать со следующих параметров запроса:
- Хотя бы одна действительная запись в поле Диапазоны дат.
- Хотя бы одна действительная запись в поле 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.
| Время последнего доступа, выраженное в микросекундах с начала отсчета Unix | Адрес электронной почты пользователя | Количество операций доступа |
|---|---|---|
| 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 и т.д.).
| Время последнего доступа, выраженное в микросекундах с начала отсчета Unix | Адрес электронной почты пользователя | Способ доступа | Количество операций доступа |
|---|---|---|---|
| 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.