Class GroupByRowProcessor
- java.lang.Object
-
- org.apache.druid.query.groupby.epinephelinae.GroupByRowProcessor
-
public class GroupByRowProcessor extends Object
Utility class that knows how to do higher-level groupBys: i.e. group aSequence
ofResultRow
originating from a subquery. It uses a buffer provided by aGroupByQueryResources
. The output rows may not be perfectly grouped and will not have PostAggregators applied, so they should be fed intoGroupingEngine.mergeResults(org.apache.druid.query.QueryRunner<org.apache.druid.query.groupby.ResultRow>, org.apache.druid.query.groupby.GroupByQuery, org.apache.druid.query.context.ResponseContext)
. This class has two primary uses: processing nested groupBys, and processing subtotals. This class has some similarity toGroupByMergingQueryRunnerV2
, but is different enough that it deserved to be its own class. Some common code between the two classes is inRowBasedGrouperHelper
.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
GroupByRowProcessor.ResultSupplier
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static GroupByRowProcessor.ResultSupplier
process(GroupByQuery query, GroupByQuery subquery, Sequence<ResultRow> rows, GroupByQueryConfig config, DruidProcessingConfig processingConfig, GroupByQueryResources resource, com.fasterxml.jackson.databind.ObjectMapper spillMapper, String processingTmpDir, int mergeBufferSize)
Process the input of sequence "rows" (output by "subquery") based on "query" and returns aGroupByRowProcessor.ResultSupplier
.
-
-
-
Method Detail
-
process
public static GroupByRowProcessor.ResultSupplier process(GroupByQuery query, GroupByQuery subquery, Sequence<ResultRow> rows, GroupByQueryConfig config, DruidProcessingConfig processingConfig, GroupByQueryResources resource, com.fasterxml.jackson.databind.ObjectMapper spillMapper, String processingTmpDir, int mergeBufferSize)
Process the input of sequence "rows" (output by "subquery") based on "query" and returns aGroupByRowProcessor.ResultSupplier
. In addition to grouping using dimensions and metrics, it will also apply filters (both DimFilter and interval filters). The input sequence is processed synchronously with the call to this method, and result iteration happens lazy upon calls to theGroupByRowProcessor.ResultSupplier
. Make sure to close it when you're done.
-
-