Skip to content

Commit

Permalink
Merge pull request apache#1632 from Hailei/fix-subquery-innerquery-de…
Browse files Browse the repository at this point in the history
…mension

Inner Query  should build on sub query
  • Loading branch information
drcrallen committed Aug 27, 2015
2 parents 6e5900e + e9e3aae commit c1388a1
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ private Sequence<Row> mergeGroupByResults(
}

// We need the inner incremental index to have all the columns required by the outer query
final GroupByQuery innerQuery = new GroupByQuery.Builder(query)
final GroupByQuery innerQuery = new GroupByQuery.Builder(subquery)
.setAggregatorSpecs(aggs)
.setInterval(subquery.getIntervals())
.setPostAggregatorSpecs(Lists.<PostAggregator>newArrayList())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
import javax.annotation.Nullable;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
Expand Down Expand Up @@ -319,7 +320,6 @@ public void testGroupByWithRebucketRename()
}



@Test
public void testGroupByWithSimpleRenameRetainMissingNonInjective()
{
Expand Down Expand Up @@ -492,7 +492,10 @@ public void testGroupByWithSimpleRenameAndMissingString()
.setDimensions(
Lists.<DimensionSpec>newArrayList(
new ExtractionDimensionSpec(
"quality", "alias", new LookupExtractionFn(new MapLookupExtractor(map), false, "MISSING", true), null
"quality",
"alias",
new LookupExtractionFn(new MapLookupExtractor(map), false, "MISSING", true),
null
)
)
)
Expand Down Expand Up @@ -2430,6 +2433,60 @@ public void testDifferentGroupingSubquery()
TestHelper.assertExpectedObjects(expectedResults, results, "");
}


@Test
public void testDifferentGroupingSubqueryWithFilter()
{
GroupByQuery subquery = GroupByQuery
.builder()
.setDataSource(QueryRunnerTestHelper.dataSource)
.setQuerySegmentSpec(QueryRunnerTestHelper.firstToThird)
.setDimensions(Lists.<DimensionSpec>newArrayList(new DefaultDimensionSpec("quality", "quality")))
.setAggregatorSpecs(
Arrays.asList(
QueryRunnerTestHelper.rowsCount,
new LongSumAggregatorFactory("idx", "index")
)
)
.setGranularity(QueryRunnerTestHelper.dayGran)
.build();

GroupByQuery query = GroupByQuery
.builder()
.setDataSource(subquery)
.setQuerySegmentSpec(QueryRunnerTestHelper.firstToThird)
.setAggregatorSpecs(
Arrays.<AggregatorFactory>asList(
new DoubleMaxAggregatorFactory("idx", "idx")
)
)
.setDimFilter(
new OrDimFilter(
Lists.<DimFilter>newArrayList(
new SelectorDimFilter("quality", "automotive"),
new SelectorDimFilter("quality", "premium"),
new SelectorDimFilter("quality", "mezzanine"),
new SelectorDimFilter("quality", "business"),
new SelectorDimFilter("quality", "entertainment"),
new SelectorDimFilter("quality", "health"),
new SelectorDimFilter("quality", "news"),
new SelectorDimFilter("quality", "technology"),
new SelectorDimFilter("quality", "travel")
)
)
)
.setGranularity(QueryRunnerTestHelper.dayGran)
.build();

List<Row> expectedResults = Arrays.asList(
GroupByQueryRunnerTestHelper.createExpectedRow("2011-04-01", "idx", 2900.0),
GroupByQueryRunnerTestHelper.createExpectedRow("2011-04-02", "idx", 2505.0)
);

Iterable<Row> results = GroupByQueryRunnerTestHelper.runQuery(factory, runner, query);
TestHelper.assertExpectedObjects(expectedResults, results, "");
}

@Test
public void testDifferentIntervalSubquery()
{
Expand Down

0 comments on commit c1388a1

Please sign in to comment.