GA4 数据 API - 如何设置多个维度和指标

问题描述 投票:0回答:1

我正在尝试使用 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 google-api google-analytics-api google-api-java-client google-analytics-4
1个回答
0
投票

这是我创建的 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"   
            }
          }
        }
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.