Java APIv4直方图-can';t排序
我正试图通过APIv4从google analytics获取5天直方图,其中每个桶为1天 这就是我试图实现的查询,当通过查询生成器运行时,它运行良好Java APIv4直方图-can';t排序,java,google-analytics,google-api,google-analytics-api,google-api-java-client,Java,Google Analytics,Google Api,Google Analytics Api,Google Api Java Client,我正试图通过APIv4从google analytics获取5天直方图,其中每个桶为1天 这就是我试图实现的查询,当通过查询生成器运行时,它运行良好 { "reportRequests": [ { "viewId": "810020000", "filtersExpression": "ga:pagePath=@mypage", "dateRanges": [ { "startDate": "5daysAgo",
{
"reportRequests": [
{
"viewId": "810020000",
"filtersExpression": "ga:pagePath=@mypage",
"dateRanges": [
{
"startDate": "5daysAgo",
"endDate": "today"
}
],
"metrics": [
{
"expression": "ga:entranceRate"
}
],
"dimensions": [
{
"name": "ga:nthDay",
"histogramBuckets": [
"0",
"1",
"2",
"3",
"4"
]
}
],
"orderBys": [
{
"fieldName": "ga:nthDay",
"orderType": "HISTOGRAM_BUCKET",
"sortOrder": "ASCENDING"
}
]
}
]
}
然而当我尝试通过JAVA(APIv4)运行相同的查询时,我只得到一个结果(如果我没有添加sortBy)
如果我添加排序,下面会出现一个错误
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Sort key ga:nthDay is not a dimension or metric in this query.",
"reason" : "badRequest"
} ],
"message" : "Sort key ga:nthDay is not a dimension or metric in this query.",
"status" : "INVALID_ARGUMENT"
}
这是java代码
Integer uniquePageviews = analyticsApi.getUniquePageViewsHistogramDaily("5daysAgo", "today", "ga:uniquePageviews");
public Integer getUniquePageViewsHistogramDaily(String startDayPhrase, String endDayPhrase, String gaMetricsPhrase) throws IOException {
DateRange dateRange = new DateRange();
dateRange.setStartDate(startDayPhrase);
dateRange.setEndDate(endDayPhrase);
List<DateRange> dateRanges = new ArrayList<>();
dateRanges.add(dateRange);
Metric metric = new Metric();
metric.setExpression(gaMetricsPhrase);
List<Metric> metrics = new ArrayList<>();
metrics.add(metric);
//TODO caclulate dynamically
List<Long> histogramBuckets = new ArrayList<>();
histogramBuckets.add(0L);
histogramBuckets.add(1L);
histogramBuckets.add(2L);
histogramBuckets.add(3L);
histogramBuckets.add(4L);
List<Dimension> dimensions = new ArrayList<>();
Dimension histogram = new Dimension();
histogram.setName("ga:nthDay");
histogram.setHistogramBuckets(histogramBuckets);
List<OrderBy> orderBys = new ArrayList<>();
OrderBy orderByDay = new OrderBy();
orderByDay.setFieldName("ga:nthDay");
orderByDay.setOrderType("HISTOGRAM_BUCKET");
orderByDay.setSortOrder("ASCENDING");
orderBys.add(orderByDay);
return getUniquePageViewsHistogramDaily(dateRanges, metrics, dimensions, "ga:pagePath=@myaccount",orderBys);
}
private Integer getUniquePageViewsHistogramDaily(List<DateRange> dateRangeList,
List<Metric> metrics,
List<Dimension> dimensions,
String filterExpression,
List<OrderBy> orderBys) throws IOException {
ReportRequest request = new ReportRequest()
.setViewId(getViewId())
.setDateRanges(dateRangeList)
.setDimensions(dimensions)
.setMetrics(metrics)
.setFiltersExpression(filterExpression)
.setOrderBys(orderBys);
ArrayList<ReportRequest> requests = new ArrayList<>();
requests.add(request);
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
// Call the batchGet method.
GetReportsResponse response = analyticsBuilder.reports().batchGet(getReport).execute();
return Integer.valueOf(response.getReports().get(0).getData().getTotals().get(0).getValues().get(0));
}
Integer uniquePageviews=analyticsApi.getUniquePageViewsHistogramDaily(“5daysAgo”、“today”、“ga:uniquePageviews”);
公共整数getUniquePageViewsHistogramDaily(字符串StartDayPhase、字符串EndDayPhase、字符串GametricSprase)引发IOException{
DateRange DateRange=新的日期范围();
dateRange.setStartDate(StartDayPhase);
dateRange.setEndDate(endDayPhase);
List dateRanges=new ArrayList();
添加(dateRange);
公制=新公制();
metric.setExpression(配子孢子酶);
列表度量=新的ArrayList();
度量。添加(度量);
//TODO caclulate动态
List histogramBuckets=new ArrayList();
添加组织块(0升);
添加(1L)组分;
添加(2L);
添加组织块(3L);
添加组织块(4L);
列表维度=新的ArrayList();
维度直方图=新维度();
直方图.setName(“ga:nthDay”);
直方图.setHistogramBuckets(histogramBuckets);
List orderBys=new ArrayList();
OrderBy orderByDay=新OrderBy();
setFieldName(“ga:nthDay”);
setOrderType(“直方图_桶”);
orderByDay.setSortOrder(“升序”);
orderBys.add(orderByDay);
返回getUniquePageViewsHistogramDaily(日期范围、度量、维度,“ga:pagePath=@myaccount”,orderBys);
}
私有整数getUniquePageViewsHistogramDaily(列表日期范围列表,
列出衡量标准,
列出维度,
字符串筛选器表达式,
列表orderBys)引发IOException{
ReportRequest=newreportrequest()
.setViewId(getViewId())
.setDateRanges(日期范围列表)
.设置尺寸(尺寸)
.setMetrics(度量)
.SetFilterExpression(filterExpression)
.setOrderBys(orderBys);
ArrayList请求=新建ArrayList();
请求。添加(请求);
//创建GetReportsRequest对象。
GetReportsRequest getReport=新建GetReportsRequest().setReportRequests(请求);
//调用batchGet方法。
GetReportsResponse response=analyticsBuilder.reports().batchGet(getReport.execute();
返回Integer.valueOf(response.getReports().get(0).getData().getTotals().get(0).getValues().get(0));
}
如何通过Java获取正常的5天直方图?好的
多亏了Intellij,我发现了这个问题
似乎我忘了将直方图维度添加到维度列表中
dimensions.add(histogram);
现在一切都如期进行
谢谢大家! 我觉得这听起来很奇怪,因为它在页面底部声明了以下内容:请求编写器使用嵌入API的ViewSelector来选择用户的视图。它还使用元数据API填充维度和度量下拉列表中的项。最后,它使用Analytics Reporting API v4来发出请求。你是什么意思?下一次不需要先尝试HTTP代理来查看“行”上的内容。可以。非常感谢。