Skip to content

Commit

Permalink
[ML] [Data Frame] nesting group_by fields like other aggs (elastic#42718
Browse files Browse the repository at this point in the history
)
  • Loading branch information
benwtrent committed May 31, 2019
1 parent 6bd4e8c commit 79ed06f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -251,10 +251,10 @@ public void testPreviewTransform() throws Exception {

config += " \"pivot\": {"
+ " \"group_by\": {"
+ " \"reviewer\": {\"terms\": { \"field\": \"user_id\" }},"
+ " \"user.id\": {\"terms\": { \"field\": \"user_id\" }},"
+ " \"by_day\": {\"date_histogram\": {\"fixed_interval\": \"1d\",\"field\":\"timestamp\",\"format\":\"yyyy-MM-dd\"}}},"
+ " \"aggregations\": {"
+ " \"avg_rating\": {"
+ " \"user.avg_rating\": {"
+ " \"avg\": {"
+ " \"field\": \"stars\""
+ " } } } }"
Expand All @@ -265,10 +265,14 @@ public void testPreviewTransform() throws Exception {
List<Map<String, Object>> preview = (List<Map<String, Object>>)previewDataframeResponse.get("preview");
// preview is limited to 100
assertThat(preview.size(), equalTo(100));
Set<String> expectedFields = new HashSet<>(Arrays.asList("reviewer", "by_day", "avg_rating"));
Set<String> expectedTopLevelFields = new HashSet<>(Arrays.asList("user", "by_day"));
Set<String> expectedNestedFields = new HashSet<>(Arrays.asList("id", "avg_rating"));
preview.forEach(p -> {
Set<String> keys = p.keySet();
assertThat(keys, equalTo(expectedFields));
assertThat(keys, equalTo(expectedTopLevelFields));
Map<String, Object> nestedObj = (Map<String, Object>)p.get("user");
keys = nestedObj.keySet();
assertThat(keys, equalTo(expectedNestedFields));
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public static Stream<Map<String, Object>> extractCompositeAggregationResults(Com
groups.getGroups().keySet().forEach(destinationFieldName -> {
Object value = bucket.getKey().get(destinationFieldName);
idGen.add(destinationFieldName, value);
document.put(destinationFieldName, value);
updateDocument(document, destinationFieldName, value);
});

List<String> aggNames = aggregationBuilders.stream().map(AggregationBuilder::getName).collect(Collectors.toList());
Expand Down

0 comments on commit 79ed06f

Please sign in to comment.