如何使用 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 代码将发送 eventName
为 api_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"
}
]
},
...
我正在尝试测量通过我的服务器进行的 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 代码将发送 eventName
为 api_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"
}
]
},
...