You can also use SELECT L.f0, R.f2, L.window_start, L.window_end FROM Tumble(table T1, descriptor(T1.ts), INTERVAL ‘5’ MINUTE) L JOIN Tumble(table T2, descriptor(T2.ts), INTERVAL ‘5’ MINUTE) R USING (f0, window_start)
Viliam On Wed, 23 Sep 2020 at 08:02, Rui Wang <[email protected]> wrote: > Regarding to **L.window_start = R.window_start AND L.window_end = > R.window_end**: > > In general, the current table function windowing model is to append window > metadata to table directly, thus window metadata becomes a part of table > (or call it data). So as a part of table, these two columns should be > treated as normal columns thus they should be in the join on condition. > > If you want to make it optional, it makes window start/end columns special > and has a semantic binding with special table functions (TUMBLE, HOP, > SESSION), which then becomes really not a SQL thing. For example, we can > allow users to define their own windowing table function. In that case, how > will you utilize window start/end produced by a customized windowing table > function? What if users produce wired windows that have overlapped window > starts or window ends? > > Keeping windows start/end as a part of the table, treating them no > different from other columns, could give a consistent behavior for either > built-in table function or user-defined table function. > > If you think it is too verbose, there are two options to optimize: > > 1. for TUMBLE/HOP/SESSION, to identify a unique window, you will only need > either window start or end, so you can simplify it, for example, to > L.window_start = R.window_start only. > 2. (not recommended), you can cut off **L.window_start = R.window_start AND > L.window_end = R.window_end**, but add window metadata comparison to join > implicitly by execution engine. E.g. you can make up the join condition in > your JoinRel if two inputs are TUMBLE. > > > > -Rui > > > > > On Tue, Sep 22, 2020 at 10:27 PM Danny Chan <[email protected]> wrote: > > > Yes, the red part is **L.window_start = R.window_start AND L.window_end = > > R.window_end** > > > > > Is this a limitation for "triggered by the watermark of the stream”? > > > > No, because in most of the cases, there is no need to output the > > intermediate/partial join records then send retractions. > > > > > > So, how do you think about the condition syntax **L.window_start = > > R.window_start AND L.window_end = R.window_end** ? > > > > Best, > > Danny Chan > > 在 2020年9月23日 +0800 PM12:47,[email protected],写道: > > > > > > L.window_start = R.window_start AND L.window_end = R.window_end > > > -- Viliam Durina Jet Developer hazelcast® <https://www.hazelcast.com> 2 W 5th Ave, Ste 300 | San Mateo, CA 94402 | USA +1 (650) 521-5453 | hazelcast.com <https://www.hazelcast.com> -- This message contains confidential information and is intended only for the individuals named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission. If verification is required, please request a hard-copy version. -Hazelcast
