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