You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kylin.apache.org by sdangi <sd...@datalenz.com> on 2016/04/06 18:51:23 UTC

RANK/DENSE_RANK on KYLIN

Does Kylin support these analytic functions?

I'm hitting into an issue while running this.  Works ok on hive.

SELECT CST_KEY, AMT,
RANK() OVER( ORDER BY AMT DESC)
FROM FCT

Message: Error while executing SQL "SELECT CST_KEY, AMT, RANK() OVER( ORDER
BY AMT DESC) FROM TXN_FCT_ORC LIMIT 50000": cannot translate call RANK()
OVER (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

*EXECUTION PLAN AFTER REWRITE*
OLAPToEnumerableConverter
  EnumerableLimit(fetch=[50000])
    EnumerableCalc(expr#0..3=[{inputs}], expr#4=[DENSE_RANK() OVER (ORDER BY
$t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)], CST_KEY=[$t1],
AMT=[$t2], EXPR$2=[$t4])
      OLAPTableScan(table=[[SCHEMA, FCT]], fields=[[0, 1, 2, 3]])

Caused by: java.lang.RuntimeException: cannot translate call RANK() OVER
(ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCall(RexToLixTranslator.java:533)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:507)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:472)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:214)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:700)
        at
org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:189)
        at
org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:188)
        at
org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
        at
org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
        at
org.apache.calcite.adapter.enumerable.EnumerableLimit.implement(EnumerableLimit.java:106)
        at
org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
        at
org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
        at
org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:108)
        at
org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
        at
org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
        at
org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
        at
org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
        at
org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
        at
org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
        at
org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
        at
org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
        at
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
        at
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)


--
View this message in context: http://apache-kylin.74782.x6.nabble.com/RANK-DENSE-RANK-on-KYLIN-tp4066.html
Sent from the Apache Kylin mailing list archive at Nabble.com.

Re: RANK/DENSE_RANK on KYLIN

Posted by Luke Han <lu...@gmail.com>.
Rank over is OLAP function which we do not support yet.

But you could try sub query like this:

SELECT CST_KEY, AMT, RANK() OVER( ORDER
BY AMT DESC) FROM
(select CST_KEY, AMT from TXN_FCT_ORC ) A

And since it's a detail query (without group by), it maybe not perform
what exactly you want (please aware there's one feature to support query on
detail), and please carefully for the data size since this "Rank" will
perform in memory by Calcite.

Please share any issue here for further discussion.
And please open JIRA , we will look into it later.


Thanks.
Luke







Best Regards!
---------------------

Luke Han

On Sat, Apr 9, 2016 at 2:16 PM, Li Yang <li...@apache.org> wrote:

> Sorry forget the group by and sum()..
>
> SELECT CST_KEY, sum(AMT)
> FROM FCT
> group by CST_KEY
> ORDER BY 2 DESC
>
> On Sat, Apr 9, 2016 at 2:16 PM, Li Yang <li...@apache.org> wrote:
>
> > Isn't it the same as below?
> >
> > SELECT CST_KEY, AMT
> > FROM FCT
> > ORDER BY AMT DESC
> >
> > On Fri, Apr 8, 2016 at 11:29 AM, hongbin ma <ma...@apache.org>
> wrote:
> >
> >> it's not working for kylin
> >>
> >> On Thu, Apr 7, 2016 at 12:51 AM, sdangi <sd...@datalenz.com> wrote:
> >>
> >> > Does Kylin support these analytic functions?
> >> >
> >> > I'm hitting into an issue while running this.  Works ok on hive.
> >> >
> >> > SELECT CST_KEY, AMT,
> >> > RANK() OVER( ORDER BY AMT DESC)
> >> > FROM FCT
> >> >
> >> > Message: Error while executing SQL "SELECT CST_KEY, AMT, RANK() OVER(
> >> ORDER
> >> > BY AMT DESC) FROM TXN_FCT_ORC LIMIT 50000": cannot translate call
> RANK()
> >> > OVER (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT
> >> ROW)
> >> >
> >> > *EXECUTION PLAN AFTER REWRITE*
> >> > OLAPToEnumerableConverter
> >> >   EnumerableLimit(fetch=[50000])
> >> >     EnumerableCalc(expr#0..3=[{inputs}], expr#4=[DENSE_RANK() OVER
> >> (ORDER
> >> > BY
> >> > $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)],
> >> > CST_KEY=[$t1],
> >> > AMT=[$t2], EXPR$2=[$t4])
> >> >       OLAPTableScan(table=[[SCHEMA, FCT]], fields=[[0, 1, 2, 3]])
> >> >
> >> > Caused by: java.lang.RuntimeException: cannot translate call RANK()
> OVER
> >> > (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCall(RexToLixTranslator.java:533)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:507)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:472)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:214)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:700)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:189)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:188)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
> >> >         at
> >> >
> >> >
> >>
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableLimit.implement(EnumerableLimit.java:106)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
> >> >         at
> >> >
> >> >
> >>
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
> >> >         at
> >> >
> >> >
> >>
> org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:108)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
> >> >         at
> >> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
> >> >         at
> >> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
> >> >         at
> >> >
> >> >
> >>
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
> >> >
> >> >
> >> > --
> >> > View this message in context:
> >> >
> >>
> http://apache-kylin.74782.x6.nabble.com/RANK-DENSE-RANK-on-KYLIN-tp4066.html
> >> > Sent from the Apache Kylin mailing list archive at Nabble.com.
> >> >
> >>
> >>
> >>
> >> --
> >> Regards,
> >>
> >> *Bin Mahone | 马洪宾*
> >> Apache Kylin: http://kylin.io
> >> Github: https://github.com/binmahone
> >>
> >
> >
>

Re: RANK/DENSE_RANK on KYLIN

Posted by Li Yang <li...@apache.org>.
Sorry forget the group by and sum()..

SELECT CST_KEY, sum(AMT)
FROM FCT
group by CST_KEY
ORDER BY 2 DESC

On Sat, Apr 9, 2016 at 2:16 PM, Li Yang <li...@apache.org> wrote:

> Isn't it the same as below?
>
> SELECT CST_KEY, AMT
> FROM FCT
> ORDER BY AMT DESC
>
> On Fri, Apr 8, 2016 at 11:29 AM, hongbin ma <ma...@apache.org> wrote:
>
>> it's not working for kylin
>>
>> On Thu, Apr 7, 2016 at 12:51 AM, sdangi <sd...@datalenz.com> wrote:
>>
>> > Does Kylin support these analytic functions?
>> >
>> > I'm hitting into an issue while running this.  Works ok on hive.
>> >
>> > SELECT CST_KEY, AMT,
>> > RANK() OVER( ORDER BY AMT DESC)
>> > FROM FCT
>> >
>> > Message: Error while executing SQL "SELECT CST_KEY, AMT, RANK() OVER(
>> ORDER
>> > BY AMT DESC) FROM TXN_FCT_ORC LIMIT 50000": cannot translate call RANK()
>> > OVER (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT
>> ROW)
>> >
>> > *EXECUTION PLAN AFTER REWRITE*
>> > OLAPToEnumerableConverter
>> >   EnumerableLimit(fetch=[50000])
>> >     EnumerableCalc(expr#0..3=[{inputs}], expr#4=[DENSE_RANK() OVER
>> (ORDER
>> > BY
>> > $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)],
>> > CST_KEY=[$t1],
>> > AMT=[$t2], EXPR$2=[$t4])
>> >       OLAPTableScan(table=[[SCHEMA, FCT]], fields=[[0, 1, 2, 3]])
>> >
>> > Caused by: java.lang.RuntimeException: cannot translate call RANK() OVER
>> > (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCall(RexToLixTranslator.java:533)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:507)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:472)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:214)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:700)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:189)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:188)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
>> >         at
>> >
>> >
>> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableLimit.implement(EnumerableLimit.java:106)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
>> >         at
>> >
>> >
>> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
>> >         at
>> >
>> >
>> org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:108)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
>> >         at
>> >
>> >
>> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
>> >         at
>> >
>> >
>> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
>> >         at
>> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
>> >         at
>> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
>> >         at
>> >
>> >
>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
>> >         at
>> >
>> >
>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
>> >         at
>> >
>> >
>> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
>> >         at
>> >
>> >
>> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
>> >         at
>> >
>> >
>> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
>> >         at
>> >
>> >
>> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
>> >         at
>> >
>> >
>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
>> >
>> >
>> > --
>> > View this message in context:
>> >
>> http://apache-kylin.74782.x6.nabble.com/RANK-DENSE-RANK-on-KYLIN-tp4066.html
>> > Sent from the Apache Kylin mailing list archive at Nabble.com.
>> >
>>
>>
>>
>> --
>> Regards,
>>
>> *Bin Mahone | 马洪宾*
>> Apache Kylin: http://kylin.io
>> Github: https://github.com/binmahone
>>
>
>

Re: RANK/DENSE_RANK on KYLIN

Posted by Li Yang <li...@apache.org>.
Isn't it the same as below?

SELECT CST_KEY, AMT
FROM FCT
ORDER BY AMT DESC

On Fri, Apr 8, 2016 at 11:29 AM, hongbin ma <ma...@apache.org> wrote:

> it's not working for kylin
>
> On Thu, Apr 7, 2016 at 12:51 AM, sdangi <sd...@datalenz.com> wrote:
>
> > Does Kylin support these analytic functions?
> >
> > I'm hitting into an issue while running this.  Works ok on hive.
> >
> > SELECT CST_KEY, AMT,
> > RANK() OVER( ORDER BY AMT DESC)
> > FROM FCT
> >
> > Message: Error while executing SQL "SELECT CST_KEY, AMT, RANK() OVER(
> ORDER
> > BY AMT DESC) FROM TXN_FCT_ORC LIMIT 50000": cannot translate call RANK()
> > OVER (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT
> ROW)
> >
> > *EXECUTION PLAN AFTER REWRITE*
> > OLAPToEnumerableConverter
> >   EnumerableLimit(fetch=[50000])
> >     EnumerableCalc(expr#0..3=[{inputs}], expr#4=[DENSE_RANK() OVER (ORDER
> > BY
> > $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)],
> > CST_KEY=[$t1],
> > AMT=[$t2], EXPR$2=[$t4])
> >       OLAPTableScan(table=[[SCHEMA, FCT]], fields=[[0, 1, 2, 3]])
> >
> > Caused by: java.lang.RuntimeException: cannot translate call RANK() OVER
> > (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCall(RexToLixTranslator.java:533)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:507)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:472)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:214)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:700)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:189)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:188)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
> >         at
> >
> >
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableLimit.implement(EnumerableLimit.java:106)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
> >         at
> >
> >
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
> >         at
> >
> >
> org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:108)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
> >         at
> >
> >
> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
> >         at
> >
> >
> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
> >         at
> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
> >         at
> org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
> >         at
> >
> >
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
> >         at
> >
> >
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
> >         at
> >
> >
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
> >         at
> >
> >
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
> >         at
> >
> >
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
> >         at
> >
> >
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
> >         at
> >
> >
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
> >
> >
> > --
> > View this message in context:
> >
> http://apache-kylin.74782.x6.nabble.com/RANK-DENSE-RANK-on-KYLIN-tp4066.html
> > Sent from the Apache Kylin mailing list archive at Nabble.com.
> >
>
>
>
> --
> Regards,
>
> *Bin Mahone | 马洪宾*
> Apache Kylin: http://kylin.io
> Github: https://github.com/binmahone
>

Re: RANK/DENSE_RANK on KYLIN

Posted by hongbin ma <ma...@apache.org>.
it's not working for kylin

On Thu, Apr 7, 2016 at 12:51 AM, sdangi <sd...@datalenz.com> wrote:

> Does Kylin support these analytic functions?
>
> I'm hitting into an issue while running this.  Works ok on hive.
>
> SELECT CST_KEY, AMT,
> RANK() OVER( ORDER BY AMT DESC)
> FROM FCT
>
> Message: Error while executing SQL "SELECT CST_KEY, AMT, RANK() OVER( ORDER
> BY AMT DESC) FROM TXN_FCT_ORC LIMIT 50000": cannot translate call RANK()
> OVER (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
>
> *EXECUTION PLAN AFTER REWRITE*
> OLAPToEnumerableConverter
>   EnumerableLimit(fetch=[50000])
>     EnumerableCalc(expr#0..3=[{inputs}], expr#4=[DENSE_RANK() OVER (ORDER
> BY
> $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)],
> CST_KEY=[$t1],
> AMT=[$t2], EXPR$2=[$t4])
>       OLAPTableScan(table=[[SCHEMA, FCT]], fields=[[0, 1, 2, 3]])
>
> Caused by: java.lang.RuntimeException: cannot translate call RANK() OVER
> (ORDER BY $t2 DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCall(RexToLixTranslator.java:533)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:507)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate0(RexToLixTranslator.java:472)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:219)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:214)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:700)
>         at
>
> org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:189)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:188)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
>         at
>
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableLimit.implement(EnumerableLimit.java:106)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.visitChild(EnumerableRelImplementor.java:97)
>         at
>
> org.apache.kylin.query.relnode.OLAPRel$JavaImplementor.visitChild(OLAPRel.java:184)
>         at
>
> org.apache.kylin.query.relnode.OLAPToEnumerableConverter.implement(OLAPToEnumerableConverter.java:108)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:102)
>         at
>
> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:92)
>         at
>
> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1171)
>         at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:297)
>         at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:196)
>         at
>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:721)
>         at
>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:588)
>         at
>
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:558)
>         at
>
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:214)
>         at
>
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:573)
>         at
>
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:571)
>         at
>
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:135)
>
>
> --
> View this message in context:
> http://apache-kylin.74782.x6.nabble.com/RANK-DENSE-RANK-on-KYLIN-tp4066.html
> Sent from the Apache Kylin mailing list archive at Nabble.com.
>



-- 
Regards,

*Bin Mahone | 马洪宾*
Apache Kylin: http://kylin.io
Github: https://github.com/binmahone