API данных Google Analytics v1Beta DimensionExpression\ConcatenateExpression
в порядке. поэтому мне удалось использовать функцию Analytics API «Попробовать сейчас» по адресу https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport, и я могу получить результаты я нуждаюсь. что я не могу понять, так это как построить свой запрос на php и заставить работать конкатенацию. без конкатенации я получаю ожидаемые результаты. так ясно, что проблема в том, что я использую DimensionExpression. вот мой код на данный момент:
$referrers = $client->runReport([
'property' => 'properties/' . $property_id,
'dateRanges' => [new DateRange([
'start_date' => $dates['firstDayOfLastMonth']->format('Y-m-d'),
'end_date' => $dates['lastDayOfLastMonth']->format('Y-m-d'),
'name' => 'Last Month']
)],
'dimensions' => [
[new Dimension(['name' => 'medium'])],
[new Dimension(['name' => 'source'])],
[new Dimension([
'name' => 'Medium_Source',
new DimensionExpression([
'concatenate' => new DimensionExpression\ConcatenateExpression([
'dimension_names' => [
'dimension_name' => 'medium',
'dimension_name' => 'source'
]
])
])
])]
],
'metrics' => [new Metric(['name' => 'totalUsers'])],
'metricAggregations' => MetricAggregation::TOTAL,
'orderBys' => [new OrderBy([
'metric' => new MetricOrderBy([
'metric_name' => 'totalUsers'
]),
'desc' => true
])],
'limit' => 10
]);
приводит к:
Fatal error: Uncaught UnexpectedValueException: Invalid message property: 0 in /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php:1063
Stack trace:
#0 /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(79): Google\Protobuf\Internal\Message->mergeFromArray(Array)
#1 /...server_path.../vendor/google/analytics-data/src/V1beta/Dimension.php(68): Google\Protobuf\Internal\Message->__construct(Array)
#2 /...server_path.../inc/digital-stats/src/HelloAnalytics.php(159): Google\Analytics\Data\V1beta\Dimension->__construct(Array)
#3 {main} thrown in /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php on line 1063
запрос CURL, отправляемый функцией «Попробовать сейчас»:
curl --request POST \
'https://analyticsdata.googleapis.com/v1beta/properties/...property_id...:runReport?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"dateRanges":[{
"startDate":"2021-11-01",
"endDate":"2021-11-30",
"name":"November 2021"
}],
"dimensions":[{
"name":"mediumSource",
"dimensionExpression":{
"concatenate":{
"dimensionNames":["medium","source"],
"delimiter":"/"
}
}
}],
"metrics":[{
"name":"totalUsers"
}],
"orderBys":[{
"metric":{
"metricName":"totalUsers"
},
"desc":true
}],
"limit":10,
"metricAggregations":["TOTAL"]
}' \
--compressed
Я не могу понять, где я ошибаюсь. я пробовал несколько разных имен в
'dimension_names'
массив, такой как 'name', 'Dimension_name', 'DimensName', и попробовал его вообще без имени.