В этом руководстве объясняется, как создать базовый отчет для ваших данных Analytics с помощью API данных Google Analytics v1. Отчеты Data API v1 аналогичны отчетам, которые вы можете создавать в разделе «Отчеты» пользовательского интерфейса Google Analytics .
В этом руководстве рассматриваются основные отчеты — общая функция отчетов Data API. Data API v1 также имеет специализированные отчеты в реальном времени и отчеты по последовательностям .
runReport
— рекомендуемый метод для запросов, который используется во всех примерах в этом руководстве. Ознакомьтесь с расширенными функциями , чтобы получить обзор других основных методов отчетности. Попробуйте Query Explorer , чтобы проверить свои запросы.
Обзор отчетов
Отчеты – это таблицы данных о событиях для ресурса Google Analytics . Каждая таблица отчета содержит параметры и показатели, запрошенные в вашем запросе, с данными в отдельных строках.
Используйте фильтры, чтобы возвращать только строки, соответствующие определенному условию, и нумерацию страниц для навигации по результатам.
Вот пример таблицы отчета, в которой показано одно измерение ( Country
) и одна метрика ( activeUsers
):
Страна | Активные пользователи |
---|---|
Япония | 2541 |
Франция | 12 |
Укажите источник данных
Для каждого запроса runReport
необходимо указать идентификатор ресурса Google Analytics . Указанное вами свойство Analytics используется в качестве набора данных для этого запроса. Вот пример:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
Ответ на этот запрос включает только данные из ресурса Analytics, который вы указали как
.
Если вы используете клиентские библиотеки Data API , укажите источник данных в параметре property
в виде properties/
. См. краткое руководство для примеров использования клиентских библиотек.
См. раздел «Отправка событий протокола измерений в Google Analytics», если вы хотите включать события протокола измерений в свои отчеты.
Создать отчет
Чтобы создать отчет, создайте объект RunReportRequest
. Рекомендуем начать со следующих параметров:
- Допустимая запись в поле
dateRanges
. - По крайней мере одна действительная запись в поле
dimensions
. - По крайней мере одна действительная запись в поле
metrics
.
Вот пример запроса с рекомендуемыми полями:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
"dateRanges": [{ "startDate": "2023-09-01" ", "endDate": "2023-09-15 " }],
"dimensions": [{ "name": "country" }],
"metrics": [{ "name": "activeUsers" }]
}
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.DimensionHeader;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.MetricHeader;
import com.google.analytics.data.v1beta.Row;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the creation of a basic report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportSample"
* }</pre>
*/
public class RunReportSample {
public static void main(String... args) throws Exception {
/**
* TODO(developer): Replace this variable with your Google Analytics 4 property ID before
* running the sample.
*/
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReport(propertyId);
}
// Runs a report of active users grouped by country.
static void sampleRunReport(String propertyId) throws Exception {
// Using a default constructor instructs the client to use the credentials
// specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("country"))
.addMetrics(Metric.newBuilder().setName("activeUsers"))
.addDateRanges(
DateRange.newBuilder().setStartDate("2020-09-01").setEndDate("2020-09-15"))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
printRunResponseResponse(response);
}
}
// Prints results of a runReport call.
static void printRunResponseResponse(RunReportResponse response) {
System.out.printf("%s rows received%n", response.getRowsList().size());
for (DimensionHeader header : response.getDimensionHeadersList()) {
System.out.printf("Dimension header name: %s%n", header.getName());
}
for (MetricHeader header : response.getMetricHeadersList()) {
System.out.printf("Metric header name: %s (%s)%n", header.getName(), header.getType());
}
System.out.println("Report result:");
for (Row row : response.getRowsList()) {
System.out.printf(
"%s, %s%n", row.getDimensionValues(0).getValue(), row.getMetricValues(0).getValue());
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyId Your GA-4 Property ID
*/
function run_report(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDateRanges([
new DateRange([
'start_date' => '2020-09-01',
'end_date' => '2020-09-15',
]),
])
->setDimensions([
new Dimension([
'name' => 'country',
]),
])
->setMetrics([
new Metric([
'name' => 'activeUsers',
]),
]);
$response = $client->runReport($request);
printRunReportResponse($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponse(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)%s',
$metricHeader->getName(),
MetricType::name($metricHeader->getType()),
PHP_EOL
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
print $row->getDimensionValues()[0]->getValue()
. ' ' . $row->getMetricValues()[0]->getValue() . PHP_EOL;
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Metric,
MetricType,
RunReportRequest,
)
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report(property_id)
def run_report(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report of active users grouped by country."""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="country")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-09-01", end_date="2020-09-15")],
)
response = client.run_report(request)
print_run_report_response(response)
def print_run_report_response(response):
"""Prints results of a runReport call."""
print(f"{response.row_count} rows received")
for dimensionHeader in response.dimension_headers:
print(f"Dimension header name: {dimensionHeader.name}")
for metricHeader in response.metric_headers:
metric_type = MetricType(metricHeader.type_).name
print(f"Metric header name: {metricHeader.name} ({metric_type})")
print("Report result:")
for rowIdx, row in enumerate(response.rows):
print(f"\nRow {rowIdx}")
for i, dimension_value in enumerate(row.dimension_values):
dimension_name = response.dimension_headers[i].name
print(f"{dimension_name}: {dimension_value.value}")
for i, metric_value in enumerate(row.metric_values):
metric_name = response.metric_headers[i].name
print(f"{metric_name}: {metric_value.value}")
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report of active users grouped by country.
async function runReport() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'country',
},
],
metrics: [
{
name: 'activeUsers',
},
],
dateRanges: [
{
startDate: '2020-09-01',
endDate: '2020-09-15',
},
],
});
printRunReportResponse(response);
}
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
runReport();
Запрос метрик
Metrics
— это количественные измерения данных о ваших событиях. В запросах runReport
необходимо указать хотя бы одну метрику.
Полный список метрик, которые вы можете запросить, см. в разделе «Метрики API» .
Ниже приведен пример запроса, в котором показаны три показателя, сгруппированные по date
измерения:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "date" }],
"metrics": [
{
"name": "activeUsers"
},
{
"name": "newUsers"
},
{
"name": "totalRevenue"
}
],
}
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the creation of a basic report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleMetricsSample"
* }</pre>
*/
public class RunReportWithMultipleMetricsSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithMultipleMetrics(propertyId);
}
// Runs a report of active users, new users and total revenue grouped by date dimension.
static void sampleRunReportWithMultipleMetrics(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("date"))
.addMetrics(Metric.newBuilder().setName("activeUsers"))
.addMetrics(Metric.newBuilder().setName("newUsers"))
.addMetrics(Metric.newBuilder().setName("totalRevenue"))
.addDateRanges(DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("today"))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyID Your GA-4 Property ID
* Runs a report of active users grouped by three metrics.
*/
function run_report_with_multiple_metrics(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([new Dimension(['name' => 'date'])])
->setMetrics([
new Metric(['name' => 'activeUsers']),
new Metric(['name' => 'newUsers']),
new Metric(['name' => 'totalRevenue'])
])
->setDateRanges([
new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'today',
])
]);
$response = $client->runReport($request);
printRunReportResponseWithMultipleMetrics($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithMultipleMetrics(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_multiple_metrics(property_id)
def run_report_with_multiple_metrics(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report of active users, new users and total revenue grouped by
date dimension."""
client = BetaAnalyticsDataClient()
# Runs a report of active users grouped by three dimensions.
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="date")],
metrics=[
Metric(name="activeUsers"),
Metric(name="newUsers"),
Metric(name="totalRevenue"),
],
date_ranges=[DateRange(start_date="7daysAgo", end_date="today")],
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report of active users grouped by three metrics.
async function runReportWithMultipleMetrics() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'date',
},
],
metrics: [
{
name: 'activeUsers',
},
{
name: 'newUsers',
},
{
name: 'totalRevenue',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'today',
},
],
});
printRunReportResponse(response);
}
runReportWithMultipleMetrics();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
Ниже приведен пример ответа, который показывает 1135 активных пользователей, 512 новых пользователей и общий доход 73,0841 в валюте вашего ресурса Google Analytics на дату 20231025
(25 октября 2023 г.).
"rows": [
...
{
"dimensionValues": [
{
"value": "20231025"
}
],
"metricValues": [
{
"value": "1135"
},
{
"value": "512"
},
{
"value": "73.0841"
}
]
},
...
],
Прочитайте ответ
Ответ отчета содержит заголовок и строки данных. Заголовок состоит из DimensionHeaders
и MetricHeaders
, в которых перечислены столбцы отчета. Каждая строка состоит из DimensionValues
и MetricValues
. Порядок столбцов в запросе, заголовке и строках одинаков.
Вот пример ответа на предыдущий образец запроса:
{
"dimensionHeaders": [
{
"name": "country"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "Japan"
}
],
"metricValues": [
{
"value": "2541"
}
]
},
{
"dimensionValues": [
{
"value": "France"
}
],
"metricValues": [
{
"value": "12"
}
]
}
],
"metadata": {},
"rowCount": 2
}
Группировать и фильтровать данные
Измерения — это качественные атрибуты, которые можно использовать для группировки и фильтрации данных. Например, измерение city
указывает город, например Paris
или New York
, где произошло каждое событие. Измерения не являются обязательными для запросов runReport
, и вы можете использовать до девяти измерений для каждого запроса.
Полный список измерений, которые можно использовать для группировки и фильтрации данных, см. в разделе «Измерения API».
Группа
Вот пример запроса, который группирует активных пользователей по трем измерениям:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [
{
"name": "country"
},
{
"name": "region"
},
{
"name": "city"
}
],
"metrics": [{ "name": "activeUsers" }]
}
```
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the creation of a basic report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleDimensionsSample"
* }</pre>
*/
public class RunReportWithMultipleDimensionsSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithMultipleDimensions(propertyId);
}
// Runs a report of active users grouped by three dimensions.
static void sampleRunReportWithMultipleDimensions(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("country"))
.addDimensions(Dimension.newBuilder().setName("region"))
.addDimensions(Dimension.newBuilder().setName("city"))
.addMetrics(Metric.newBuilder().setName("activeUsers"))
.addDateRanges(DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("today"))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyID Your GA-4 Property ID
* Runs a report of active users grouped by three dimensions.
*/
function run_report_with_multiple_dimensions(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([
new Dimension(['name' => 'country']),
new Dimension(['name' => 'region']),
new Dimension(['name' => 'city']),
])
->setMetrics([new Metric(['name' => 'activeUsers'])])
->setDateRanges([
new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'today',
])
]);
$response = $client->runReport($request);
printRunReportResponseWithMultipleDimensions($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithMultipleDimensions(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_multiple_dimensions(property_id)
def run_report_with_multiple_dimensions(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report of active users grouped by three dimensions."""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[
Dimension(name="country"),
Dimension(name="region"),
Dimension(name="city"),
],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="7daysAgo", end_date="today")],
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report of active users grouped by three dimensions.
async function runReportWithMultipleDimensions() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'country',
},
{
name: 'region',
},
{
name: 'city',
},
],
metrics: [
{
name: 'activeUsers',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'today',
},
],
});
printRunReportResponse(response);
}
runReportWithMultipleDimensions();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
Вот пример строки отчета для предыдущего запроса. В этой строке показано, что в течение указанного диапазона дат было 47 активных пользователей с событиями из Кейптауна, Южная Африка.
"rows": [
...
{
"dimensionValues": [
{
"value": "South Africa"
},
{
"value": "Western Cape"
},
{
"value": "Cape Town"
}
],
"metricValues": [
{
"value": "47"
}
]
},
...
],
Фильтр
Вы создаете отчеты с данными только для определенных значений измерения. Чтобы отфильтровать измерения, укажите FilterExpression
в поле dimensionFilter
.
Вот пример, который возвращает отчет о временных рядах eventCount
, когда eventName
имеет значение first_open
для каждой date
:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
"dateRanges": [{ "startDate": "7daysAgo", "endDate": "yesterday" }],
"dimensions": [{ "name": "date" }],
"metrics": [{ "name": "eventCount" }],
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"stringFilter": {
"value": "first_open"
}
}
},
}
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Filter;
import com.google.analytics.data.v1beta.FilterExpression;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the usage of dimension and metric
* filters in a report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionFilterSample"
* }</pre>
*/
public class RunReportWithDimensionFilterSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithDimensionFilter(propertyId);
}
// Runs a report using a dimension filter. The call returns a time series report of `eventCount`
// when `eventName` is `first_open` for each date.
// This sample uses relative date range values.
// See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
static void sampleRunReportWithDimensionFilter(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("date"))
.addMetrics(Metric.newBuilder().setName("eventCount"))
.addDateRanges(
DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday"))
.setDimensionFilter(
FilterExpression.newBuilder()
.setFilter(
Filter.newBuilder()
.setFieldName("eventName")
.setStringFilter(
Filter.StringFilter.newBuilder().setValue("first_open"))))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyId Your GA-4 Property ID
* Runs a report using a dimension filter. The call returns a time series
* report of `eventCount` when `eventName` is `first_open` for each date.
* This sample uses relative date range values. See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
* for more information.
*/
function run_report_with_dimension_filter(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([new Dimension(['name' => 'date'])])
->setMetrics([new Metric(['name' => 'eventCount'])])
->setDateRanges([
new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'yesterday',
])
])
->setDimensionFilter(new FilterExpression([
'filter' => new Filter([
'field_name' => 'eventName',
'string_filter' => new StringFilter([
'value' => 'first_open'
]),
]),
]));
$response = $client->runReport($request);
printRunReportResponseWithDimensionFilter($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithDimensionFilter(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_dimension_filter(property_id)
def run_report_with_dimension_filter(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report using a dimension filter. The call returns a time series
report of `eventCount` when `eventName` is `first_open` for each date.
This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
for more information.
"""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="date")],
metrics=[Metric(name="eventCount")],
date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")],
dimension_filter=FilterExpression(
filter=Filter(
field_name="eventName",
string_filter=Filter.StringFilter(value="first_open"),
)
),
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report using a dimension filter. The call returns a time series
// report of `eventCount` when `eventName` is `first_open` for each date.
// This sample uses relative date range values. See
// https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
async function runReportWithDimensionFilter() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'date',
},
],
metrics: [
{
name: 'eventCount',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'yesterday',
},
],
dimensionFilter: {
filter: {
fieldName: 'eventName',
stringFilter: {
value: 'first_open',
},
},
},
});
printRunReportResponse(response);
}
runReportWithDimensionFilter();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
Вот еще один пример FilterExpression
, где andGroup
включает только данные, соответствующие всем критериям в списке выражений. Этот dimensionFilter
выбирает, когда оба browser
— Chrome
, а countryId
— US
:
...
"dimensionFilter": {
"andGroup": {
"expressions": [
{
"filter": {
"fieldName": "browser",
"stringFilter": {
"value": "Chrome"
}
}
},
{
"filter": {
"fieldName": "countryId",
"stringFilter": {
"value": "US"
}
}
}
]
}
},
...
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Filter;
import com.google.analytics.data.v1beta.FilterExpression;
import com.google.analytics.data.v1beta.FilterExpressionList;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the usage of dimension and metric
* filters in a report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithMultipleDimensionFiltersSample"
* }</pre>
*/
public class RunReportWithMultipleDimensionFiltersSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithMultipleDimensionFilters(propertyId);
}
// Runs a report using multiple dimension filters joined as `and_group` expression. The filter
// selects for when both `browser` is `Chrome` and `countryId` is `US`.
// This sample uses relative date range values.
// See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
static void sampleRunReportWithMultipleDimensionFilters(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("browser"))
.addMetrics(Metric.newBuilder().setName("activeUsers"))
.addDateRanges(
DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday"))
.setDimensionFilter(
FilterExpression.newBuilder()
.setAndGroup(
FilterExpressionList.newBuilder()
.addExpressions(
FilterExpression.newBuilder()
.setFilter(
Filter.newBuilder()
.setFieldName("browser")
.setStringFilter(
Filter.StringFilter.newBuilder()
.setValue("Chrome"))))
.addExpressions(
FilterExpression.newBuilder()
.setFilter(
Filter.newBuilder()
.setFieldName("countryId")
.setStringFilter(
Filter.StringFilter.newBuilder()
.setValue("US"))))))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\FilterExpressionList;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyId Your GA-4 Property ID
* Runs a report using multiple dimension filters joined as `and_group`
* expression. The filter selects for when both `browser` is `Chrome` and
* `countryId` is `US`.
* This sample uses relative date range values. See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
* for more information.
*/
function run_report_with_multiple_dimension_filters(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([new Dimension(['name' => 'browser'])])
->setMetrics([new Metric(['name' => 'activeUsers'])])
->setDateRanges([
new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'yesterday',
]),
])
->setDimensionFilter(new FilterExpression([
'and_group' => new FilterExpressionList([
'expressions' => [
new FilterExpression([
'filter' => new Filter([
'field_name' => 'browser',
'string_filter' => new StringFilter([
'value' => 'Chrome',
])
]),
]),
new FilterExpression([
'filter' => new Filter([
'field_name' => 'countryId',
'string_filter' => new StringFilter([
'value' => 'US',
])
]),
]),
],
]),
]));
$response = $client->runReport($request);
printRunReportResponseWithMultipleDimensionFilters($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithMultipleDimensionFilters(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
FilterExpressionList,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_multiple_dimension_filters(property_id)
def run_report_with_multiple_dimension_filters(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report using multiple dimension filters joined as `and_group`
expression. The filter selects for when both `browser` is `Chrome` and
`countryId` is `US`.
This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
for more information.
"""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="browser")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")],
dimension_filter=FilterExpression(
and_group=FilterExpressionList(
expressions=[
FilterExpression(
filter=Filter(
field_name="browser",
string_filter=Filter.StringFilter(value="Chrome"),
)
),
FilterExpression(
filter=Filter(
field_name="countryId",
string_filter=Filter.StringFilter(value="US"),
)
),
]
)
),
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report using multiple dimension filters joined as `and_group`
// expression. The filter selects for when both `browser` is `Chrome` and
// `countryId` is `US`.
// This sample uses relative date range values. See
// https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
async function runReportWithMultipleDimensionFilters() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'browser',
},
],
metrics: [
{
name: 'activeUsers',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'yesterday',
},
],
dimensionFilter: {
andGroup: {
expressions: [
{
filter: {
fieldName: 'browser',
stringFilter: {
value: 'Chrome',
},
},
},
{
filter: {
fieldName: 'countryId',
stringFilter: {
value: 'US',
},
},
},
],
},
},
});
printRunReportResponse(response);
}
runReportWithMultipleDimensionFilters();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
orGroup
включает данные, соответствующие любому из критериев в списке выражений.
notExpression
исключает данные, соответствующие его внутреннему выражению. Вот dimensionFilter
, который возвращает данные только в том случае, если pageTitle
не является My Homepage
. В отчете показаны данные о событиях для каждого pageTitle
, кроме My Homepage
:
...
"dimensionFilter": {
"notExpression": {
"filter": {
"fieldName": "pageTitle",
"stringFilter": {
"value": "My Homepage"
}
}
}
},
...
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Filter;
import com.google.analytics.data.v1beta.FilterExpression;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the usage of dimension and metric
* filters in a report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionExcludeFilterSample"
* }</pre>
*/
public class RunReportWithDimensionExcludeFilterSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithDimensionExcludeFilter(propertyId);
}
// Runs a report using a filter with `not_expression`. The dimension filter selects for when
// `pageTitle` is not `My Homepage`.
// This sample uses relative date range values.
// See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
static void sampleRunReportWithDimensionExcludeFilter(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("pageTitle"))
.addMetrics(Metric.newBuilder().setName("sessions"))
.addDateRanges(
DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday"))
.setDimensionFilter(
FilterExpression.newBuilder()
.setNotExpression(
FilterExpression.newBuilder()
.setFilter(
Filter.newBuilder()
.setFieldName("pageTitle")
.setStringFilter(
Filter.StringFilter.newBuilder()
.setValue("My Homepage")))))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\StringFilter;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* Runs a report using a filter with `not_expression`. The dimension filter
* selects for when `pageTitle` is not `My Homepage`.
* This sample uses relative date range values. See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
* for more information.
* @param string $propertyId Your GA-4 Property ID
*/
function run_report_with_dimension_exclude_filter(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([new Dimension(['name' => 'pageTitle'])])
->setMetrics([new Metric(['name' => 'sessions'])])
->setDateRanges([new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'yesterday',
])
])
->setDimensionFilter(new FilterExpression([
'not_expression' => new FilterExpression([
'filter' => new Filter([
'field_name' => 'pageTitle',
'string_filter' => new StringFilter([
'value' => 'My Homepage',
]),
]),
]),
]));
$response = $client->runReport($request);
printRunReportResponseWithDimensionExcludeFilter($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithDimensionExcludeFilter(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_dimension_exclude_filter(property_id)
def run_report_with_dimension_exclude_filter(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report using a filter with `not_expression`. The dimension filter
selects for when `pageTitle` is not `My Homepage`.
This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
for more information.
"""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="pageTitle")],
metrics=[Metric(name="sessions")],
date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")],
dimension_filter=FilterExpression(
not_expression=FilterExpression(
filter=Filter(
field_name="pageTitle",
string_filter=Filter.StringFilter(value="My Homepage"),
)
)
),
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report using a filter with `not_expression`. The dimension filter
// selects for when `pageTitle` is not `My Homepage`.
// This sample uses relative date range values. See
// https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
async function runReportWithDimensionExcludeFilter() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'pageTitle',
},
],
metrics: [
{
name: 'sessions',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'yesterday',
},
],
dimensionFilter: {
notExpression: {
filter: {
fieldName: 'pageTitle',
stringFilter: {
value: 'My Homepage',
},
},
},
},
});
printRunReportResponse(response);
}
runReportWithDimensionExcludeFilter();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
inListFilter
сопоставляет данные для любого значения в списке. Вот dimensionFilter
, который возвращает данные о событии, где eventName
— это purchase
, in_app_purchase
и app_store_subscription_renew
:
...
"dimensionFilter": {
"filter": {
"fieldName": "eventName",
"inListFilter": {
"values": ["purchase",
"in_app_purchase",
"app_store_subscription_renew"]
}
}
},
...
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Filter;
import com.google.analytics.data.v1beta.FilterExpression;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
import java.util.ArrayList;
/**
* Google Analytics Data API sample application demonstrating the usage of dimension and metric
* filters in a report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.dimension_filter
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDimensionInListFilterSample"
* }</pre>
*/
public class RunReportWithDimensionInListFilterSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithDimensionInListFilter(propertyId);
}
// Runs a report using a dimension filter with `in_list_filter` expression. The filter selects for
// when `eventName` is set to one of three event names specified in the query.
// This sample uses relative date range values.
// See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
static void sampleRunReportWithDimensionInListFilter(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDimensions(Dimension.newBuilder().setName("eventName"))
.addMetrics(Metric.newBuilder().setName("sessions"))
.addDateRanges(
DateRange.newBuilder().setStartDate("7daysAgo").setEndDate("yesterday"))
.setDimensionFilter(
FilterExpression.newBuilder()
.setFilter(
Filter.newBuilder()
.setFieldName("eventName")
.setInListFilter(
Filter.InListFilter.newBuilder()
.addAllValues(
new ArrayList<String>() {
{
add("purchase");
add("in_app_purchase");
add("app_store_subscription_renew");
}
})
.build())))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Filter;
use Google\Analytics\Data\V1beta\Filter\InListFilter;
use Google\Analytics\Data\V1beta\FilterExpression;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* Runs a report using a dimension filter with `in_list_filter` expression.
* The filter selects for when `eventName` is set to one of three event names
* specified in the query.
* This sample uses relative date range values. See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
* for more information.
* @param string $propertyId Your GA-4 Property ID
*/
function run_report_with_dimension_in_list_filter(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDimensions([new Dimension(['name' => 'eventName'])])
->setMetrics([new Metric(['name' => 'sessions'])])
->setDateRanges([new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'yesterday',
])
])
->setDimensionFilter(new FilterExpression([
'filter' => new Filter([
'field_name' => 'eventName',
'in_list_filter' => new InListFilter([
'values' => [
'purchase',
'in_app_purchase',
'app_store_subscription_renew',
],
]),
]),
]));
$response = $client->runReport($request);
printRunReportResponseWithDimensionInListFilter($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithDimensionInListFilter(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Filter,
FilterExpression,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_dimension_in_list_filter(property_id)
def run_report_with_dimension_in_list_filter(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report using a dimension filter with `in_list_filter` expression.
The filter selects for when `eventName` is set to one of three event names
specified in the query.
This sample uses relative date range values. See https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
for more information.
"""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
dimensions=[Dimension(name="eventName")],
metrics=[Metric(name="sessions")],
date_ranges=[DateRange(start_date="7daysAgo", end_date="yesterday")],
dimension_filter=FilterExpression(
filter=Filter(
field_name="eventName",
in_list_filter=Filter.InListFilter(
values=[
"purchase",
"in_app_purchase",
"app_store_subscription_renew",
]
),
)
),
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report using a dimension filter with `in_list_filter` expression.
// The filter selects for when `eventName` is set to one of three event names
// specified in the query.
// This sample uses relative date range values. See
// https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/DateRange
// for more information.
async function runReportWithDimensionInListFilter() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dimensions: [
{
name: 'eventName',
},
],
metrics: [
{
name: 'sessions',
},
],
dateRanges: [
{
startDate: '7daysAgo',
endDate: 'yesterday',
},
],
dimensionFilter: {
filter: {
fieldName: 'eventName',
inListFilter: {
values: [
'purchase',
'in_app_purchase',
'app_store_subscription_renew',
],
},
},
},
});
printRunReportResponse(response);
}
runReportWithDimensionInListFilter();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
Навигация по длинным отчетам
По умолчанию отчет содержит только первые 10 000 строк данных о событиях. Чтобы просмотреть в отчете до 100 000 строк, вы можете включить "limit": 100000
в RunReportRequest
.
Для отчетов, содержащих более 100 000 строк, необходимо отправить серию запросов и просмотреть результаты. Например, вот запрос первых 100 000 строк:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
...
"limit": 100000,
"offset": 0
}
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the use of pagination to retrieve
* large result sets.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.offset
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithPaginationSample"
* }</pre>
*/
public class RunReportWithPaginationSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithPagination(propertyId);
}
// Runs a report several times, each time retrieving a portion of result using pagination.
static void sampleRunReportWithPagination(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDateRanges(
DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday"))
.addDimensions(Dimension.newBuilder().setName("firstUserSource"))
.addDimensions(Dimension.newBuilder().setName("firstUserMedium"))
.addDimensions(Dimension.newBuilder().setName("firstUserCampaignName"))
.addMetrics(Metric.newBuilder().setName("sessions"))
.addMetrics(Metric.newBuilder().setName("keyEvents"))
.addMetrics(Metric.newBuilder().setName("totalRevenue"))
.setLimit(100000)
.setOffset(0)
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
RunReportSample.printRunResponseResponse(response);
// Run the same report with a different offset value to retrieve the second page of a
// response.
request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDateRanges(
DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday"))
.addDimensions(Dimension.newBuilder().setName("firstUserSource"))
.addDimensions(Dimension.newBuilder().setName("firstUserMedium"))
.addDimensions(Dimension.newBuilder().setName("firstUserCampaignName"))
.addMetrics(Metric.newBuilder().setName("sessions"))
.addMetrics(Metric.newBuilder().setName("keyEvents"))
.addMetrics(Metric.newBuilder().setName("totalRevenue"))
.setLimit(100000)
.setOffset(100000)
.build();
// Make the request.
response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDateRanges([
new DateRange([
'start_date' => '350daysAgo',
'end_date' => 'yesterday',
])
])
->setDimensions([
new Dimension(['name' => 'firstUserSource']),
new Dimension(['name' => 'firstUserMedium']),
new Dimension(['name' => 'firstUserCampaignName']),
])
->setMetrics([
new Metric(['name' => 'sessions']),
new Metric(['name' => 'keyEvents']),
new Metric(['name' => 'totalRevenue']),
])
->setLimit(100000)
->setOffset(0);
$requestCount = 1;
printf('Sending request #%d' . PHP_EOL, $requestCount);
$response = $client->runReport($request);
request = RunReportRequest(
property=f"properties/{property_id}",
date_ranges=[DateRange(start_date="365daysAgo", end_date="yesterday")],
dimensions=[
Dimension(name="firstUserSource"),
Dimension(name="firstUserMedium"),
Dimension(name="firstUserCampaignName"),
],
metrics=[
Metric(name="sessions"),
Metric(name="keyEvents"),
Metric(name="totalRevenue"),
],
limit=100000,
offset=0,
)
response = client.run_report(request)
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dateRanges: [
{
startDate: '350daysAgo',
endDate: 'yesterday',
},
],
dimensions: [
{
name: 'firstUserSource',
},
{
name: 'firstUserMedium',
},
{
name: 'firstUserCampaignName',
},
],
metrics: [
{
name: 'sessions',
},
{
name: 'keyEvents',
},
{
name: 'totalRevenue',
},
],
limit: 100000,
offset: 0,
});
Параметр rowCount
в ответе указывает общее количество строк независимо от значений limit
и offset
в запросе. Например, если в ответе указано "rowCount": 272345
, вам потребуется три запроса по 100 000 строк каждый, чтобы получить все данные.
Вот пример запроса для следующих 100 000 строк. Все остальные параметры, такие как dateRange
, dimensions
и metrics
должны быть такими же, как в первом запросе.
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
...
"limit": 100000,
"offset": 100000
}
request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDateRanges(
DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday"))
.addDimensions(Dimension.newBuilder().setName("firstUserSource"))
.addDimensions(Dimension.newBuilder().setName("firstUserMedium"))
.addDimensions(Dimension.newBuilder().setName("firstUserCampaignName"))
.addMetrics(Metric.newBuilder().setName("sessions"))
.addMetrics(Metric.newBuilder().setName("keyEvents"))
.addMetrics(Metric.newBuilder().setName("totalRevenue"))
.setLimit(100000)
.setOffset(100000)
.build();
// Make the request.
response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
$rowsReceived = count($response->getRows());
$totalRows = $response->getRowCount();
// Run the same report with an increased offset value to retrieve each additional
// page until all rows are received.
while ($rowsReceived < $totalRows) {
$request = $request->setOffset($rowsReceived);
$requestCount++;
printf('Sending request #%d' . PHP_EOL, $requestCount);
$response = $client->runReport($request);
$rowsReceived += count($response->getRows());
printRunReportResponseWithPagination($response, $requestCount);
}
request = RunReportRequest(
property=f"properties/{property_id}",
date_ranges=[DateRange(start_date="365daysAgo", end_date="yesterday")],
dimensions=[
Dimension(name="firstUserSource"),
Dimension(name="firstUserMedium"),
Dimension(name="firstUserCampaignName"),
],
metrics=[
Metric(name="sessions"),
Metric(name="keyEvents"),
Metric(name="totalRevenue"),
],
limit=100000,
offset=100000,
)
response = client.run_report(request)
const [secondResponse] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dateRanges: [
{
startDate: '350daysAgo',
endDate: 'yesterday',
},
],
dimensions: [
{
name: 'firstUserSource',
},
{
name: 'firstUserMedium',
},
{
name: 'firstUserCampaignName',
},
],
metrics: [
{
name: 'sessions',
},
{
name: 'keyEvents',
},
{
name: 'totalRevenue',
},
],
limit: 100000,
offset: 100000,
});
Вы можете использовать значения offset
, например 200000
или 300000
, для получения последующих результатов. Все остальные параметры, такие как dateRange
, dimensions
и metrics
должны быть такими же, как в первом запросе.
Используйте несколько диапазонов дат
Один запрос отчета может получить данные для нескольких dateRanges
. Например, в этом отчете сравниваются первые две недели августа 2022 и 2023 годов:
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID :runReport
{
"dateRanges": [
{
"startDate": "2022-08-01",
"endDate": "2022-08-14"
},
{
"startDate": "2023-08-01",
"endDate": "2023-08-14"
}
],
"dimensions": [{ "name": "platform" }],
"metrics": [{ "name": "activeUsers" }]
}
import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
/**
* Google Analytics Data API sample application demonstrating the usage of date ranges in a report.
*
* <p>See
* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport#body.request_body.FIELDS.date_ranges
* for more information.
*
* <p>Before you start the application, please review the comments starting with "TODO(developer)"
* and update the code to use correct values.
*
* <p>To run this sample using Maven:
*
* <pre>{@code
* cd google-analytics-data
* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunReportWithDateRangesSample"
* }</pre>
*/
public class RunReportWithDateRangesSample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.
String propertyId = "YOUR-GA4-PROPERTY-ID";
sampleRunReportWithDateRanges(propertyId);
}
// Runs a report using two date ranges.
static void sampleRunReportWithDateRanges(String propertyId) throws Exception {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests. After completing all of your requests, call
// the "close" method on the client to safely clean up any remaining background resources.
try (BetaAnalyticsDataClient analyticsData = BetaAnalyticsDataClient.create()) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addDateRanges(
DateRange.newBuilder().setStartDate("2019-08-01").setEndDate("2019-08-14"))
.addDateRanges(
DateRange.newBuilder().setStartDate("2020-08-01").setEndDate("2020-08-14"))
.addDimensions(Dimension.newBuilder().setName("platform"))
.addMetrics(Metric.newBuilder().setName("activeUsers"))
.build();
// Make the request.
RunReportResponse response = analyticsData.runReport(request);
// Prints the response using a method in RunReportSample.java
RunReportSample.printRunResponseResponse(response);
}
}
}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\MetricType;
use Google\Analytics\Data\V1beta\RunReportRequest;
use Google\Analytics\Data\V1beta\RunReportResponse;
/**
* @param string $propertyID Your GA-4 Property ID
* Runs a report using two date ranges.
*/
function run_report_with_date_ranges(string $propertyId)
{
// Create an instance of the Google Analytics Data API client library.
$client = new BetaAnalyticsDataClient();
// Make an API call.
$request = (new RunReportRequest())
->setProperty('properties/' . $propertyId)
->setDateRanges([
new DateRange([
'start_date' => '2019-08-01',
'end_date' => '2019-08-14',
]),
new DateRange([
'start_date' => '2020-08-01',
'end_date' => '2020-08-14',
]),
])
->setDimensions([new Dimension(['name' => 'platform'])])
->setMetrics([new Metric(['name' => 'activeUsers'])]);
$response = $client->runReport($request);
printRunReportResponseWithDateRanges($response);
}
/**
* Print results of a runReport call.
* @param RunReportResponse $response
*/
function printRunReportResponseWithDateRanges(RunReportResponse $response)
{
printf('%s rows received%s', $response->getRowCount(), PHP_EOL);
foreach ($response->getDimensionHeaders() as $dimensionHeader) {
printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);
}
foreach ($response->getMetricHeaders() as $metricHeader) {
printf(
'Metric header name: %s (%s)' . PHP_EOL,
$metricHeader->getName(),
MetricType::name($metricHeader->getType())
);
}
print 'Report result: ' . PHP_EOL;
foreach ($response->getRows() as $row) {
printf(
'%s %s' . PHP_EOL,
$row->getDimensionValues()[0]->getValue(),
$row->getMetricValues()[0]->getValue()
);
}
}
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
DateRange,
Dimension,
Metric,
RunReportRequest,
)
from run_report import print_run_report_response
def run_sample():
"""Runs the sample."""
# TODO(developer): Replace this variable with your Google Analytics 4
# property ID before running the sample.
property_id = "YOUR-GA4-PROPERTY-ID"
run_report_with_date_ranges(property_id)
def run_report_with_date_ranges(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a report using two date ranges."""
client = BetaAnalyticsDataClient()
request = RunReportRequest(
property=f"properties/{property_id}",
date_ranges=[
DateRange(start_date="2019-08-01", end_date="2019-08-14"),
DateRange(start_date="2020-08-01", end_date="2020-08-14"),
],
dimensions=[Dimension(name="platform")],
metrics=[Metric(name="activeUsers")],
)
response = client.run_report(request)
print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your
// Google Analytics 4 property ID before running the sample.
// propertyId = 'YOUR-GA4-PROPERTY-ID';
// Imports the Google Analytics Data API client library.
const {BetaAnalyticsDataClient} = require('@google-analytics/data');
// Initialize client that will be used to send requests. This client only
// needs to be created once, and can be reused for multiple requests.
const analyticsDataClient = new BetaAnalyticsDataClient();
// Runs a report using two date ranges.
async function runReportWithDateRanges() {
const [response] = await analyticsDataClient.runReport({
property: `properties/${propertyId}`,
dateRanges: [
{
startDate: '2019-08-01',
endDate: '2019-08-14',
},
{
startDate: '2020-08-01',
endDate: '2020-08-14',
},
],
dimensions: [
{
name: 'platform',
},
],
metrics: [
{
name: 'activeUsers',
},
],
});
printRunReportResponse(response);
}
runReportWithDateRanges();
// Prints results of a runReport call.
function printRunReportResponse(response) {
console.log(`${response.rowCount} rows received`);
response.dimensionHeaders.forEach(dimensionHeader => {
console.log(`Dimension header name: ${dimensionHeader.name}`);
});
response.metricHeaders.forEach(metricHeader => {
console.log(
`Metric header name: ${metricHeader.name} (${metricHeader.type})`
);
});
console.log('Report result:');
response.rows.forEach(row => {
console.log(
`${row.dimensionValues[0].value}, ${row.metricValues[0].value}`
);
});
}
Когда вы включаете в запрос несколько dateRanges
, столбец dateRange
автоматически добавляется в ответ. Если столбец dateRange
имеет date_range_0
, данные этой строки относятся к первому диапазону дат. Если столбец dateRange
имеет date_range_1
, данные этой строки относятся ко второму диапазону дат.
Вот пример ответа для двух диапазонов дат:
{
"dimensionHeaders": [
{
"name": "platform"
},
{
"name": "dateRange"
}
],
"metricHeaders": [
{
"name": "activeUsers",
"type": "TYPE_INTEGER"
}
],
"rows": [
{
"dimensionValues": [
{
"value": "iOS"
},
{
"value": "date_range_0"
}
],
"metricValues": [
{
"value": "774"
}
]
},
{
"dimensionValues": [
{
"value": "Android"
},
{
"value": "date_range_1"
}
],
"metricValues": [
{
"value": "335"
}
]
},
...
],
}
Следующие шаги
Ознакомьтесь с расширенными функциями и отчетами в реальном времени , чтобы получить обзор более расширенных функций отчетов Data API v1.