javagoogle-analytics

google analytics-api, java, how to declare OrderBys call RunReportRequest


String VIEW_ID = "0000000000";
String[] GA_METRICS = {"newUsers","activeUsers","totalUsers","addToCarts","cartToViewRate","checkouts","screenPageViews","totalPurchasers"};
List<Metric> metrics = new ArrayList<Metric>() {{
    for(String metricName : GA_METRICS) {
        add(Metric.newBuilder().setName(metricName).build());
    }               
}};
                        
List<OrderBy> orderBys = new ArrayList<OrderBy>() {{
    //how to declare Orderby...
    //i want to order by date asc
    add(OrderBy.newBuilder());
}};

RunReportRequest request = RunReportRequest.newBuilder().setProperty("properties/" + VIEW_ID)
        .addDimensions(Dimension.newBuilder().setName("date"))
        .addAllMetrics(metrics)
        .addAllOrderBys(orderBys)
        .addDateRanges(DateRange.newBuilder().setStartDate(dateRanges.get("startDate")).setEndDate(dateRanges.get("endDate"))).build();

I'd like to add an alignment in google-analytics api However, we are unable to proceed because the released sample does not contain any details.

I searched the sample for ga4 and then checked it, but it was not applied to v1beta.

i can`t find any samples...about it plz some help to me


Solution

  • I found this example of orderBys:

    https://github.com/googleanalytics/java-docs-samples/blob/main/google-analytics-data/src/main/java/com/google/analytics/data/samples/RunReportWithOrderingSample.java

    static void sampleRunReportWithOrdering(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"))
                  .addOrderBys(
                      OrderBy.newBuilder()
                          .setMetric(OrderBy.MetricOrderBy.newBuilder().setMetricName("totalRevenue"))
                          .setDesc(true))
                  .build();
    
          // Make the request.
          RunReportResponse response = analyticsData.runReport(request);
          // Prints the response using a method in RunReportSample.java
          RunReportSample.printRunResponseResponse(response);
        }
      }
    }