calcite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Julian Hyde <jh...@apache.org>
Subject Re: doubt about how to access a lowerbound value in window
Date Mon, 13 Feb 2017 19:12:52 GMT
The Window.constants field exists for a corner case, namely expressions like ‘sum(123) over
w’.

The bounds, such as “10 rows preceding” or “range between ‘1’ hour preceding and
‘2’ minute following”, are inside Window.groups.lowerBound and .upperBound.

The best way to understand this is to write various SQL statements and see what comes out
of "explain plan without implementation for …” and "explain plan with implementation for
…”. IIRC, you won’t find LogicalWindow in the former (they are windowed aggregates will
be inside LogicalProject; the LogicalWindow hasn’t been created yet); and in the latter
you’ll see EnumerableWindow.

 
> On Feb 9, 2017, at 8:44 AM, Stefano Bortoli <stefano.bortoli@huawei.com> wrote:
> 
> But constants can contain more things. In my case, there are 2 objects for example.
> 
> What I am struggling with is to connect a variable name I get from the lowerbound with
its value. Perhaps it is something basic, but I cannot do it.
> 
> Any idea about how to do that?
> 
> Stefano
> 
> -----Original Message-----
> From: Γιώργος Θεοδωράκης [mailto:giwrgosrtheod@gmail.com] 
> Sent: Thursday, February 09, 2017 3:01 PM
> To: dev@calcite.apache.org
> Subject: Re: doubt about how to access a lowerbound value in window
> 
> I try something like this:
> 
> Iterate until you find the your window rel and then
> 
> LogicalWindow windowAgg = (LogicalWindow) rel; int windowRange = createWindowFrame(windowAgg.getConstants());
> 
> ...
> 
> private int createWindowFrame(List<RexLiteral> constants) { int windowFrame = 0;
for ( RexLiteral con : constants) windowFrame += Integer.parseInt(con.toString()); // fix
unbounded window range //if (windowFrame == 0) // windowFrame++; return windowFrame; }
> 
> 2017-02-09 15:19 GMT+02:00 Stefano Bortoli <stefano.bortoli@huawei.com>:
> 
>> Hi all,
>> 
>> 
>> 
>> I am new to the community and I  am still figuring out things. So 
>> please, apologize if I am not precise enough.
>> 
>> 
>> 
>> I am trying to work with streaming windows, and I would need to access 
>> some values related to the boundaries of the window.
>> 
>> 
>> 
>> So far, the way I found was to use the window group keys, and use its 
>> first value to get a value from the window.constants lists.
>> 
>> **************
>> 
>> Integer lowerBoundKey = group.keys.asList().get(0);
>> 
>> Object lowerbound = constants.get(lowerBoundKey).getValue2();
>> 
>> **************
>> 
>> However, this method seems to be a little arbitrary as I would expect 
>> to be using the lowerbound offset somehow.
>> 
>> 
>> 
>> Intuitively, I was expecting to use the lowerbound offset name or 
>> index position to get the value from somewhere, but I am having 
>> problems understanding how. I feel I am missing something, and I would 
>> be grateful if someone can give me some hint about it.
>> 
>> Thanks a lot in advance!
>> Stefano
>> 
>> 


Mime
View raw message