I'm trying to use a Segment Dimension Filter for a custom Dimension in the Google Analytics Api v4 in Java. As Template I am using the following Sample:
https://developers.google.com/analytics/devguides/reporting/core/v4/samples
This works fine with all Dimensions, but as soon as I try to filter one of our Custom Dimensions the Filter seems to stop working. It doesn't matter if the Dimension fulfills the filter-condition, the response includes all Values.
But the strange part is when I set a Value in the filter-condition that doesn't exists in the custom Dimension, I don't get any response. So in that moment the Filters seems to work.
Thank you all for your help.
// Create the DateRange object.
DateRange dateRange = new DateRange();
dateRange.setStartDate("yesterday");
dateRange.setEndDate("yesterday");
Metric User = new Metric().setExpression("ga:users").setAlias("User");
Dimension prev_page_path = new Dimension().setName("ga:previousPagePath");
Dimension err = new Dimension().setName("ga:dimension14");
Dimension ShopName = new Dimension().setName("ga:dimension1");
// Create the segment dimension.
Dimension segmentDimensions = new Dimension().setName("ga:segment");
// Create Dimension Filter.
SegmentDimensionFilter dimensionFilter = new SegmentDimensionFilter()
.setDimensionName("ga:dimension14")
.setOperator("EXACT")
.setExpressions(Arrays.asList("404"));
// Create Segment Filter Clause.
SegmentFilterClause segmentFilterClause = new SegmentFilterClause()
.setDimensionFilter(dimensionFilter);
// Create the Or Filters for Segment.
OrFiltersForSegment orFiltersForSegment = new OrFiltersForSegment()
.setSegmentFilterClauses(Arrays.asList(segmentFilterClause));
// Create the Simple Segment.
SimpleSegment simpleSegment = new SimpleSegment()
.setOrFiltersForSegment(Arrays.asList(orFiltersForSegment));
// Create the Segment Filters.
SegmentFilter segmentFilter = new SegmentFilter()
.setSimpleSegment(simpleSegment);
// Create the Segment Definition.
SegmentDefinition segmentDefinition = new SegmentDefinition()
.setSegmentFilters(Arrays.asList(segmentFilter));
// Create the Dynamic Segment.
DynamicSegment dynamicSegment = new DynamicSegment()
.setSessionSegment(segmentDefinition)
.setName("404");
// Create the Segments object.
Segment segment = new Segment()
.setDynamicSegment(dynamicSegment);
// Create the ReportRequest object.
ReportRequest request = new ReportRequest()
.setViewId(VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setDimensions(Arrays.asList( prev_page_path, ShopName, err, segmentDimensions))
.setSegments(Arrays.asList(segment))
.setMetrics(Arrays.asList(User));
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest()
.setReportRequests(Arrays.asList(request));
// Call the batchGet method.
GetReportsResponse response = service.reports().batchGet(getReport).execute();
The Anwser would look like:
ga:previousPagePath: #########
ga:dimension1: #########
ga:dimension14: 404
ga:segment: 404
Date Range (0): User: 1
ga:previousPagePath: #########
ga:dimension1: #########
ga:dimension14: productlist
ga:segment: 404
Date Range (0): User: 1
...