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