Hi, jgrier

Thanks for your insightful input.

First of all, very much agree with you that it is a right direction that we
should strive towards making Flink SQL more user-friendly, including
simplifying the job execution parameters, execution modes, data processing
pipeline definitions and maintenance, and so on.
The goal of this proposal is also to simplify the data processing pipeline
by proposing a new Dynamic Table, by combining Dynamic Table + Continuous,
so that users can focus more on the business itself. Our goal is also not
to create new business scenarios, it's just that the current Table can't
support this goal, so we need to propose a new type of Dynamic Table.

In the traditional Hive warehouse and Lakhouse scenario, the common
requirement from users begins with ingesting DB data such as MySQL and logs
in real-time into the ODS layer of the data warehouse. Then, defining a
series of ETL jobs to process and layer the raw data, with the general data
flow being ODS -> DWD -> DWS -> ADS, ultimately serving different users.

During the business process, the following scenarios may need to modify the
data:
1. Creating partitioned tables and manually backfilling certain historical
partitions to correct data, meaning overwriting partitions is necessary.
2. Deleting a set of rows for regulatory compliance, updating a set of rows
for data correction, such as deleting sensitive user information in a GDPR
scenario.
3. With changes in business requirements, adding some columns is necessary
but without wanting to refreshing historical partition data, so the new
columns would only apply to the latest partitions.

In the SQL standard regarding the definition of View, there are the
following restrictions:
1. Partitioned view is not supported.
2. Modification of the data generated by views is not supported.
3. Alteration of a View's schema, such as adding columns, is not supported.

Please correct me if my understanding is wrong.

Materialized view, representing the result of a select query and serving as
an index optimization technique mainly for query rewriting and computation
acceleration, so share the same the same limitation as View. If we use
materialized view, it can't meet our needs directly, we have to extend its
semantics, which is in conflict with the standard. If we use a table, we
don't have these concerns. Also assuming we extend the materialized view
semantics to allow for modification, this would result in its inability to
support query rewriting.

Our proposal is indeed similar to the ability of materialized view, but
considering the following two factors: firstly, we should try to follow the
standard as much as possible without conflicting with it, and secondly,
materialized view does not directly satisfy the scenario of modifying data,
so using Table would be more appropriate.

Although materialized view is also one of the candidates, it is not a more
suitable option.


> I'm actually against all of the other proposed names so I rank them
equally
last.  I don't think we need yet another new concept for this.  I think
that will just add to users' confusion and learning curve which is already
substantial with Flink.  We need to make things easier rather than harder.

Also, just to clarify, and sorry if my previous statement may not be that
accurate, this is not a new concept, it is just a new type of table,
similar to the capabilities of materialized view, but simplifies the data
processing pipeline, which is also aligned with the long term vision of
Flink SQL.


Best,
Ron


Jamie Grier <jgr...@confluent.io.invalid> 于2024年4月11日周四 05:59写道:

> Sorry for coming very late to this thread.  I have not contributed much to
> Flink publicly for quite some time but I have been involved with Flink,
> daily, for years now and I'm keenly interested in where we take Flink SQL
> going forward.
>
> Thanks for the proposal!!  I think it's definitely a step in the right
> direction and I'm thrilled this is happening.  The end state I have in mind
> is that we get rid of execution modes as something users have to think
> about and instead make sure the SQL a user writes completely describes
> their intent.  In the case of this proposal the intent a user has is that
> the system continually maintains an object (whatever we decide to call it)
> that is the result of their query and further that these can be easily
> chained together into declarative data pipelines.
>
> I would think it would be very unsurprising to users to call this a
> MATERIALIZED VIEW, except for the fact that this object can also accept
> updates via one-off DML statements.  However, I don't think this object
> *should* accept updates via one-off DML statements so I may be the odd man
> out here.   I would like to dive into this a little more if at all
> possible.  The reasoning I've seen mentioned is GDPR requirements so can we
> dig into that specifically?  I am not terribly familiar with the exact GDPR
> requirements but I should think that the solution to deleting data is to
> delete it in the upstream tables which would appropriately update any
> downstream MVs (or whatever we call it).
>
> So, with that context and the desire to explore the GDPR requirements a
> little more I would vote like so:
>
> (1) Materialized View, it should work as expected to SQL users, no new
> concept, no direct updates, dig into GDPR requirements though.
> (2) Dynamic Table, just follow the Snowflake precedent.
>
> I'm actually against all of the other proposed names so I rank them equally
> last.  I don't think we need yet another new concept for this.  I think
> that will just add to users' confusion and learning curve which is already
> substantial with Flink.  We need to make things easier rather than harder.
>
> All of that said, I think these discussions may be a bit easier if they
> were part of a shared longer term vision for Flink SQL overall.  You can
> see this from the little bits of side discussion that come up even in this
> thread.  I'm not quite sure how to address that though.  I will however
> give an example.
>
> I think that longer term the Flink SQL query text alone should dictate
> everything the system should do and we shouldn't rely on things like
> runtime execution modes at all.  This means, for example, that a SELECT
> statement should always be a point in time query and immediately return
> results over the current data set and terminate.   This also holds for an
> INSERT INTO query for that matter, and CTAS.  A continuous query that
> perpetually maintains some view in the background should really have a
> distinct syntax.  Basically Flink SQL should behave in a way that is
> unsurprising to users of existing database systems.
>
> Anyway, the point is that maybe we need a high level sketch of where we're
> going so we can make sure it all hangs together nicely.
>
> That all said I do think CREATE MATERIALIZED is a step in the right
> direction but we should figure out the GDPR stuff and the overall direction
> for Flink SQL going forward as well.
>
>
>
>
>
> On Wed, Apr 10, 2024 at 6:16 AM Dawid Wysakowicz <dwysakow...@apache.org>
> wrote:
>
> > Hi all,
> > I thought I'd cast my vote as well to give extra data:
> >
> >
> >    1. Materialized Table
> >    2. Materialized View (generally speaking I am not too concerned with
> >    using a View here, but since there are concerns around updating a
> view I
> >    put it second)
> >
> > I think what is suggested in this FLIP is really close to what
> MATERIALIZED
> > VIEWS do already, that's why I very much prefer any of the two options
> > above over any of the remaining candidates, but if I were to order them
> it
> > would be:
> >
> > 3. Refresh Table (it says what it does)
> > 4. Live Table - a new concept to explain, "live" can be interpreted in
> many
> > ways
> > 5. Derived Table - does not say much
> >
> > Best,
> > Dawid
> >
> > On Wed, 10 Apr 2024 at 04:50, Jark Wu <imj...@gmail.com> wrote:
> >
> > > I have been following up on the discussion, it's a great FLIP to
> further
> > > unify stream and batch ETL pipelines. Thanks for the proposal!
> > >
> > > Here is my ranking:
> > >
> > > 1. Materialized Table  -> "The table materializes the results of a
> query
> > > that you specify", this can reflect what we want and doesn't conflict
> > with
> > > any SQL standard.
> > > 2. Derived Table -> easy to understand and write, but need to extend
> the
> > > standard
> > > 3. Live Table ->  looks too much like Databrick's Delta Live Table.
> > > 4. Materialized View -> looks weird to insert/update a view.
> > >
> > >
> > > Best,
> > > Jark
> > >
> > >
> > >
> > >
> > > On Wed, 10 Apr 2024 at 09:57, Becket Qin <becket....@gmail.com> wrote:
> > >
> > > > Thanks for the proposal. I like the FLIP.
> > > >
> > > > My ranking:
> > > >
> > > > 1. Refresh(ing) / Live Table -> easy to understand and implies the
> > > dynamic
> > > > characteristic
> > > >
> > > > 2. Derived Table -> easy to understand.
> > > >
> > > > 3. Materialized Table -> sounds like just a table with physical data
> > > stored
> > > > somewhere.
> > > >
> > > > 4. Materialized View -> modifying a view directly is a little weird.
> > > >
> > > > Thanks,
> > > >
> > > > Jiangjie (Becket) Qin
> > > >
> > > >
> > > >
> > > > On Tue, Apr 9, 2024 at 5:46 AM Lincoln Lee <lincoln.8...@gmail.com>
> > > wrote:
> > > >
> > > > > Thanks Ron and Timo for your proposal!
> > > > >
> > > > > Here is my ranking:
> > > > >
> > > > > 1. Derived table -> extend the persistent semantics of derived
> table
> > in
> > > > SQL
> > > > >    standard, with a strong association with query, and has industry
> > > > > precedents
> > > > >    such as Google Looker.
> > > > >
> > > > > 2. Live Table ->  an alternative for 'dynamic table'
> > > > >
> > > > > 3. Materialized Table -> combination of the Materialized View and
> > > Table,
> > > > > but
> > > > >     still a table which accept data changes
> > > > >
> > > > > 4. Materialized View -> need to extend understanding of the view to
> > > > accept
> > > > >     data changes
> > > > >
> > > > > The reason for not adding 'Refresh Table' is I don't want to tell
> the
> > > > user
> > > > > to 'refresh a refresh table'.
> > > > >
> > > > >
> > > > > Best,
> > > > > Lincoln Lee
> > > > >
> > > > >
> > > > > Ron liu <ron9....@gmail.com> 于2024年4月9日周二 20:11写道:
> > > > >
> > > > > > Hi, Dev
> > > > > >
> > > > > > My rankings are:
> > > > > >
> > > > > > 1. Derived Table
> > > > > > 2. Materialized Table
> > > > > > 3. Live Table
> > > > > > 4. Materialized View
> > > > > >
> > > > > > Best,
> > > > > > Ron
> > > > > >
> > > > > >
> > > > > >
> > > > > > Ron liu <ron9....@gmail.com> 于2024年4月9日周二 20:07写道:
> > > > > >
> > > > > > > Hi, Dev
> > > > > > >
> > > > > > > After several rounds of discussion, there is currently no
> > consensus
> > > > on
> > > > > > the
> > > > > > > name of the new concept. Timo has proposed that we decide the
> > name
> > > > > > through
> > > > > > > a vote. This is a good solution when there is no clear
> > preference,
> > > so
> > > > > we
> > > > > > > will adopt this approach.
> > > > > > >
> > > > > > > Regarding the name of the new concept, there are currently five
> > > > > > candidates:
> > > > > > > 1. Derived Table -> taken by SQL standard
> > > > > > > 2. Materialized Table -> similar to SQL materialized view but a
> > > table
> > > > > > > 3. Live Table -> similar to dynamic tables
> > > > > > > 4. Refresh Table -> states what it does
> > > > > > > 5. Materialized View -> needs to extend the standard to support
> > > > > modifying
> > > > > > > data
> > > > > > >
> > > > > > > For the above five candidates, everyone can give your rankings
> > > based
> > > > on
> > > > > > > your preferences. You can choose up to five options or only
> > choose
> > > > some
> > > > > > of
> > > > > > > them.
> > > > > > > We will use a scoring rule, where the* first rank gets 5
> points,
> > > > second
> > > > > > > rank gets 4 points, third rank gets 3 points, fourth rank gets
> 2
> > > > > points,
> > > > > > > and fifth rank gets 1 point*.
> > > > > > > After the voting closes, I will score all the candidates based
> on
> > > > > > > everyone's votes, and the candidate with the highest score will
> > be
> > > > > chosen
> > > > > > > as the name for the new concept.
> > > > > > >
> > > > > > > The voting will last up to 72 hours and is expected to close
> this
> > > > > Friday.
> > > > > > > I look forward to everyone voting on the name in this thread.
> Of
> > > > > course,
> > > > > > we
> > > > > > > also welcome new input regarding the name.
> > > > > > >
> > > > > > > Best,
> > > > > > > Ron
> > > > > > >
> > > > > > > Ron liu <ron9....@gmail.com> 于2024年4月9日周二 19:49写道:
> > > > > > >
> > > > > > >> Hi, Dev
> > > > > > >>
> > > > > > >> Sorry for my previous statement was not quite accurate. We
> will
> > > > hold a
> > > > > > >> vote for the name within this thread.
> > > > > > >>
> > > > > > >> Best,
> > > > > > >> Ron
> > > > > > >>
> > > > > > >>
> > > > > > >> Ron liu <ron9....@gmail.com> 于2024年4月9日周二 19:29写道:
> > > > > > >>
> > > > > > >>> Hi, Timo
> > > > > > >>>
> > > > > > >>> Thanks for your reply.
> > > > > > >>>
> > > > > > >>> I agree with you that sometimes naming is more difficult.
> When
> > no
> > > > one
> > > > > > >>> has a clear preference, voting on the name is a good
> solution,
> > so
> > > > > I'll
> > > > > > send
> > > > > > >>> a separate email for the vote, clarify the rules for the
> vote,
> > > then
> > > > > let
> > > > > > >>> everyone vote.
> > > > > > >>>
> > > > > > >>> One other point to confirm, in your ranking there is an
> option
> > > for
> > > > > > >>> Materialized View, does it stand for the UPDATING
> Materialized
> > > View
> > > > > > that
> > > > > > >>> you mentioned earlier in the discussion? If using
> Materialized
> > > > View I
> > > > > > think
> > > > > > >>> it is needed to extend it.
> > > > > > >>>
> > > > > > >>> Best,
> > > > > > >>> Ron
> > > > > > >>>
> > > > > > >>> Timo Walther <twal...@apache.org> 于2024年4月9日周二 17:20写道:
> > > > > > >>>
> > > > > > >>>> Hi Ron,
> > > > > > >>>>
> > > > > > >>>> yes naming is hard. But it will have large impact on
> > trainings,
> > > > > > >>>> presentations, and the mental model of users. Maybe the
> > easiest
> > > is
> > > > > to
> > > > > > >>>> collect ranking by everyone with some short justification:
> > > > > > >>>>
> > > > > > >>>>
> > > > > > >>>> My ranking (from good to not so good):
> > > > > > >>>>
> > > > > > >>>> 1. Refresh Table -> states what it does
> > > > > > >>>> 2. Materialized Table -> similar to SQL materialized view
> but
> > a
> > > > > table
> > > > > > >>>> 3. Live Table -> nice buzzword, but maybe still too close to
> > > > dynamic
> > > > > > >>>> tables?
> > > > > > >>>> 4. Materialized View -> a bit broader than standard but
> still
> > > very
> > > > > > >>>> similar
> > > > > > >>>> 5. Derived table -> taken by standard
> > > > > > >>>>
> > > > > > >>>> Regards,
> > > > > > >>>> Timo
> > > > > > >>>>
> > > > > > >>>>
> > > > > > >>>>
> > > > > > >>>> On 07.04.24 11:34, Ron liu wrote:
> > > > > > >>>> > Hi, Dev
> > > > > > >>>> >
> > > > > > >>>> > This is a summary letter. After several rounds of
> > discussion,
> > > > > there
> > > > > > >>>> is a
> > > > > > >>>> > strong consensus about the FLIP proposal and the issues it
> > > aims
> > > > to
> > > > > > >>>> address.
> > > > > > >>>> > The current point of disagreement is the naming of the new
> > > > > concept.
> > > > > > I
> > > > > > >>>> have
> > > > > > >>>> > summarized the candidates as follows:
> > > > > > >>>> >
> > > > > > >>>> > 1. Derived Table (Inspired by Google Lookers)
> > > > > > >>>> >      - Pros: Google Lookers has introduced this concept,
> > which
> > > > is
> > > > > > >>>> designed
> > > > > > >>>> > for building Looker's automated modeling, aligning with
> our
> > > > > purpose
> > > > > > >>>> for the
> > > > > > >>>> > stream-batch automatic pipeline.
> > > > > > >>>> >
> > > > > > >>>> >      - Cons: The SQL standard uses derived table term
> > > > extensively,
> > > > > > >>>> vendors
> > > > > > >>>> > adopt this for simply referring to a table within a
> > subclause.
> > > > > > >>>> >
> > > > > > >>>> > 2. Materialized Table: It means materialize the query
> result
> > > to
> > > > > > table,
> > > > > > >>>> > similar to Db2 MQT (Materialized Query Tables). In
> addition,
> > > > > > Snowflake
> > > > > > >>>> > Dynamic Table's predecessor is also called Materialized
> > Table.
> > > > > > >>>> >
> > > > > > >>>> > 3. Updating Table (From Timo)
> > > > > > >>>> >
> > > > > > >>>> > 4. Updating Materialized View (From Timo)
> > > > > > >>>> >
> > > > > > >>>> > 5. Refresh/Live Table (From Martijn)
> > > > > > >>>> >
> > > > > > >>>> > As Martijn said, naming is a headache, looking forward to
> > more
> > > > > > >>>> valuable
> > > > > > >>>> > input from everyone.
> > > > > > >>>> >
> > > > > > >>>> > [1]
> > > > > > >>>> >
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cloud.google.com/looker/docs/derived-tables#persistent_derived_tables
> > > > > > >>>> > [2]
> > > > > > >>>>
> > > > >
> https://www.ibm.com/docs/en/db2/11.5?topic=tables-materialized-query
> > > > > > >>>> > [3]
> > > > > > >>>> >
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://community.denodo.com/docs/html/browse/6.0/vdp/vql/materialized_tables/creating_materialized_tables/creating_materialized_tables
> > > > > > >>>> >
> > > > > > >>>> > Best,
> > > > > > >>>> > Ron
> > > > > > >>>> >
> > > > > > >>>> > Ron liu <ron9....@gmail.com> 于2024年4月7日周日 15:55写道:
> > > > > > >>>> >
> > > > > > >>>> >> Hi, Lorenzo
> > > > > > >>>> >>
> > > > > > >>>> >> Thank you for your insightful input.
> > > > > > >>>> >>
> > > > > > >>>> >>>>> I think the 2 above twisted the materialized view
> > concept
> > > to
> > > > > > more
> > > > > > >>>> than
> > > > > > >>>> >> just an optimization for accessing pre-computed
> > > > > aggregates/filters.
> > > > > > >>>> >> I think that concept (at least in my mind) is now
> adherent
> > to
> > > > the
> > > > > > >>>> >> semantics of the words themselves ("materialized" and
> > "view")
> > > > > than
> > > > > > >>>> on its
> > > > > > >>>> >> implementations in DBMs, as just a view on raw data that,
> > > > > > hopefully,
> > > > > > >>>> is
> > > > > > >>>> >> constantly updated with fresh results.
> > > > > > >>>> >> That's why I understand Timo's et al. objections.
> > > > > > >>>> >>
> > > > > > >>>> >> Your understanding of Materialized Views is correct.
> > However,
> > > > in
> > > > > > our
> > > > > > >>>> >> scenario, an important feature is the support for Update
> &
> > > > Delete
> > > > > > >>>> >> operations, which the current Materialized Views cannot
> > > > fulfill.
> > > > > As
> > > > > > >>>> we
> > > > > > >>>> >> discussed with Timo before, if Materialized Views needs
> to
> > > > > support
> > > > > > >>>> data
> > > > > > >>>> >> modifications, it would require an extension of new
> > keywords,
> > > > > such
> > > > > > as
> > > > > > >>>> >> CREATING xxx (UPDATING) MATERIALIZED VIEW.
> > > > > > >>>> >>
> > > > > > >>>> >>>>> Still, I don't understand why we need another type of
> > > > special
> > > > > > >>>> table.
> > > > > > >>>> >> Could you dive deep into the reasons why not simply
> adding
> > > the
> > > > > > >>>> FRESHNESS
> > > > > > >>>> >> parameter to standard tables?
> > > > > > >>>> >>
> > > > > > >>>> >> Firstly, I need to emphasize that we cannot achieve the
> > > design
> > > > > goal
> > > > > > >>>> of
> > > > > > >>>> >> FLIP through the CREATE TABLE syntax combined with a
> > > FRESHNESS
> > > > > > >>>> parameter.
> > > > > > >>>> >> The proposal of this FLIP is to use Dynamic Table +
> > > Continuous
> > > > > > >>>> Query, and
> > > > > > >>>> >> combine it with FRESHNESS to realize a streaming-batch
> > > > > unification.
> > > > > > >>>> >> However, CREATE TABLE is merely a metadata operation and
> > > cannot
> > > > > > >>>> >> automatically start a background refresh job. To achieve
> > the
> > > > > design
> > > > > > >>>> goal of
> > > > > > >>>> >> FLIP with standard tables, it would require extending the
> > > > CTAS[1]
> > > > > > >>>> syntax to
> > > > > > >>>> >> introduce the FRESHNESS keyword. We considered this
> design
> > > > > > >>>> initially, but
> > > > > > >>>> >> it has following problems:
> > > > > > >>>> >>
> > > > > > >>>> >> 1. Distinguishing a table created through CTAS as a
> > standard
> > > > > table
> > > > > > >>>> or as a
> > > > > > >>>> >> "special" standard table with an ongoing background
> refresh
> > > job
> > > > > > >>>> using the
> > > > > > >>>> >> FRESHNESS keyword is very obscure for users.
> > > > > > >>>> >> 2. It intrudes on the semantics of the CTAS syntax.
> > > Currently,
> > > > > > tables
> > > > > > >>>> >> created using CTAS only add table metadata to the Catalog
> > and
> > > > do
> > > > > > not
> > > > > > >>>> record
> > > > > > >>>> >> attributes such as query. There are also no ongoing
> > > background
> > > > > > >>>> refresh
> > > > > > >>>> >> jobs, and the data writing operation happens only once at
> > > table
> > > > > > >>>> creation.
> > > > > > >>>> >> 3. For the framework, when we perform a certain kind of
> > Alter
> > > > > Table
> > > > > > >>>> >> behavior for a table, for the table created by specifying
> > > > > FRESHNESS
> > > > > > >>>> and did
> > > > > > >>>> >> not specify the FRESHNESS created table behavior how to
> > > > > distinguish
> > > > > > >>>> , which
> > > > > > >>>> >> will also cause confusion.
> > > > > > >>>> >>
> > > > > > >>>> >> In terms of the design goal of combining Dynamic Table +
> > > > > Continuous
> > > > > > >>>> Query,
> > > > > > >>>> >> the FLIP proposal cannot be realized by only extending
> the
> > > > > current
> > > > > > >>>> stardand
> > > > > > >>>> >> tables, so a new kind of dynamic table needs to be
> > introduced
> > > > at
> > > > > > the
> > > > > > >>>> >> first-level concept.
> > > > > > >>>> >>
> > > > > > >>>> >> [1]
> > > > > > >>>> >>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql/create/#as-select_statement
> > > > > > >>>> >>
> > > > > > >>>> >> Best,
> > > > > > >>>> >> Ron
> > > > > > >>>> >>
> > > > > > >>>> >> <lorenzo.affe...@ververica.com.invalid> 于2024年4月3日周三
> > > 22:25写道:
> > > > > > >>>> >>
> > > > > > >>>> >>> Hello everybody!
> > > > > > >>>> >>> Thanks for the FLIP as it looks amazing (and I think the
> > > prove
> > > > > is
> > > > > > >>>> this
> > > > > > >>>> >>> deep discussion it is provoking :))
> > > > > > >>>> >>>
> > > > > > >>>> >>> I have a couple of comments to add to this:
> > > > > > >>>> >>>
> > > > > > >>>> >>> Even though I get the reason why you rejected
> MATERIALIZED
> > > > > VIEW, I
> > > > > > >>>> still
> > > > > > >>>> >>> like it a lot, and I would like to provide pointers on
> how
> > > the
> > > > > > >>>> materialized
> > > > > > >>>> >>> view concept twisted in last years:
> > > > > > >>>> >>>
> > > > > > >>>> >>> • Materialize DB (https://materialize.com/)
> > > > > > >>>> >>> • The famous talk by Martin Kleppmann "turning the
> > database
> > > > > inside
> > > > > > >>>> out" (
> > > > > > >>>> >>> https://www.youtube.com/watch?v=fU9hR3kiOK0)
> > > > > > >>>> >>>
> > > > > > >>>> >>> I think the 2 above twisted the materialized view
> concept
> > to
> > > > > more
> > > > > > >>>> than
> > > > > > >>>> >>> just an optimization for accessing pre-computed
> > > > > > aggregates/filters.
> > > > > > >>>> >>> I think that concept (at least in my mind) is now
> adherent
> > > to
> > > > > the
> > > > > > >>>> >>> semantics of the words themselves ("materialized" and
> > > "view")
> > > > > than
> > > > > > >>>> on its
> > > > > > >>>> >>> implementations in DBMs, as just a view on raw data
> that,
> > > > > > >>>> hopefully, is
> > > > > > >>>> >>> constantly updated with fresh results.
> > > > > > >>>> >>> That's why I understand Timo's et al. objections.
> > > > > > >>>> >>> Still I understand there is no need to add confusion :)
> > > > > > >>>> >>>
> > > > > > >>>> >>> Still, I don't understand why we need another type of
> > > special
> > > > > > table.
> > > > > > >>>> >>> Could you dive deep into the reasons why not simply
> adding
> > > the
> > > > > > >>>> FRESHNESS
> > > > > > >>>> >>> parameter to standard tables?
> > > > > > >>>> >>>
> > > > > > >>>> >>> I would say that as a very seamless implementation with
> > the
> > > > goal
> > > > > > of
> > > > > > >>>> a
> > > > > > >>>> >>> unification of batch and streaming.
> > > > > > >>>> >>> If we stick to a unified world, I think that Flink
> should
> > > just
> > > > > > >>>> provide 1
> > > > > > >>>> >>> type of table that is inherently dynamic.
> > > > > > >>>> >>> Now, depending on FRESHNESS objectives / connectors used
> > in
> > > > > WITH,
> > > > > > >>>> that
> > > > > > >>>> >>> table can be backed by a stream or batch job as you
> > > explained
> > > > in
> > > > > > >>>> your FLIP.
> > > > > > >>>> >>>
> > > > > > >>>> >>> Maybe I am totally missing the point :)
> > > > > > >>>> >>>
> > > > > > >>>> >>> Thank you in advance,
> > > > > > >>>> >>> Lorenzo
> > > > > > >>>> >>> On Apr 3, 2024 at 15:25 +0200, Martijn Visser <
> > > > > > >>>> martijnvis...@apache.org>,
> > > > > > >>>> >>> wrote:
> > > > > > >>>> >>>> Hi all,
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> Thanks for the proposal. While the FLIP talks
> extensively
> > > on
> > > > > how
> > > > > > >>>> >>> Snowflake
> > > > > > >>>> >>>> has Dynamic Tables and Databricks has Delta Live
> Tables,
> > my
> > > > > > >>>> >>> understanding
> > > > > > >>>> >>>> is that Databricks has CREATE STREAMING TABLE [1] which
> > > > relates
> > > > > > >>>> with
> > > > > > >>>> >>> this
> > > > > > >>>> >>>> proposal.
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> I do have concerns about using CREATE DYNAMIC TABLE,
> > > > > specifically
> > > > > > >>>> about
> > > > > > >>>> >>>> confusing the users who are familiar with Snowflake's
> > > > approach
> > > > > > >>>> where you
> > > > > > >>>> >>>> can't change the content via DML statements, while that
> > is
> > > > > > >>>> something
> > > > > > >>>> >>> that
> > > > > > >>>> >>>> would work in this proposal. Naming is hard of course,
> > but
> > > I
> > > > > > would
> > > > > > >>>> >>> probably
> > > > > > >>>> >>>> prefer something like CREATE CONTINUOUS TABLE, CREATE
> > > REFRESH
> > > > > > >>>> TABLE or
> > > > > > >>>> >>>> CREATE LIVE TABLE.
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> Best regards,
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> Martijn
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> [1]
> > > > > > >>>> >>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://docs.databricks.com/en/sql/language-manual/sql-ref-syntax-ddl-create-streaming-table.html
> > > > > > >>>> >>>>
> > > > > > >>>> >>>> On Wed, Apr 3, 2024 at 5:19 AM Ron liu <
> > ron9....@gmail.com
> > > >
> > > > > > wrote:
> > > > > > >>>> >>>>
> > > > > > >>>> >>>>> Hi, dev
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>>> After offline discussion with Becket Qin, Lincoln Lee
> > and
> > > > Jark
> > > > > > >>>> Wu, we
> > > > > > >>>> >>> have
> > > > > > >>>> >>>>> improved some parts of the FLIP.
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>>> 1. Add Full Refresh Mode section to clarify the
> > semantics
> > > of
> > > > > > full
> > > > > > >>>> >>> refresh
> > > > > > >>>> >>>>> mode.
> > > > > > >>>> >>>>> 2. Add Future Improvement section explaining why query
> > > > > statement
> > > > > > >>>> does
> > > > > > >>>> >>> not
> > > > > > >>>> >>>>> support references to temporary view and possible
> > > solutions.
> > > > > > >>>> >>>>> 3. The Future Improvement section explains a possible
> > > future
> > > > > > >>>> solution
> > > > > > >>>> >>> for
> > > > > > >>>> >>>>> dynamic table to support the modification of query
> > > > statements
> > > > > to
> > > > > > >>>> meet
> > > > > > >>>> >>> the
> > > > > > >>>> >>>>> common field-level schema evolution requirements of
> the
> > > > > > lakehouse.
> > > > > > >>>> >>>>> 4. The Refresh section emphasizes that the Refresh
> > command
> > > > and
> > > > > > the
> > > > > > >>>> >>>>> background refresh job can be executed in parallel,
> with
> > > no
> > > > > > >>>> >>> restrictions at
> > > > > > >>>> >>>>> the framework level.
> > > > > > >>>> >>>>> 5. Convert RefreshHandler into a plug-in interface to
> > > > support
> > > > > > >>>> various
> > > > > > >>>> >>>>> workflow schedulers.
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>>> Best,
> > > > > > >>>> >>>>> Ron
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>>> Ron liu <ron9....@gmail.com> 于2024年4月2日周二 10:28写道:
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>>>>> Hi, Venkata krishnan
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> Thank you for your involvement and suggestions, and
> > hope
> > > > > that
> > > > > > >>>> the
> > > > > > >>>> >>> design
> > > > > > >>>> >>>>>>> goals of this FLIP will be helpful to your business.
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> 1. In the proposed FLIP, given the example for
> > the
> > > > > > >>>> >>> dynamic table, do
> > > > > > >>>> >>>>>>> the
> > > > > > >>>> >>>>>>> data sources always come from a single lake storage
> > such
> > > > as
> > > > > > >>>> >>> Paimon or
> > > > > > >>>> >>>>> does
> > > > > > >>>> >>>>>>> the same proposal solve for 2 disparate storage
> > systems
> > > > like
> > > > > > >>>> >>> Kafka and
> > > > > > >>>> >>>>>>> Iceberg where Kafka events are ETLed to Iceberg
> > similar
> > > to
> > > > > > >>>> Paimon?
> > > > > > >>>> >>>>>>> Basically the lambda architecture that is mentioned
> in
> > > the
> > > > > > FLIP
> > > > > > >>>> >>> as well.
> > > > > > >>>> >>>>>>> I'm wondering if it is possible to switch b/w
> sources
> > > > based
> > > > > on
> > > > > > >>>> the
> > > > > > >>>> >>>>>>> execution mode, for eg: if it is backfill operation,
> > > > switch
> > > > > > to a
> > > > > > >>>> >>> data
> > > > > > >>>> >>>>> lake
> > > > > > >>>> >>>>>>> storage system like Iceberg, otherwise an event
> > > streaming
> > > > > > system
> > > > > > >>>> >>> like
> > > > > > >>>> >>>>>>> Kafka.
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> Dynamic table is a design abstraction at the
> framework
> > > > level
> > > > > > and
> > > > > > >>>> >>> is not
> > > > > > >>>> >>>>>>> tied to the physical implementation of the
> connector.
> > > If a
> > > > > > >>>> >>> connector
> > > > > > >>>> >>>>>>> supports a combination of Kafka and lake storage,
> this
> > > > works
> > > > > > >>>> fine.
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> 2. What happens in the context of a bootstrap
> > > > (batch)
> > > > > +
> > > > > > >>>> >>> nearline
> > > > > > >>>> >>>>> update
> > > > > > >>>> >>>>>>> (streaming) case that are stateful applications?
> What
> > I
> > > > mean
> > > > > > by
> > > > > > >>>> >>> that is,
> > > > > > >>>> >>>>>>> will the state from the batch application be
> > transferred
> > > > to
> > > > > > the
> > > > > > >>>> >>> nearline
> > > > > > >>>> >>>>>>> application after the bootstrap execution is
> complete?
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> I think this is another orthogonal thing, something
> > that
> > > > > > >>>> FLIP-327
> > > > > > >>>> >>> tries
> > > > > > >>>> >>>>> to
> > > > > > >>>> >>>>>>> address, not directly related to Dynamic Table.
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> [1]
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-327%3A+Support+switching+from+batch+to+stream+mode+to+improve+throughput+when+processing+backlog+data
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> Best,
> > > > > > >>>> >>>>>>> Ron
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>> Venkatakrishnan Sowrirajan <vsowr...@asu.edu>
> > > > 于2024年3月30日周六
> > > > > > >>>> >>> 07:06写道:
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>>>>> Ron and Lincoln,
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> Great proposal and interesting discussion for
> adding
> > > > > support
> > > > > > >>>> >>> for dynamic
> > > > > > >>>> >>>>>>>>> tables within Flink.
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> At LinkedIn, we are also trying to solve
> > > compute/storage
> > > > > > >>>> >>> convergence for
> > > > > > >>>> >>>>>>>>> similar problems discussed as part of this FLIP,
> > > > > > specifically
> > > > > > >>>> >>> periodic
> > > > > > >>>> >>>>>>>>> backfill, bootstrap + nearline update use cases
> > using
> > > > > single
> > > > > > >>>> >>>>>>>>> implementation
> > > > > > >>>> >>>>>>>>> of business logic (single script).
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> Few clarifying questions:
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> 1. In the proposed FLIP, given the example for the
> > > > dynamic
> > > > > > >>>> >>> table, do the
> > > > > > >>>> >>>>>>>>> data sources always come from a single lake
> storage
> > > such
> > > > > as
> > > > > > >>>> >>> Paimon or
> > > > > > >>>> >>>>> does
> > > > > > >>>> >>>>>>>>> the same proposal solve for 2 disparate storage
> > > systems
> > > > > like
> > > > > > >>>> >>> Kafka and
> > > > > > >>>> >>>>>>>>> Iceberg where Kafka events are ETLed to Iceberg
> > > similar
> > > > to
> > > > > > >>>> >>> Paimon?
> > > > > > >>>> >>>>>>>>> Basically the lambda architecture that is
> mentioned
> > in
> > > > the
> > > > > > >>>> >>> FLIP as well.
> > > > > > >>>> >>>>>>>>> I'm wondering if it is possible to switch b/w
> > sources
> > > > > based
> > > > > > on
> > > > > > >>>> >>> the
> > > > > > >>>> >>>>>>>>> execution mode, for eg: if it is backfill
> operation,
> > > > > switch
> > > > > > to
> > > > > > >>>> >>> a data
> > > > > > >>>> >>>>> lake
> > > > > > >>>> >>>>>>>>> storage system like Iceberg, otherwise an event
> > > > streaming
> > > > > > >>>> >>> system like
> > > > > > >>>> >>>>>>>>> Kafka.
> > > > > > >>>> >>>>>>>>> 2. What happens in the context of a bootstrap
> > (batch)
> > > +
> > > > > > >>>> >>> nearline update
> > > > > > >>>> >>>>>>>>> (streaming) case that are stateful applications?
> > What
> > > I
> > > > > mean
> > > > > > >>>> >>> by that is,
> > > > > > >>>> >>>>>>>>> will the state from the batch application be
> > > transferred
> > > > > to
> > > > > > >>>> >>> the nearline
> > > > > > >>>> >>>>>>>>> application after the bootstrap execution is
> > complete?
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> Regards
> > > > > > >>>> >>>>>>>>> Venkata krishnan
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>> On Mon, Mar 25, 2024 at 8:03 PM Ron liu <
> > > > > ron9....@gmail.com
> > > > > > >
> > > > > > >>>> >>> wrote:
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Hi, Timo
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Thanks for your quick response, and your
> > suggestion.
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Yes, this discussion has turned into confirming
> > > > whether
> > > > > > >>>> >>> it's a special
> > > > > > >>>> >>>>>>>>>>> table or a special MV.
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> 1. The key problem with MVs is that they don't
> > > support
> > > > > > >>>> >>> modification,
> > > > > > >>>> >>>>> so
> > > > > > >>>> >>>>>>>>> I
> > > > > > >>>> >>>>>>>>>>> prefer it to be a special table. Although the
> > > periodic
> > > > > > >>>> >>> refresh
> > > > > > >>>> >>>>> behavior
> > > > > > >>>> >>>>>>>>> is
> > > > > > >>>> >>>>>>>>>>> more characteristic of an MV, since we are
> > already a
> > > > > > >>>> >>> special table,
> > > > > > >>>> >>>>>>>>>>> supporting periodic refresh behavior is quite
> > > natural,
> > > > > > >>>> >>> similar to
> > > > > > >>>> >>>>>>>>> Snowflake
> > > > > > >>>> >>>>>>>>>>> dynamic tables.
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> 2. Regarding the keyword UPDATING, since the
> > current
> > > > > > >>>> >>> Regular Table is
> > > > > > >>>> >>>>> a
> > > > > > >>>> >>>>>>>>>>> Dynamic Table, which implies support for
> updating
> > > > > through
> > > > > > >>>> >>> Continuous
> > > > > > >>>> >>>>>>>>> Query,
> > > > > > >>>> >>>>>>>>>>> I think it is redundant to add the keyword
> > UPDATING.
> > > > In
> > > > > > >>>> >>> addition,
> > > > > > >>>> >>>>>>>>> UPDATING
> > > > > > >>>> >>>>>>>>>>> can not reflect the Continuous Query part, can
> not
> > > > > express
> > > > > > >>>> >>> the purpose
> > > > > > >>>> >>>>>>>>> we
> > > > > > >>>> >>>>>>>>>>> want to simplify the data pipeline through
> Dynamic
> > > > > Table +
> > > > > > >>>> >>> Continuous
> > > > > > >>>> >>>>>>>>>>> Query.
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> 3. From the perspective of the SQL standard
> > > > definition,
> > > > > I
> > > > > > >>>> >>> can
> > > > > > >>>> >>>>> understand
> > > > > > >>>> >>>>>>>>>>> your concerns about Derived Table, but is it
> > > possible
> > > > to
> > > > > > >>>> >>> make a slight
> > > > > > >>>> >>>>>>>>>>> adjustment to meet our needs? Additionally, as
> > > Lincoln
> > > > > > >>>> >>> mentioned, the
> > > > > > >>>> >>>>>>>>>>> Google Looker platform has introduced Persistent
> > > > Derived
> > > > > > >>>> >>> Table, and
> > > > > > >>>> >>>>>>>>> there
> > > > > > >>>> >>>>>>>>>>> are precedents in the industry; could Derived
> > Table
> > > > be a
> > > > > > >>>> >>> candidate?
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Of course, look forward to your better
> > suggestions.
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>> Ron
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>> Timo Walther <twal...@apache.org> 于2024年3月25日周一
> > > > > 18:49写道:
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> After thinking about this more, this
> discussion
> > > > boils
> > > > > > >>>> >>> down to
> > > > > > >>>> >>>>> whether
> > > > > > >>>> >>>>>>>>>>>>> this is a special table or a special
> > materialized
> > > > > > >>>> >>> view. In both
> > > > > > >>>> >>>>> cases,
> > > > > > >>>> >>>>>>>>>>>>> we would need to add a special keyword:
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> Either
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> CREATE UPDATING TABLE
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> or
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> CREATE UPDATING MATERIALIZED VIEW
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> I still feel that the periodic refreshing
> > behavior
> > > > is
> > > > > > >>>> >>> closer to a
> > > > > > >>>> >>>>> MV.
> > > > > > >>>> >>>>>>>>> If
> > > > > > >>>> >>>>>>>>>>>>> we add a special keyword to MV, the optimizer
> > > would
> > > > > > >>>> >>> know that the
> > > > > > >>>> >>>>> data
> > > > > > >>>> >>>>>>>>>>>>> cannot be used for query optimizations.
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> I will ask more people for their opinion.
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> Regards,
> > > > > > >>>> >>>>>>>>>>>>> Timo
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>> On 25.03.24 10:45, Timo Walther wrote:
> > > > > > >>>> >>>>>>>>>>>>>>> Hi Ron and Lincoln,
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> thanks for the quick response and the very
> > > > > > >>>> >>> insightful discussion.
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> we might limit future opportunities to
> > > > > > >>>> >>> optimize queries
> > > > > > >>>> >>>>>>>>>>>>>>>>> through automatic materialization
> rewriting
> > by
> > > > > > >>>> >>> allowing data
> > > > > > >>>> >>>>>>>>>>>>>>>>> modifications, thus losing the potential
> for
> > > > > > >>>> >>> such
> > > > > > >>>> >>>>> optimizations.
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> This argument makes a lot of sense to me.
> Due
> > to
> > > > > > >>>> >>> the updates, the
> > > > > > >>>> >>>>>>>>>>> system
> > > > > > >>>> >>>>>>>>>>>>>>> is not in full control of the persisted
> data.
> > > > > > >>>> >>> However, the system
> > > > > > >>>> >>>>> is
> > > > > > >>>> >>>>>>>>>>>>>>> still in full control of the job that powers
> > the
> > > > > > >>>> >>> refresh. So if
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>> system manages all updating pipelines, it
> > could
> > > > > > >>>> >>> still leverage
> > > > > > >>>> >>>>>>>>>>> automatic
> > > > > > >>>> >>>>>>>>>>>>>>> materialization rewriting but without
> > leveraging
> > > > > > >>>> >>> the data at rest
> > > > > > >>>> >>>>>>>>> (only
> > > > > > >>>> >>>>>>>>>>>>>>> the data in flight).
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> we are considering another candidate,
> > Derived
> > > > > > >>>> >>> Table, the term
> > > > > > >>>> >>>>>>>>>>> 'derive'
> > > > > > >>>> >>>>>>>>>>>>>>>>> suggests a query, and 'table' retains
> > > > > > >>>> >>> modifiability. This
> > > > > > >>>> >>>>>>>>> approach
> > > > > > >>>> >>>>>>>>>>>>>>>>> would not disrupt our current concept of a
> > > > > > >>>> >>> dynamic table
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> I did some research on this term. The SQL
> > > standard
> > > > > > >>>> >>> uses the term
> > > > > > >>>> >>>>>>>>>>>>>>> "derived table" extensively (defined in
> > section
> > > > > > >>>> >>> 4.17.3). Thus, a
> > > > > > >>>> >>>>>>>>> lot of
> > > > > > >>>> >>>>>>>>>>>>>>> vendors adopt this for simply referring to a
> > > table
> > > > > > >>>> >>> within a
> > > > > > >>>> >>>>>>>>> subclause:
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://dev.mysql.com/doc/refman/8.0/en/derived-tables.html__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j735ghdiMp$
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc32300.1600/doc/html/san1390612291252.html__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j737h1gRux$
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://www.c-sharpcorner.com/article/derived-tables-vs-common-table-expressions/__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j739bWIEcL$
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://stackoverflow.com/questions/26529804/what-are-the-derived-tables-in-my-explain-statement__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j739HnGtQf$
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://www.sqlservercentral.com/articles/sql-derived-tables__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j737DeBiqg$
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> Esp. the latter example is interesting, SQL
> > > Server
> > > > > > >>>> >>> allows things
> > > > > > >>>> >>>>>>>>> like
> > > > > > >>>> >>>>>>>>>>>>>>> this on derived tables:
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> UPDATE T SET Name='Timo' FROM (SELECT * FROM
> > > > > > >>>> >>> Product) AS T
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> SELECT * FROM Product;
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> Btw also Snowflake's dynamic table state:
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Because the content of a dynamic table is
> > > > > > >>>> >>> fully determined
> > > > > > >>>> >>>>>>>>>>>>>>>>> by the given query, the content cannot be
> > > > > > >>>> >>> changed by using DML.
> > > > > > >>>> >>>>>>>>>>>>>>>>> You don’t insert, update, or delete the
> rows
> > > > > > >>>> >>> in a dynamic
> > > > > > >>>> >>>>> table.
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> So a new term makes a lot of sense.
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> How about using `UPDATING`?
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> CREATE UPDATING TABLE
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> This reflects that modifications can be made
> > and
> > > > > > >>>> >>> from an
> > > > > > >>>> >>>>>>>>>>>>>>> English-language perspective you can PAUSE
> or
> > > > > > >>>> >>> RESUME the UPDATING.
> > > > > > >>>> >>>>>>>>>>>>>>> Thus, a user can define UPDATING interval
> and
> > > > mode?
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> Looking forward to your thoughts.
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> Regards,
> > > > > > >>>> >>>>>>>>>>>>>>> Timo
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>> On 25.03.24 07:09, Ron liu wrote:
> > > > > > >>>> >>>>>>>>>>>>>>>>> Hi, Ahmed
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Thanks for your feedback.
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Regarding your question:
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> I want to iterate on Timo's comments
> > > > > > >>>> >>> regarding the confusion
> > > > > > >>>> >>>>>>>>> between
> > > > > > >>>> >>>>>>>>>>>>>>>>> "Dynamic Table" and current Flink "Table".
> > > > > > >>>> >>> Should the refactoring
> > > > > > >>>> >>>>>>>>> of
> > > > > > >>>> >>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>> system happen in 2.0, should we rename it
> in
> > > > > > >>>> >>> this Flip ( as the
> > > > > > >>>> >>>>>>>>>>>>>>>>> suggestions
> > > > > > >>>> >>>>>>>>>>>>>>>>> in the thread ) and address the holistic
> > > > > > >>>> >>> changes in a separate
> > > > > > >>>> >>>>> Flip
> > > > > > >>>> >>>>>>>>>>>>>>>>> for 2.0?
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Lincoln proposed a new concept in reply to
> > > > > > >>>> >>> Timo: Derived Table,
> > > > > > >>>> >>>>>>>>> which
> > > > > > >>>> >>>>>>>>>>>>>>>>> is a
> > > > > > >>>> >>>>>>>>>>>>>>>>> combination of Dynamic Table + Continuous
> > > > > > >>>> >>> Query, and the use of
> > > > > > >>>> >>>>>>>>>>> Derived
> > > > > > >>>> >>>>>>>>>>>>>>>>> Table will not conflict with existing
> > > concepts,
> > > > > > >>>> >>> what do you
> > > > > > >>>> >>>>> think?
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> I feel confused with how it is further
> > with
> > > > > > >>>> >>> other components,
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>> examples provided feel like a standalone
> ETL
> > > > > > >>>> >>> job, could you
> > > > > > >>>> >>>>>>>>> provide in
> > > > > > >>>> >>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>> FLIP an example where the table is further
> > > used
> > > > > > >>>> >>> in subsequent
> > > > > > >>>> >>>>>>>>> queries
> > > > > > >>>> >>>>>>>>>>>>>>>>> (specially in batch mode).
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Thanks for your suggestion, I added how to
> > use
> > > > > > >>>> >>> Dynamic Table in
> > > > > > >>>> >>>>>>>>> FLIP
> > > > > > >>>> >>>>>>>>>>>>> user
> > > > > > >>>> >>>>>>>>>>>>>>>>> story section, Dynamic Table can be
> > referenced
> > > > > > >>>> >>> by downstream
> > > > > > >>>> >>>>>>>>> Dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>> Table
> > > > > > >>>> >>>>>>>>>>>>>>>>> and can also support OLAP queries.
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>> Ron
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>> Ron liu <ron9....@gmail.com>
> 于2024年3月23日周六
> > > > > > >>>> >>> 10:35写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Hi, Feng
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Thanks for your feedback.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Although currently we restrict users
> > from
> > > > > > >>>> >>> modifying the query,
> > > > > > >>>> >>>>> I
> > > > > > >>>> >>>>>>>>>>>>> wonder
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> if
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> we can provide a better way to help
> users
> > > > > > >>>> >>> rebuild it without
> > > > > > >>>> >>>>>>>>>>> affecting
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> downstream OLAP queries.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Considering the problem of data
> > consistency,
> > > > > > >>>> >>> so in the first
> > > > > > >>>> >>>>> step
> > > > > > >>>> >>>>>>>>> we
> > > > > > >>>> >>>>>>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> strictly limited in semantics and do not
> > > > > > >>>> >>> support modify the
> > > > > > >>>> >>>>> query.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> This is
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> really a good problem, one of my ideas
> is
> > to
> > > > > > >>>> >>> introduce a syntax
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> similar to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> SWAP [1], which supports exchanging two
> > > > > > >>>> >>> Dynamic Tables.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>  From the documentation, the
> definitions
> > > > > > >>>> >>> SQL and job
> > > > > > >>>> >>>>> information
> > > > > > >>>> >>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> stored in the Catalog. Does this mean
> that
> > > > > > >>>> >>> if a system needs to
> > > > > > >>>> >>>>>>>>> adapt
> > > > > > >>>> >>>>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Dynamic Tables, it also needs to store
> > > > > > >>>> >>> Flink's job information
> > > > > > >>>> >>>>> in
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> corresponding system?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> For example, does MySQL's Catalog need
> to
> > > > > > >>>> >>> store flink job
> > > > > > >>>> >>>>>>>>> information
> > > > > > >>>> >>>>>>>>>>>>> as
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> well?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Yes, currently we need to rely on
> Catalog
> > to
> > > > > > >>>> >>> store refresh job
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> information.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Users still need to consider how much
> > > > > > >>>> >>> memory is being used, how
> > > > > > >>>> >>>>>>>>>>> large
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> the concurrency is, which type of state
> > > > > > >>>> >>> backend is being used,
> > > > > > >>>> >>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> may need
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> to set TTL expiration.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Similar to the current practice, job
> > > > > > >>>> >>> parameters can be set via
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>> Flink
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> conf or SET commands
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> When we submit a refresh command, can
> we
> > > > > > >>>> >>> help users detect if
> > > > > > >>>> >>>>>>>>> there
> > > > > > >>>> >>>>>>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> any
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> running jobs and automatically stop them
> > > > > > >>>> >>> before executing the
> > > > > > >>>> >>>>>>>>> refresh
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> command? Then wait for it to complete
> > before
> > > > > > >>>> >>> restarting the
> > > > > > >>>> >>>>>>>>>>> background
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> streaming job?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Purely from a technical implementation
> > point
> > > > > > >>>> >>> of view, your
> > > > > > >>>> >>>>>>>>> proposal
> > > > > > >>>> >>>>>>>>>>> is
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> doable, but it would be more costly.
> Also
> > I
> > > > > > >>>> >>> think data
> > > > > > >>>> >>>>> consistency
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> itself
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> is the responsibility of the user,
> similar
> > > > > > >>>> >>> to how Regular Table
> > > > > > >>>> >>>>> is
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> now also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> the responsibility of the user, so it's
> > > > > > >>>> >>> consistent with its
> > > > > > >>>> >>>>>>>>> behavior
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> and no
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> additional guarantees are made at the
> > engine
> > > > > > >>>> >>> level.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Ron
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>> Ahmed Hamdy <hamdy10...@gmail.com>
> > > > > > >>>> >>> 于2024年3月22日周五 23:50写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Hi Ron,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Sorry for joining the discussion late,
> > > > > > >>>> >>> thanks for the effort.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> I think the base idea is great,
> however
> > I
> > > > > > >>>> >>> have a couple of
> > > > > > >>>> >>>>>>>>> comments:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> - I want to iterate on Timo's comments
> > > > > > >>>> >>> regarding the confusion
> > > > > > >>>> >>>>>>>>>>> between
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> "Dynamic Table" and current Flink
> > > > > > >>>> >>> "Table". Should the
> > > > > > >>>> >>>>>>>>> refactoring of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> system happen in 2.0, should we rename
> > it
> > > > > > >>>> >>> in this Flip ( as the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> suggestions
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> in the thread ) and address the
> holistic
> > > > > > >>>> >>> changes in a separate
> > > > > > >>>> >>>>>>>>> Flip
> > > > > > >>>> >>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> 2.0?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> - I feel confused with how it is
> further
> > > > > > >>>> >>> with other components,
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> examples provided feel like a
> standalone
> > > > > > >>>> >>> ETL job, could you
> > > > > > >>>> >>>>>>>>> provide
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> in the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> FLIP an example where the table is
> > > > > > >>>> >>> further used in subsequent
> > > > > > >>>> >>>>>>>>>>> queries
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> (specially in batch mode).
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> - I really like the standard of
> keeping
> > > > > > >>>> >>> the unified batch and
> > > > > > >>>> >>>>>>>>>>>>> streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> approach
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Best Regards
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Ahmed Hamdy
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> On Fri, 22 Mar 2024 at 12:07, Lincoln
> > Lee
> > > > > > >>>> >>> <
> > > > > > >>>> >>>>>>>>> lincoln.8...@gmail.com>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> wrote:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Hi Timo,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks for your thoughtful inputs!
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Yes, expanding the MATERIALIZED
> > > > > > >>>> >>> VIEW(MV) could achieve the
> > > > > > >>>> >>>>> same
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> function,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> but our primary concern is that by
> > > > > > >>>> >>> using a view, we might
> > > > > > >>>> >>>>> limit
> > > > > > >>>> >>>>>>>>>>>>> future
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> opportunities
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> to optimize queries through
> automatic
> > > > > > >>>> >>> materialization
> > > > > > >>>> >>>>> rewriting
> > > > > > >>>> >>>>>>>>>>> [1],
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> leveraging
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> the support for MV by physical
> > > > > > >>>> >>> storage. This is because we
> > > > > > >>>> >>>>>>>>> would be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> breaking
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> the intuitive semantics of a
> > > > > > >>>> >>> materialized view (a materialized
> > > > > > >>>> >>>>>>>>> view
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> represents
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> the result of a query) by allowing
> > > > > > >>>> >>> data modifications, thus
> > > > > > >>>> >>>>>>>>> losing
> > > > > > >>>> >>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> potential
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> for such optimizations.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> With these considerations in mind,
> we
> > > > > > >>>> >>> were inspired by Google
> > > > > > >>>> >>>>>>>>>>>>> Looker's
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Persistent
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Derived Table [2]. PDT is designed
> for
> > > > > > >>>> >>> building Looker's
> > > > > > >>>> >>>>>>>>> automated
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> modeling,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> aligning with our purpose for the
> > > > > > >>>> >>> stream-batch automatic
> > > > > > >>>> >>>>>>>>> pipeline.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Therefore,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> we are considering another
> candidate,
> > > > > > >>>> >>> Derived Table, the term
> > > > > > >>>> >>>>>>>>>>>>> 'derive'
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> suggests a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> query, and 'table' retains
> > > > > > >>>> >>> modifiability. This approach would
> > > > > > >>>> >>>>>>>>> not
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> disrupt
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> our current
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> concept of a dynamic table,
> preserving
> > > > > > >>>> >>> the future utility of
> > > > > > >>>> >>>>>>>>> MVs.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Conceptually, a Derived Table is a
> > > > > > >>>> >>> Dynamic Table + Continuous
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Query. By
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> introducing
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> a new concept Derived Table for this
> > > > > > >>>> >>> FLIP, this makes all
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> concepts to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> play
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> together nicely.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> What do you think about this?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> [1]
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://calcite.apache.org/docs/materialized_views.html__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j73_NFf4D5$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> [2]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://cloud.google.com/looker/docs/derived-tables*persistent_derived_tables__;Iw!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j7382-2zI3$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Lincoln Lee
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Timo Walther <twal...@apache.org>
> > > > > > >>>> >>> 于2024年3月22日周五 17:54写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Hi Ron,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> thanks for the detailed answer.
> > > > > > >>>> >>> Sorry, for my late reply, we
> > > > > > >>>> >>>>>>>>> had a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> conference that kept me busy.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> In the current concept[1], it
> > > > > > >>>> >>> actually includes: Dynamic
> > > > > > >>>> >>>>>>>>>>> Tables
> > > > > > >>>> >>>>>>>>>>>>> &
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> & Continuous Query. Dynamic
> > > > > > >>>> >>> Table is just an abstract
> > > > > > >>>> >>>>>>>>> logical
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> concept
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> This explanation makes sense to
> me.
> > > > > > >>>> >>> But the docs also say "A
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> continuous
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> query is evaluated on the dynamic
> > > > > > >>>> >>> table yielding a new
> > > > > > >>>> >>>>> dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> table.".
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> So even our regular CREATE TABLEs
> > > > > > >>>> >>> are considered dynamic
> > > > > > >>>> >>>>>>>>> tables.
> > > > > > >>>> >>>>>>>>>>>>> This
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> can also be seen in the diagram
> > > > > > >>>> >>> "Dynamic Table -> Continuous
> > > > > > >>>> >>>>>>>>> Query
> > > > > > >>>> >>>>>>>>>>>>> ->
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Dynamic Table". Currently, Flink
> > > > > > >>>> >>> queries can only be executed
> > > > > > >>>> >>>>>>>>> on
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Tables.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> In essence, a materialized view
> > > > > > >>>> >>> represents the result of
> > > > > > >>>> >>>>> a
> > > > > > >>>> >>>>>>>>>>>>> query.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Isn't that what your proposal does
> > > > > > >>>> >>> as well?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> the object of the suspend
> > > > > > >>>> >>> operation is the refresh task
> > > > > > >>>> >>>>> of
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> dynamic table
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> I understand that Snowflake uses
> > > > > > >>>> >>> the term [1] to merge their
> > > > > > >>>> >>>>>>>>>>>>> concepts
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> STREAM, TASK, and TABLE into one
> > > > > > >>>> >>> piece of concept. But Flink
> > > > > > >>>> >>>>>>>>> has
> > > > > > >>>> >>>>>>>>>>> no
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> concept of a "refresh task". Also,
> > > > > > >>>> >>> they already introduced
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> MATERIALIZED
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> VIEW. Flink is in the convenient
> > > > > > >>>> >>> position that the concept of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> materialized views is not taken
> > > > > > >>>> >>> (reserved maybe for exactly
> > > > > > >>>> >>>>>>>>> this
> > > > > > >>>> >>>>>>>>>>> use
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> case?). And SQL standard concept
> > > > > > >>>> >>> could be "slightly adapted"
> > > > > > >>>> >>>>> to
> > > > > > >>>> >>>>>>>>>>> our
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> needs. Looking at other vendors
> > > > > > >>>> >>> like Postgres[2], they also
> > > > > > >>>> >>>>> use
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> `REFRESH` commands so why not
> > > > > > >>>> >>> adding additional commands such
> > > > > > >>>> >>>>>>>>> as
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> DELETE
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> or UPDATE. Oracle supports "ON
> > > > > > >>>> >>> PREBUILT TABLE clause tells
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> database
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> to use an existing table
> > > > > > >>>> >>> segment"[3] which comes closer to
> > > > > > >>>> >>>>>>>>> what we
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> want
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> as well.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> it is not intended to support
> > > > > > >>>> >>> data modification
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> This is an argument that I
> > > > > > >>>> >>> understand. But we as Flink could
> > > > > > >>>> >>>>>>>>> allow
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> modifications. This way we are
> only
> > > > > > >>>> >>> extending the standard
> > > > > > >>>> >>>>> and
> > > > > > >>>> >>>>>>>>>>> don't
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> introduce new concepts.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> If we can't agree on using
> > > > > > >>>> >>> MATERIALIZED VIEW concept. We
> > > > > > >>>> >>>>> should
> > > > > > >>>> >>>>>>>>>>> fix
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> our
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> syntax in a Flink 2.0 effort.
> > > > > > >>>> >>> Making regular tables bounded
> > > > > > >>>> >>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> tables unbounded. We would be
> > > > > > >>>> >>> closer to the SQL standard with
> > > > > > >>>> >>>>>>>>> this
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> pave the way for the future. I
> > > > > > >>>> >>> would actually support this if
> > > > > > >>>> >>>>>>>>> all
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> concepts play together nicely.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> In the future, we can consider
> > > > > > >>>> >>> extending the statement
> > > > > > >>>> >>>>> set
> > > > > > >>>> >>>>>>>>>>>>> syntax
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> support the creation of multiple
> > > > > > >>>> >>> dynamic tables.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> It's good that we called the
> > > > > > >>>> >>> concept STATEMENT SET. This
> > > > > > >>>> >>>>>>>>> allows us
> > > > > > >>>> >>>>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> defined CREATE TABLE within. Even
> > > > > > >>>> >>> if it might look a bit
> > > > > > >>>> >>>>>>>>>>> confusing.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Regards,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> Timo
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://docs.snowflake.com/en/user-guide/dynamic-tables-about__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j73zexZBXu$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> [2]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://www.postgresql.org/docs/current/sql-creatematerializedview.html__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j73zbNhvS7$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> [3]
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://oracle-base.com/articles/misc/materialized-views__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j739xS1kvD$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> On 21.03.24 04:14, Feng Jin wrote:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Ron and Lincoln
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for driving this
> > > > > > >>>> >>> discussion. I believe it will
> > > > > > >>>> >>>>> greatly
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> improve
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> convenience of managing user
> > > > > > >>>> >>> real-time pipelines.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> I have some questions.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> *Regarding Limitations of
> > > > > > >>>> >>> Dynamic Table:*
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Does not support modifying
> > > > > > >>>> >>> the select statement after the
> > > > > > >>>> >>>>>>>>>>> dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> table
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> is created.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Although currently we restrict
> > > > > > >>>> >>> users from modifying the
> > > > > > >>>> >>>>>>>>> query, I
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> wonder
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> if
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> we can provide a better way to
> > > > > > >>>> >>> help users rebuild it without
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> affecting
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> downstream OLAP queries.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> *Regarding the management of
> > > > > > >>>> >>> background jobs:*
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> 1. From the documentation, the
> > > > > > >>>> >>> definitions SQL and job
> > > > > > >>>> >>>>>>>>>>> information
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> stored in the Catalog. Does this
> > > > > > >>>> >>> mean that if a system needs
> > > > > > >>>> >>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> adapt
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Dynamic Tables, it also needs to
> > > > > > >>>> >>> store Flink's job
> > > > > > >>>> >>>>>>>>> information in
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> corresponding system?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> For example, does MySQL's
> > > > > > >>>> >>> Catalog need to store flink job
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> information
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> as
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> well?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> 2. Users still need to consider
> > > > > > >>>> >>> how much memory is being
> > > > > > >>>> >>>>> used,
> > > > > > >>>> >>>>>>>>>>> how
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> large
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> the concurrency is, which type
> > > > > > >>>> >>> of state backend is being
> > > > > > >>>> >>>>> used,
> > > > > > >>>> >>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> may
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> need
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> to set TTL expiration.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> *Regarding the Refresh Part:*
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> If the refresh mode is
> > > > > > >>>> >>> continuous and a background job is
> > > > > > >>>> >>>>>>>>>>> running,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> caution should be taken with the
> > > > > > >>>> >>> refresh command as it can
> > > > > > >>>> >>>>>>>>> lead
> > > > > > >>>> >>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> inconsistent data.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> When we submit a refresh
> > > > > > >>>> >>> command, can we help users detect
> > > > > > >>>> >>>>> if
> > > > > > >>>> >>>>>>>>>>> there
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> any
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> running jobs and automatically
> > > > > > >>>> >>> stop them before executing
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> refresh
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> command? Then wait for it to
> > > > > > >>>> >>> complete before restarting the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> background
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> streaming job?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Feng
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Mar 19, 2024 at 9:40 PM
> > > > > > >>>> >>> Lincoln Lee <
> > > > > > >>>> >>>>>>>>>>>>> lincoln.8...@gmail.com
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> wrote:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Yun,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thank you very much for your
> > > > > > >>>> >>> valuable input!
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Incremental mode is indeed an
> > > > > > >>>> >>> attractive idea, we have also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> discussed
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> this, but in the current
> > > > > > >>>> >>> design,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> we first provided two refresh
> > > > > > >>>> >>> modes: CONTINUOUS and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> FULL. Incremental mode can be
> > > > > > >>>> >>> introduced
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> once the execution layer has
> > > > > > >>>> >>> the capability.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> My answer for the two
> > > > > > >>>> >>> questions:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Yes, cascading is a good
> > > > > > >>>> >>> question. Current proposal
> > > > > > >>>> >>>>>>>>> provides a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> freshness that defines a
> > > > > > >>>> >>> dynamic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> table relative to the base
> > > > > > >>>> >>> table’s lag. If users need to
> > > > > > >>>> >>>>>>>>>>> consider
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> end-to-end freshness of
> > > > > > >>>> >>> multiple
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> cascaded dynamic tables, he
> > > > > > >>>> >>> can manually split them for
> > > > > > >>>> >>>>> now.
> > > > > > >>>> >>>>>>>>> Of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> course, how to let multiple
> > > > > > >>>> >>> cascaded
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> or dependent dynamic tables
> > > > > > >>>> >>> complete the freshness
> > > > > > >>>> >>>>>>>>> definition
> > > > > > >>>> >>>>>>>>>>>>> in
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> simpler way, I think it can be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> extended in the future.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Cascading refresh is also a
> > > > > > >>>> >>> part we focus on discussing. In
> > > > > > >>>> >>>>>>>>> this
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> flip,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> we hope to focus as much as
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> possible on the core features
> > > > > > >>>> >>> (as it already involves a lot
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> things),
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> so we did not directly
> > > > > > >>>> >>> introduce related
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> syntax. However, based on the
> > > > > > >>>> >>> current design, combined
> > > > > > >>>> >>>>>>>>> with
> > > > > > >>>> >>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalog and lineage,
> > > > > > >>>> >>> theoretically,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> users can also finish the
> > > > > > >>>> >>> cascading refresh.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lincoln Lee
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Yun Tang <myas...@live.com>
> > > > > > >>>> >>> 于2024年3月19日周二 13:45写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Lincoln,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for driving this
> > > > > > >>>> >>> discussion, and I am so excited to
> > > > > > >>>> >>>>>>>>> see
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> this
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> topic
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> being discussed in the
> > > > > > >>>> >>> Flink community!
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  From my point of view,
> > > > > > >>>> >>> instead of the work of unifying
> > > > > > >>>> >>>>>>>>>>>>> streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> batch
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in DataStream API [1],
> > > > > > >>>> >>> this FLIP actually could make users
> > > > > > >>>> >>>>>>>>>>>>> benefit
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> from
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> one
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> engine to rule batch &
> > > > > > >>>> >>> streaming.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> If we treat this FLIP as
> > > > > > >>>> >>> an open-source implementation of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Snowflake's
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic tables [2], we
> > > > > > >>>> >>> still lack an incremental refresh
> > > > > > >>>> >>>>>>>>> mode
> > > > > > >>>> >>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> make
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ETL near real-time with a
> > > > > > >>>> >>> much cheaper computation cost.
> > > > > > >>>> >>>>>>>>>>> However,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> I
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> think
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this could be done under
> > > > > > >>>> >>> the current design by introducing
> > > > > > >>>> >>>>>>>>>>>>> another
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> refresh
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mode in the future.
> > > > > > >>>> >>> Although the extra work of incremental
> > > > > > >>>> >>>>>>>>> view
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> maintenance
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> would be much larger.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> For the FLIP itself, I
> > > > > > >>>> >>> have several questions below:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. It seems this FLIP does
> > > > > > >>>> >>> not consider the lag of
> > > > > > >>>> >>>>> refreshes
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> across
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> ETL
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> layers from ODS ---> DWD
> > > > > > >>>> >>> ---> APP [3]. We currently only
> > > > > > >>>> >>>>>>>>>>> consider
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> scheduler interval, which
> > > > > > >>>> >>> means we cannot use lag to
> > > > > > >>>> >>>>>>>>>>>>> automatically
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> schedule
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the upfront micro-batch
> > > > > > >>>> >>> jobs to do the work.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. To support the
> > > > > > >>>> >>> automagical refreshes, we should
> > > > > > >>>> >>>>> consider
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> lineage
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> in
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the catalog or somewhere
> > > > > > >>>> >>> else.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://cwiki.apache.org/confluence/display/FLINK/FLIP-134*3A*Batch*execution*for*the*DataStream*API__;JSsrKysrKw!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j7352JICzI$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [2]
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://docs.snowflake.com/en/user-guide/dynamic-tables-about__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j73zexZBXu$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [3]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://docs.snowflake.com/en/user-guide/dynamic-tables-refresh__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j735ghqpxk$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Yun Tang
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>> ________________________________
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> From: Lincoln Lee <
> > > > > > >>>> >>> lincoln.8...@gmail.com>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Sent: Thursday, March 14,
> > > > > > >>>> >>> 2024 14:35
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> To: dev@flink.apache.org <
> > > > > > >>>> >>> dev@flink.apache.org>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Subject: Re: [DISCUSS]
> > > > > > >>>> >>> FLIP-435: Introduce a New Dynamic
> > > > > > >>>> >>>>>>>>> Table
> > > > > > >>>> >>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Simplifying Data Pipelines
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Jing,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for your attention
> > > > > > >>>> >>> to this flip! I'll try to answer
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> following
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> questions.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. How to define query
> > > > > > >>>> >>> of dynamic table?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Use flink sql or
> > > > > > >>>> >>> introducing new syntax?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> If use flink sql, how
> > > > > > >>>> >>> to handle the difference in SQL
> > > > > > >>>> >>>>>>>>> between
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> batch processing?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> For example, a query
> > > > > > >>>> >>> including window aggregate based on
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> processing
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> time?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> or a query including
> > > > > > >>>> >>> global order by?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Similar to `CREATE TABLE
> > > > > > >>>> >>> AS query`, here the `query` also
> > > > > > >>>> >>>>>>>>> uses
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Flink
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> sql
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> doesn't introduce a
> > > > > > >>>> >>> totally new syntax.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> We will not change the
> > > > > > >>>> >>> status respect to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the difference in
> > > > > > >>>> >>> functionality of flink sql itself on
> > > > > > >>>> >>>>>>>>>>> streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> batch, for example,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the proctime window agg on
> > > > > > >>>> >>> streaming and global sort on
> > > > > > >>>> >>>>>>>>> batch
> > > > > > >>>> >>>>>>>>>>>>> that
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> you
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mentioned,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> in fact, do not work
> > > > > > >>>> >>> properly in the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> other mode, so when the
> > > > > > >>>> >>> user modifies the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> refresh mode of a dynamic
> > > > > > >>>> >>> table that is not supported, we
> > > > > > >>>> >>>>>>>>> will
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> throw
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> an
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> exception.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. Whether modify the
> > > > > > >>>> >>> query of dynamic table is allowed?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Or we could only
> > > > > > >>>> >>> refresh a dynamic table based on the
> > > > > > >>>> >>>>>>>>> initial
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> query?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Yes, in the current
> > > > > > >>>> >>> design, the query definition of the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic table is not
> > > > > > >>>> >>> allowed
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> to be modified, and you
> > > > > > >>>> >>> can only refresh the data based
> > > > > > >>>> >>>>>>>>> on
> > > > > > >>>> >>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> initial definition.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. How to use dynamic
> > > > > > >>>> >>> table?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The dynamic table seems
> > > > > > >>>> >>> to be similar to the materialized
> > > > > > >>>> >>>>>>>>>>> view.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Will
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> we
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> do
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> something like
> > > > > > >>>> >>> materialized view rewriting during the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> optimization?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> It's true that dynamic
> > > > > > >>>> >>> table and materialized view
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> are similar in some ways,
> > > > > > >>>> >>> but as Ron
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> explains
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> there are differences. In
> > > > > > >>>> >>> terms of optimization, automated
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> materialization discovery
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> similar to that supported
> > > > > > >>>> >>> by calcite is also a potential
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> possibility,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> perhaps with the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> addition of automated
> > > > > > >>>> >>> rewriting in the future.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lincoln Lee
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Ron liu <
> > > > > > >>>> >>> ron9....@gmail.com> 于2024年3月14日周四 14:01写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi, Timo
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Sorry for later
> > > > > > >>>> >>> response, thanks for your feedback.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Regarding your
> > > > > > >>>> >>> questions:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Flink has introduced
> > > > > > >>>> >>> the concept of Dynamic Tables many
> > > > > > >>>> >>>>>>>>> years
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> ago.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> How
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> does the term "Dynamic
> > > > > > >>>> >>> Table" fit into Flink's regular
> > > > > > >>>> >>>>>>>>> tables
> > > > > > >>>> >>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> how does it relate to
> > > > > > >>>> >>> Table API?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I fear that adding
> > > > > > >>>> >>> the DYNAMIC TABLE keyword could cause
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> confusion
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> users, because a
> > > > > > >>>> >>> term for regular CREATE TABLE (that can
> > > > > > >>>> >>>>>>>>> be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> "kind
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic" as well and
> > > > > > >>>> >>> is backed by a changelog) is then
> > > > > > >>>> >>>>>>>>>>> missing.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> Also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> given that we call
> > > > > > >>>> >>> our connectors for those tables,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> DynamicTableSource
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and DynamicTableSink.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> In general, I find
> > > > > > >>>> >>> it contradicting that a TABLE can be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> "paused" or
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "resumed". From an
> > > > > > >>>> >>> English language perspective, this
> > > > > > >>>> >>>>> does
> > > > > > >>>> >>>>>>>>>>>>> sound
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> incorrect. In my
> > > > > > >>>> >>> opinion (without much research yet), a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> continuous
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> updating trigger
> > > > > > >>>> >>> should rather be modelled as a CREATE
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> MATERIALIZED
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> VIEW
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (which users are
> > > > > > >>>> >>> familiar with?) or a new concept such
> > > > > > >>>> >>>>> as
> > > > > > >>>> >>>>>>>>> a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> CREATE
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> TASK
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (that can be paused
> > > > > > >>>> >>> and resumed?).
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> In the current
> > > > > > >>>> >>> concept[1], it actually includes: Dynamic
> > > > > > >>>> >>>>>>>>>>> Tables
> > > > > > >>>> >>>>>>>>>>>>> &
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Continuous Query.
> > > > > > >>>> >>> Dynamic Table is just an abstract
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> logical concept
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , which in its physical
> > > > > > >>>> >>> form represents either a table
> > > > > > >>>> >>>>> or a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> changelog
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> stream. It requires the
> > > > > > >>>> >>> combination with Continuous Query
> > > > > > >>>> >>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> achieve
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic updates of the
> > > > > > >>>> >>> target table similar to a
> > > > > > >>>> >>>>> database’s
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Materialized View.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> We hope to upgrade the
> > > > > > >>>> >>> Dynamic Table to a real entity
> > > > > > >>>> >>>>> that
> > > > > > >>>> >>>>>>>>>>> users
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> can
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> operate, which combines
> > > > > > >>>> >>> the logical concepts of Dynamic
> > > > > > >>>> >>>>>>>>>>> Tables +
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Continuous Query. By
> > > > > > >>>> >>> integrating the definition of tables
> > > > > > >>>> >>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> queries,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> it can achieve
> > > > > > >>>> >>> functions similar to Materialized Views,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> simplifying
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> users' data processing
> > > > > > >>>> >>> pipelines.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> So, the object of the
> > > > > > >>>> >>> suspend operation is the refresh
> > > > > > >>>> >>>>>>>>> task of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic table. The
> > > > > > >>>> >>> command `ALTER DYNAMIC TABLE
> > > > > > >>>> >>>>> table_name
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> SUSPEND
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> `
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> is actually a shorthand
> > > > > > >>>> >>> for `ALTER DYNAMIC TABLE
> > > > > > >>>> >>>>> table_name
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> SUSPEND
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> REFRESH` (if written in
> > > > > > >>>> >>> full for clarity, we can also
> > > > > > >>>> >>>>>>>>> modify
> > > > > > >>>> >>>>>>>>>>>>> it).
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. Initially, we also
> > > > > > >>>> >>> considered Materialized Views
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> , but ultimately
> > > > > > >>>> >>> decided against them. Materialized views
> > > > > > >>>> >>>>>>>>> are
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> designed
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> to enhance query
> > > > > > >>>> >>> performance for workloads that consist
> > > > > > >>>> >>>>> of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> common,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> repetitive query
> > > > > > >>>> >>> patterns. In essence, a materialized
> > > > > > >>>> >>>>> view
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> represents
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> the result of a query.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> However, it is not
> > > > > > >>>> >>> intended to support data modification.
> > > > > > >>>> >>>>>>>>> For
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lakehouse scenarios,
> > > > > > >>>> >>> where the ability to delete or
> > > > > > >>>> >>>>> update
> > > > > > >>>> >>>>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> is
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> crucial (such as
> > > > > > >>>> >>> compliance with GDPR, FLIP-2),
> > > > > > >>>> >>>>>>>>> materialized
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> views
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> fall short.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Compared to CREATE
> > > > > > >>>> >>> (regular) TABLE, CREATE DYNAMIC TABLE
> > > > > > >>>> >>>>>>>>> not
> > > > > > >>>> >>>>>>>>>>>>> only
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> defines metadata in the
> > > > > > >>>> >>> catalog but also automatically
> > > > > > >>>> >>>>>>>>>>> initiates
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> data refresh task based
> > > > > > >>>> >>> on the query specified during
> > > > > > >>>> >>>>> table
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> creation.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> It dynamically executes
> > > > > > >>>> >>> data updates. Users can focus on
> > > > > > >>>> >>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dependencies and data
> > > > > > >>>> >>> generation logic.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The new dynamic table
> > > > > > >>>> >>> does not conflict with the existing
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DynamicTableSource and
> > > > > > >>>> >>> DynamicTableSink interfaces. For
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> developer,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> all that needs to be
> > > > > > >>>> >>> implemented is the new
> > > > > > >>>> >>>>>>>>>>> CatalogDynamicTable,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> without changing the
> > > > > > >>>> >>> implementation of source and sink.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 5. For now, the FLIP
> > > > > > >>>> >>> does not consider supporting Table
> > > > > > >>>> >>>>> API
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> operations
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> on
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dynamic Table
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> . However, once the SQL
> > > > > > >>>> >>> syntax is finalized, we can
> > > > > > >>>> >>>>> discuss
> > > > > > >>>> >>>>>>>>>>> this
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> in
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> separate FLIP.
> > > > > > >>>> >>> Currently, I have a rough idea: the Table
> > > > > > >>>> >>>>>>>>> API
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> should
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> also introduce
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DynamicTable operation
> > > > > > >>>> >>> interfaces
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> corresponding to the
> > > > > > >>>> >>> existing Table interfaces.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The TableEnvironment
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> will provide relevant
> > > > > > >>>> >>> methods to support various
> > > > > > >>>> >>>>> dynamic
> > > > > > >>>> >>>>>>>>>>>>> table
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> operations. The goal
> > > > > > >>>> >>> for the new Dynamic Table is to
> > > > > > >>>> >>>>> offer
> > > > > > >>>> >>>>>>>>>>> users
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> an
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> experience similar to
> > > > > > >>>> >>> using a database, which is why we
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> prioritize
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SQL-based approaches
> > > > > > >>>> >>> initially.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> How do you envision
> > > > > > >>>> >>> re-adding the functionality of a
> > > > > > >>>> >>>>>>>>>>> statement
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> set,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> that
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> fans out to multiple
> > > > > > >>>> >>> tables? This is a very important
> > > > > > >>>> >>>>> use
> > > > > > >>>> >>>>>>>>>>> case
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> pipelines.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Multi-tables is indeed
> > > > > > >>>> >>> a very important user scenario. In
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> future,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> we can consider
> > > > > > >>>> >>> extending the statement set syntax to
> > > > > > >>>> >>>>>>>>> support
> > > > > > >>>> >>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> creation of multiple
> > > > > > >>>> >>> dynamic tables.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Since the early
> > > > > > >>>> >>> days of Flink SQL, we were discussing
> > > > > > >>>> >>>>>>>>>>> `SELECT
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> STREAM
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> FROM T EMIT 5
> > > > > > >>>> >>> MINUTES`. Your proposal seems to rephrase
> > > > > > >>>> >>>>>>>>>>> STREAM
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> EMIT,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> into other keywords
> > > > > > >>>> >>> DYNAMIC TABLE and FRESHNESS. But the
> > > > > > >>>> >>>>>>>>> core
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> functionality is
> > > > > > >>>> >>> still there. I'm wondering if we should
> > > > > > >>>> >>>>>>>>>>> widen
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> scope
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (maybe not part of
> > > > > > >>>> >>> this FLIP but a new FLIP) to follow
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> standard
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> more
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> closely. Making
> > > > > > >>>> >>> `SELECT * FROM t` bounded by default and
> > > > > > >>>> >>>>>>>>> use
> > > > > > >>>> >>>>>>>>>>>>> new
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> syntax
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for the dynamic
> > > > > > >>>> >>> behavior. Flink 2.0 would be the perfect
> > > > > > >>>> >>>>>>>>> time
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> this,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> however, it would
> > > > > > >>>> >>> require careful discussions. What do
> > > > > > >>>> >>>>> you
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> think?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The query part indeed
> > > > > > >>>> >>> requires a separate FLIP
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for discussion, as it
> > > > > > >>>> >>> involves changes to the default
> > > > > > >>>> >>>>>>>>>>> behavior.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://urldefense.com/v3/__https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/concepts/dynamic_tables__;!!IKRxdwAv5BmarQ!dVYcp9PUyjpBGzkYFxb2sdnmB0E22koc-YLdxY2LidExEHUJKRkyvRbAveqjlYFKWevFvmE1Z-j73477_wHn$
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Ron
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jing Zhang <
> > > > > > >>>> >>> beyond1...@gmail.com> 于2024年3月13日周三 15:19写道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi, Lincoln & Ron,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for the
> > > > > > >>>> >>> proposal.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I agree with the
> > > > > > >>>> >>> question raised by Timo.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Besides, I have some
> > > > > > >>>> >>> other questions.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. How to define
> > > > > > >>>> >>> query of dynamic table?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Use flink sql or
> > > > > > >>>> >>> introducing new syntax?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> If use flink sql,
> > > > > > >>>> >>> how to handle the difference in SQL
> > > > > > >>>> >>>>>>>>> between
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> batch processing?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> For example, a query
> > > > > > >>>> >>> including window aggregate based on
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> processing
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> time?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> or a query including
> > > > > > >>>> >>> global order by?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. Whether modify
> > > > > > >>>> >>> the query of dynamic table is allowed?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Or we could only
> > > > > > >>>> >>> refresh a dynamic table based on
> > > > > > >>>> >>>>> initial
> > > > > > >>>> >>>>>>>>>>>>> query?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. How to use
> > > > > > >>>> >>> dynamic table?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The dynamic table
> > > > > > >>>> >>> seems to be similar with materialized
> > > > > > >>>> >>>>>>>>> view.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> Will
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> we
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> do
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> something like
> > > > > > >>>> >>> materialized view rewriting during the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> optimization?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Jing Zhang
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Timo Walther <
> > > > > > >>>> >>> twal...@apache.org> 于2024年3月13日周三 01:24写
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 道:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Lincoln & Ron,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> thanks for
> > > > > > >>>> >>> proposing this FLIP. I think a design
> > > > > > >>>> >>>>> similar
> > > > > > >>>> >>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> what
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> you
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> propose has been
> > > > > > >>>> >>> in the heads of many people, however,
> > > > > > >>>> >>>>>>>>> I'm
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> wondering
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> how
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this will fit
> > > > > > >>>> >>> into the bigger picture.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I haven't deeply
> > > > > > >>>> >>> reviewed the FLIP yet, but would like
> > > > > > >>>> >>>>> to
> > > > > > >>>> >>>>>>>>>>> ask
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> some
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> initial questions:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Flink has
> > > > > > >>>> >>> introduced the concept of Dynamic Tables many
> > > > > > >>>> >>>>>>>>>>> years
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> ago.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> How
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> does the term
> > > > > > >>>> >>> "Dynamic Table" fit into Flink's regular
> > > > > > >>>> >>>>>>>>>>> tables
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> how does it
> > > > > > >>>> >>> relate to Table API?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I fear that
> > > > > > >>>> >>> adding the DYNAMIC TABLE keyword could
> > > > > > >>>> >>>>> cause
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> confusion
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> users, because a
> > > > > > >>>> >>> term for regular CREATE TABLE (that
> > > > > > >>>> >>>>> can
> > > > > > >>>> >>>>>>>>> be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> "kind
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> of
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dynamic" as well
> > > > > > >>>> >>> and is backed by a changelog) is then
> > > > > > >>>> >>>>>>>>>>>>> missing.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Also
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> given that we
> > > > > > >>>> >>> call our connectors for those tables,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DynamicTableSource
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>> DynamicTableSink.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> In general, I
> > > > > > >>>> >>> find it contradicting that a TABLE can be
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> "paused"
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> or
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "resumed". From
> > > > > > >>>> >>> an English language perspective, this
> > > > > > >>>> >>>>>>>>> does
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> sound
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> incorrect. In my
> > > > > > >>>> >>> opinion (without much research yet), a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> continuous
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> updating trigger
> > > > > > >>>> >>> should rather be modelled as a CREATE
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> MATERIALIZED
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> VIEW
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (which users are
> > > > > > >>>> >>> familiar with?) or a new concept such
> > > > > > >>>> >>>>>>>>> as a
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> CREATE
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TASK
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (that can be
> > > > > > >>>> >>> paused and resumed?).
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> How do you
> > > > > > >>>> >>> envision re-adding the functionality of a
> > > > > > >>>> >>>>>>>>>>> statement
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> set,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> that
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> fans out to
> > > > > > >>>> >>> multiple tables? This is a very important
> > > > > > >>>> >>>>> use
> > > > > > >>>> >>>>>>>>>>> case
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> pipelines.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Since the early
> > > > > > >>>> >>> days of Flink SQL, we were discussing
> > > > > > >>>> >>>>>>>>>>> `SELECT
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> STREAM
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> FROM T EMIT 5
> > > > > > >>>> >>> MINUTES`. Your proposal seems to rephrase
> > > > > > >>>> >>>>>>>>>>> STREAM
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> EMIT,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> into other
> > > > > > >>>> >>> keywords DYNAMIC TABLE and FRESHNESS. But
> > > > > > >>>> >>>>> the
> > > > > > >>>> >>>>>>>>>>> core
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> functionality is
> > > > > > >>>> >>> still there. I'm wondering if we
> > > > > > >>>> >>>>> should
> > > > > > >>>> >>>>>>>>>>> widen
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> scope
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (maybe not part
> > > > > > >>>> >>> of this FLIP but a new FLIP) to follow
> > > > > > >>>> >>>>>>>>> the
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>> standard
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> more
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> closely. Making
> > > > > > >>>> >>> `SELECT * FROM t` bounded by default
> > > > > > >>>> >>>>> and
> > > > > > >>>> >>>>>>>>> use
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> new
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> syntax
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> for the dynamic
> > > > > > >>>> >>> behavior. Flink 2.0 would be the
> > > > > > >>>> >>>>> perfect
> > > > > > >>>> >>>>>>>>>>> time
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> for
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> this,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> however, it would
> > > > > > >>>> >>> require careful discussions. What do
> > > > > > >>>> >>>>>>>>> you
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> think?
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Regards,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Timo
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> On 11.03.24
> > > > > > >>>> >>> 08:23, Ron liu wrote:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi, Dev
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lincoln Lee
> > > > > > >>>> >>> and I would like to start a discussion
> > > > > > >>>> >>>>> about
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> FLIP-435:
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Introduce a
> > > > > > >>>> >>> New Dynamic Table for Simplifying Data
> > > > > > >>>> >>>>>>>>>>>>> Pipelines.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This FLIP is
> > > > > > >>>> >>> designed to simplify the development of
> > > > > > >>>> >>>>>>>>> data
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> processing
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> pipelines.
> > > > > > >>>> >>> With Dynamic Tables with uniform SQL
> > > > > > >>>> >>>>>>>>> statements
> > > > > > >>>> >>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> freshness,
> > > > > > >>>> >>> users can define batch and streaming
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>> transformations
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> to
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> data in the
> > > > > > >>>> >>> same way, accelerate ETL pipeline
> > > > > > >>>> >>>>>>>>> development,
> > > > > > >>>> >>>>>>>>>>>>> and
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> manage
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> task
> > > > > > >>>> >>> scheduling automatically.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> For more
> > > > > > >>>> >>> details, see FLIP-435 [1]. Looking forward to
> > > > > > >>>> >>>>>>>>> your
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> feedback.
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> [1]
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best,
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Lincoln & Ron
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>>>
> > > > > > >>>> >>>>>>>>>
> > > > > > >>>> >>>>>>>
> > > > > > >>>> >>>>>
> > > > > > >>>> >>>
> > > > > > >>>> >>
> > > > > > >>>> >
> > > > > > >>>>
> > > > > > >>>>
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to