如何使用 api_request 作为指标或维度?

How to use api_request as a metric instead or a dimension?

我正在尝试测量通过我的服务器进行的 API 调用,而不是将 API 使用情况存储在我的服务器中,而是使用 Measurement Protocol 将其推送到 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 对 this code 的改编。

它成功地将事件推送到 firebase,我什至可以在 firebase 分析控制台上查看它。但是,当我尝试使用 GA4 数据 API 获取相同内容时,它失败了。我尝试从 Google Analytics 仪表板的“自定义定义”选项卡手动创建指标,它出现在元 API 中,并显示在指标数组下。但是,当我获取数据时失败了。

我做了一些实验,尝试将字段重命名为 api_request_2 并使用相同的代码。这一次,当我转到自定义定义部分时,它会自动创建该字段,但作为“维度”除外。我很困惑,所以我尝试使用 runReport API 进行相同的提取,只是这次将其用作维度,并将指标用作 eventCount。这确实有效并返回了结果。但这对我没有用,因为我需要它作为一个指标,所以我可以把它放在图表上,根据它的维度(日期),这样我就可以计算每天的 APIs 请求。我该如何着手完成这项工作?

如果您尝试获取每天“API 请求”事件的计数,则无需使用自定义定义。您共享的 Measurement Protocol 代码将发送 eventNameapi_request 的事件。您可以通过以下请求通过 GA4 数据 API 创建每日报告:

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

DataAPIhere.

中有使用维度过滤器的例子

您可以使用自定义定义做什么?

如果要记录有关请求的其他信息,可以添加事件参数、注册自定义定义并在数据 API 请求中使用自定义定义。例如,假设您正在向多个 API 发出 API 请求(例如 Drive API and the Youtube API)。您可以像这样向事件添加 api_method 参数:

$eventData = [
    'appInstanceId' => $appInstanceId,
    'userId'        => $userId,
    'events'        => [
        'name'   => 'api_request',
        'params' => [
            'api_method': 'drive-api'
        ]
    ]
];

为参数 api_method 注册自定义定义后,您可以在 Reports (Guide) 中使用该参数。此请求通过 GA4 数据 API 创建每日报告,该数据另外细分为 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"
      }
    }
  },
}

报告的示例响应行如下。此行表示您在 3 月 10 日向 drive-api 记录了 1337 个请求。

  "rows": [
...
    {
      "dimensionValues": [
        {
          "value": "20210310"
        },
        {
          "value": "drive-api"
        }
      ],
      "metricValues": [
        {
          "value": "1337"
        }
      ]
    },
...