我正在尝试使用 GA4 的数据 API 生成报告。但是,我无法向我的报告生成器添加多个指标或维度。
这就是我尝试实现此功能的方式:
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + propertyId)
.addAllDimensions(new ArrayList<Dimension>(Arrays.asList(Dimension.newBuilder().setName("date").build(), Dimension.newBuilder().setName("day").build())))
// .addDimensions(Dimension.newBuilder().setName("date"))
// .addMetrics(Metric.newBuilder().setName("totalUsers").setName("screenPageViews"))
.addAllMetrics(new ArrayList<Metric>(Arrays.asList(Metric.newBuilder().setName("totalUsers").build(), Metric.newBuilder().setName("screenPageViews").build())))
.addDateRanges(DateRange.newBuilder().setStartDate("yesterday").setEndDate("today"))
.build();
如有任何帮助,我们将不胜感激。
我尝试获取具有 2 个维度和 2 个指标的报告,但得到的却是 1 个维度和 1 个指标,这在两种情况下都是第一个。
这是我创建的 java 和/或过滤器,请记住事件和维度的过滤应该以兼容的方式进行。登录此处并使用您的事件、维度和指标来找出答案。
当然,您也可以更改日期范围。
`GoogleCredentials credentials =
GoogleCredentials.fromStream(new FileInputStream(credentialsJsonPath));
BetaAnalyticsDataSettings betaAnalyticsDataSettings =
BetaAnalyticsDataSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.build();
try (BetaAnalyticsDataClient analyticsData =
BetaAnalyticsDataClient.create(betaAnalyticsDataSettings)) {
RunReportRequest request =
RunReportRequest.newBuilder()
.setProperty("properties/" + your propertyId)
.addDateRanges(DateRange.newBuilder().setStartDate("365daysAgo").setEndDate("yesterday"))
.addDimensions(Dimension.newBuilder().setName("date"))
.addDimensions(Dimension.newBuilder().setName("eventName"))
.addDimensions(Dimension.newBuilder().setName("customEvent:XXXXX")) // instead of XXXXX write your custom dimension
.addDimensions(Dimension.newBuilder().setName("fullPageUrl")) // this is not a customised dimension
.addMetrics(Metric.newBuilder().setName("eventCount"))
.addMetrics(Metric.newBuilder().setName("eventsPerSession"))
.addMetrics(Metric.newBuilder().setName("eventValue"))
.setDimensionFilter(FilterExpression.newBuilder()
.setOrGroup(FilterExpressionList.newBuilder()
.addExpressions(FilterExpression.newBuilder()
.setFilter(Filter.newBuilder()
.setFieldName("eventName")
.setStringFilter(Filter.StringFilter.newBuilder()
.setMatchType(Filter.StringFilter.MatchType.EXACT)
.setValue("your 1st event to filter")))) // for example page_view
.addExpressions(FilterExpression.newBuilder()
.setFilter(Filter.newBuilder()
.setFieldName("eventName")
.setStringFilter(Filter.StringFilter.newBuilder()
.setMatchType(Filter.StringFilter.MatchType.EXACT)
.setValue("your 2nd event")))))
.setAndGroup(FilterExpressionList.newBuilder().addExpressions(FilterExpression.newBuilder()
.setFilter(Filter.newBuilder()
.setFieldName("eventName")
.setStringFilter(Filter.StringFilter.newBuilder()
.setMatchType(Filter.StringFilter.MatchType.EXACT)
.setValue("your 3rd event"))))))
.setLimit(100000)
.build();
RunReportResponse response = analyticsData.runReport(request);`
请求正文作为示例可能是这样的:
property: "properties/write your propertId"
dimensions {
name: "date"
}
dimensions {
name: "eventName"
}
dimensions {
name: "customEvent:category" // my custom dimensions is category that should be written after "customEvent:"
}
dimensions {
name: "customEvent:action" // my custom dimensions is action that should be written after "customEvent:"
}
dimensions {
name: "customEvent:label" // my custom dimensions is label that should be written after "customEvent:"
}
metrics {
name: "eventCount"
}
metrics {
name: "eventsPerSession"
}
metrics {
name: "eventValue"
}
date_ranges {
start_date: "2023-05-22"
end_date: "2023-05-23"
}
dimension_filter {
or_group {
expressions {
filter {
field_name: "eventName"
string_filter {
match_type: EXACT
value: "Something"
}
}
}
expressions {
filter {
field_name: "eventName"
string_filter {
match_type: EXACT
value: "myCustomEventName " // as an example I wrote my customised event name
}
}
}
expressions {
and_group {
expressions {
filter {
field_name: "eventName"
string_filter {
match_type: EXACT
value: "SOMETHING"
}
}
}
}
}
}
}