Как использовать 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"
        }
      ]
    },
...