Google analytics 如何使用api_请求作为度量或维度?

Google analytics 如何使用api_请求作为度量或维度?,google-analytics,google-analytics-api,google-analytics-firebase,google-analytics-4,Google Analytics,Google Analytics Api,Google Analytics Firebase,Google Analytics 4,我试图测量通过服务器进行的API调用,而不是将API使用情况存储在服务器中,而是使用测量协议将其推送到GA4。我已经成功地实现了它,并且正在使用以下代码成功地推送事件: $eventData = [ 'appInstanceId' => $appInstanceId, 'userId' => $userId, 'events' => [ 'name' => '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分析控制台上查看它。但是,当我尝试使用GA4数据API获取相同的数据时,它失败了。我试图从Google Analytics dashboard的“自定义定义”选项卡手动创建度量,它出现在meta API中,并显示在度量数组下。但是,当我获取数据时,它失败了


我做了一些实验,尝试将字段重命名为api_request_2,并使用了相同的代码。这一次,当我转到“自定义定义”部分时,它自动创建了字段,但作为“维度”除外。我感到困惑,所以我尝试使用RunReportAPI进行相同的获取,但这次将其用作维度,度量用作eventCount。这实际上起了作用并返回了一个结果。但这对我来说并不有用,因为我需要它作为一个度量,这样我就可以把它放在一个图上,与它的维度(日期)相对照,这样我就可以每天统计API请求的数量。我该如何进行这项工作?

如果您试图每天获取“API请求”事件的计数,则不需要使用自定义定义。您共享的测量协议代码将发送带有
api\u请求的
eventName
的事件。您可以通过以下请求通过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"
      }
    }
  },
}
在数据API中有使用维度过滤器的示例

您可以使用自定义定义做什么? 如果要记录有关请求的其他信息,可以添加事件参数,注册自定义定义,并在数据API请求中使用自定义定义。例如,假设您正在向多个API发出API请求(例如和)。您可以向事件添加
api\u方法
参数,如下所示:

$eventData = [
    'appInstanceId' => $appInstanceId,
    'userId'        => $userId,
    'events'        => [
        'name'   => 'api_request',
        'params' => [
            'api_method': 'drive-api'
        ]
    ]
];
注册参数
api\u方法的自定义定义后,可以在报告()中使用该参数。此请求通过GA4数据API创建每日报告,该报告由
API\u方法进一步细分:

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日将1337请求记录到
驱动器api

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

哇,这很有效,解决了这个问题。非常感谢。