Another (hopefully newbie) question. Trying to use LEAD/LAG over window functions. I get the following error. The exact same query works properly using FIRST_VALUE instead of LEAD.
Thanks in advance... - Patrick Flink SQL> describe l1_min ; +-----------+------------------------+------+-----+--------+-----------+ | name | type | null | key | extras | watermark | +-----------+------------------------+------+-----+--------+-----------+ | symbol | STRING | true | | | | | t_start | TIMESTAMP(3) *ROWTIME* | true | | | | | ask_price | DOUBLE | true | | | | | bid_price | DOUBLE | true | | | | | mid_price | DOUBLE | true | | | | +-----------+------------------------+------+-----+--------+-----------+ 5 rows in set Flink SQL> SELECT > symbol, > t_start, > ask_price, > bid_price, > mid_price, > LEAD (mid_price) OVER x AS prev_price > FROM l1_min > WINDOW x AS ( > PARTITION BY symbol > ORDER BY t_start > ROWS BETWEEN 1 PRECEDING AND CURRENT ROW > ) > ; [ERROR] Could not execute SQL statement. Reason: org.apache.calcite.sql.validate.SqlValidatorException: ROW/RANGE not allowed with RANK, DENSE_RANK or ROW_NUMBER functions |
Hi Patrick,
I could imagine that LEAD/LAG are translated into RANK/ROW_NUMBER operations that are not supported in this context. But I will loop in @Jark who might know more about the limitaitons here. Regards, Timo On 29.01.21 17:37, Patrick Angeles wrote: > Another (hopefully newbie) question. Trying to use LEAD/LAG over window > functions. I get the following error. The exact same query works > properly using FIRST_VALUE instead of LEAD. > > Thanks in advance... > > - Patrick > > Flink SQL> describe l1_min ; > > +-----------+------------------------+------+-----+--------+-----------+ > > |name | type | null | key | extras | watermark | > > +-----------+------------------------+------+-----+--------+-----------+ > > |symbol | STRING | true | || | > > | t_start | TIMESTAMP(3) *ROWTIME* | true | || | > > | ask_price | DOUBLE | true | || | > > | bid_price | DOUBLE | true | || | > > | mid_price | DOUBLE | true | || | > > +-----------+------------------------+------+-----+--------+-----------+ > > 5 rows in set > > > Flink SQL> SELECT > >> symbol, > >> t_start, > >> ask_price, > >> bid_price, > >> mid_price, > >> LEAD (mid_price) OVER x AS prev_price > >> FROM l1_min > >> WINDOW x AS ( > >> PARTITION BY symbol > >> ORDER BY t_start > >> ROWS BETWEEN 1 PRECEDING AND CURRENT ROW > >> ) > >> ; > > *[ERROR] Could not execute SQL statement. Reason:* > > *org.apache.calcite.sql.validate.SqlValidatorException: ROW/RANGE not > allowed with RANK, DENSE_RANK or ROW_NUMBER functions* > |
Yes. RANK/ROW_NUMBER is not allowed with ROW/RANGE over window, i.e. the "ROWS BETWEEN 1 PRECEDING AND CURRENT ROW" clause. Best, Jark On Mon, 1 Feb 2021 at 22:06, Timo Walther <[hidden email]> wrote: Hi Patrick, |
Thanks, Jark. On Mon, Feb 1, 2021 at 11:50 PM Jark Wu <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |