[ 
https://issues.apache.org/jira/browse/CALCITE-3272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166702#comment-17166702
 ] 

Julian Hyde commented on CALCITE-3272:
--------------------------------------

bq. [The expression] is something applied on arrived data.

Yes, kind of. But if we emit every time we have another 100 rows, and we've 
previously emitted the first hundred, the condition we need is for there to be 
another 100 rows since we last emitted. So the "expression" is on "rows not yet 
emitted". Evaluating such an expression requires use to add a lot of special 
"evaluation context".

I think it's simpler to not think of the condition as an expression at all, and 
get a few hard-coded types of emit conditions working first. We can introduce 
expressions later, if the generalization seems natural.

> TUMBLE Table-valued Function
> ----------------------------
>
>                 Key: CALCITE-3272
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3272
>             Project: Calcite
>          Issue Type: Sub-task
>            Reporter: Rui Wang
>            Assignee: Rui Wang
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.22.0
>
>          Time Spent: 19h 20m
>  Remaining Estimate: 0h
>
> Define a builtin TVF: Tumble (data , timecol , dur, [ offset ])
> The return value of Tumble is a relation that includes all columns of data as 
> well as additional event time columns window_start and window_end.
> Examples of TUMBLE TVF are (from https://s.apache.org/streaming-beam-sql ):
> 8:21> SELECT * FROM Bid;
> --------------------------
> | bidtime | price | item |
> --------------------------
> | 8:07    | $2    | A    |
> | 8:11    | $3    | B    |
> | 8:05    | $4    | C    |
> | 8:09    | $5    | D    |
> | 8:13    | $1    | E    |
> | 8:17    | $6    | F    |
> --------------------------
> 8:21> SELECT *
>       FROM TABLE Tumble (
>         data    => TABLE Bid ,
>         timecol => DESCRIPTOR ( bidtime ) ,
>         dur     => INTERVAL '10' MINUTES ,
>         offset  => INTERVAL '0' MINUTES );
> ------------------------------------------
> | window_start | window_end | bidtime | price | item |
> ------------------------------------------
> | 8:00   | 8:10 | 8:07    | $2    | A    |
> | 8:10   | 8:20 | 8:11    | $3    | B    |
> | 8:00   | 8:10 | 8:05    | $4    | C    |
> | 8:00   | 8:10 | 8:09    | $5    | D    |
> | 8:10   | 8:20 | 8:13    | $1    | E    |
> | 8:10   | 8:20 | 8:17    | $6    | F    |
> ------------------------------------------
> 8:21> SELECT MAX ( window_start ) , window_end , SUM ( price )
>       FROM TABLE Tumble (
>         data    => TABLE ( Bid ) ,
>         timecol => DESCRIPTOR ( bidtime ) ,
>         dur     => INTERVAL '10 ' MINUTES )
>       GROUP BY wend;
> -------------------------
> | window_start | window_end | price |
> -------------------------
> | 8:00   | 8:10 | $11   |
> | 8:10   | 8:20 | $10   |
> -------------------------



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to