Как использовать api_request для метрики или измерения?
Я пытаюсь измерить вызовы API, сделанные через мой сервер, и вместо того, чтобы сохранять использование API на моем сервере, я отправляю его в GA4, используя протокол измерения. Я успешно реализовал его и успешно отправляю события, используя этот код:
$eventData = [
'appInstanceId' => $appInstanceId,
'userId' => $userId,
'events' => [
'name' => 'api_request',
'params' => []
]
];
$firebaseAppId = Settings::get('firebase_app_id');
$appSecret = Settings::get('firebase_api_secret');
$out = Http::get(sprintf('https://www.google-analytics.com/mp/collect?firebase_app_id=%s&api_secret=%s', $firebaseAppId, $appSecret), function ($http) use ($eventData) {
$http->setOption(CURLOPT_POSTFIELDS, json_encode($eventData));
});
По сути, это PHP-адаптация этого кода.
И он успешно отправляет событие в firebase, и я даже могу просмотреть его в консоли аналитики firebase. Однако когда я пытаюсь получить то же самое с помощью API данных GA4, это не удается. Я попытался вручную создать метрику на вкладке «Пользовательские определения» на панели инструментов Google Analytics, и она появилась в мета-API и отображалась под массивом метрик. Однако когда я получаю данные, это не удается.
Я немного поэкспериментировал и попробовал переименовать поле в api_request_2 и использовал тот же код. На этот раз, когда я перешел в раздел пользовательских определений, он автоматически создал поле, за исключением «измерения». Я был сбит с толку и попытался получить то же самое с помощью runReport API, за исключением того, что на этот раз использовал его как измерение, а метрику как eventCount. Это действительно сработало и вернуло результат. Но для меня это бесполезно, потому что мне это нужно в качестве метрики, чтобы я мог нанести ее на график по ее измерению (дате), чтобы у меня было количество запросов API за день. Как мне сделать эту работу?
1 ответ
Если вы пытаетесь получить количество событий «запросов API» за день, вам не нужно использовать специальные определения. Код протокола измерения, которым вы поделились, будет отправлять события с
eventName
из
api_request
. Вы можете создать ежедневный отчет через API данных GA4, выполнив следующий запрос:
POST https://analyticsdata.googleapis.com/v1alpha:runReport
{
"entity": { "propertyId": "YOUR_GA4_PROPERTY_ID" },
"dateRanges": [{ "startDate": "2021-03-01", "endDate": "2021-03-20" }],
"dimensions": [{ "name": "date" }],
"metrics": [{ "name": "eventCount" }],
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"stringFilter": {
"value": "api_request"
}
}
},
}
Примеры использования фильтров измерений в API данных приведены здесь .
Для чего вы могли бы использовать собственные определения?
Если вы хотите регистрировать дополнительную информацию о запросе, вы можете добавить параметр события, зарегистрировать настраиваемое определение и использовать настраиваемое определение в запросе Data API. Например, предположим, что вы делаете запросы API к нескольким API (например, Drive API и Youtube API ). Вы можете добавить параметр к событию следующим образом:
$eventData = [
'appInstanceId' => $appInstanceId,
'userId' => $userId,
'events' => [
'name' => 'api_request',
'params' => [
'api_method': 'drive-api'
]
]
];
После регистрации пользовательского определения для параметра вы можете использовать параметр в отчетах ( Руководство ). Этот запрос создает ежедневный отчет через API данных GA4, который дополнительно разбивается на
api_method
:
POST https://analyticsdata.googleapis.com/v1alpha:runReport
{
"entity": { "propertyId": "YOUR_GA4_PROPERTY_ID" },
"dateRanges": [{ "startDate": "2021-03-01", "endDate": "2021-03-20" }],
"dimensions": [{ "name": "date" },{ "name": "customEvent:api_method" }],
"metrics": [{ "name": "eventCount" }],
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"stringFilter": {
"value": "api_request"
}
}
},
}
Ниже приводится пример строки ответа для отчета. Эта строка будет означать, что вы зарегистрировали 1337 запросов в
drive-api
10 марта.
"rows": [
...
{
"dimensionValues": [
{
"value": "20210310"
},
{
"value": "drive-api"
}
],
"metricValues": [
{
"value": "1337"
}
]
},
...