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 > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>> > > >>>> >>>>>>>>>>>>> > > >>>> >>>>>>>>>>> > > >>>> >>>>>>>>> > > >>>> >>>>>>> > > >>>> >>>>> > > >>>> >>> > > >>>> >> > > >>>> > > > >>>> > > >>>> > > >