You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2018/11/04 04:05:00 UTC

[jira] [Created] (CALCITE-2654) In RelBuilder, add a fluent API for building complex aggregate calls

Julian Hyde created CALCITE-2654:
------------------------------------

             Summary: In RelBuilder, add a fluent API for building complex aggregate calls
                 Key: CALCITE-2654
                 URL: https://issues.apache.org/jira/browse/CALCITE-2654
             Project: Calcite
          Issue Type: Bug
            Reporter: Julian Hyde
            Assignee: Julian Hyde


In RelBuilder, add a fluent API for building complex aggregate calls. Currently, the RelBuilder.aggregateCall has arguments aggFunction, distinct, approximate, filter, orderKeys,
alias and operands, and in CALCITE-2224 we're adding orderKeys. You have to specify all of them, whether or not your function is DISTINCT or has a FILTER(WHERE) clause.

The new API would be simple:
 * {{RelBuilder.aggregateCall(op, operands)}}
 * {{RelBuilder.sum(operand)}}
 * {{RelBuilder.count(operands)}}
 * {{RelBuilder.min(operands)}}

and so forth. Each of these returns an AggCall, and we propose to add fluent methods to that:
* {{AggCall.distinct(boolean)}}
* {{AggCall.approximate(boolean)}}
* {{AggCall.alias(String)}}
* {{AggCall.filter(RexNode)}}
* {{AggCall.sort(RexNode...)}} (for CALCITE-2224)

Thus you can write {{builder.sum(builder.field("SAL)).distinct(true).alias("SUM_SAL")}}.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)