Hi, You have basically a motivating example between Temporal Table Joins [1]. Please take a look at them.
Piotrek [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/temporal_tables.html <https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/temporal_tables.html> > On 20 Jan 2020, at 17:02, Dominik Wosiński <wos...@gmail.com> wrote: > > Hello, > I wanted to ask whether the idea and the general concept that I have is > correct or if there is anything better in Flink to use. > > Say, I that I have 3 different streams : > > - currency_codes, which has the name of the currency. It has the > following fields (*currency_iso_code, tst, currency_name)* > - exchange_rate, which is a rarely changing stream that has data bout > exchange rates for different currencies. It has the following > fields (*currency_iso_code, > tst, rate*) > - fares, which represents taxi fares. It has the following fields > (*currency_iso_code, > tst, price*) > > Generally, let's assume that this is the simple system that allows drivers > to charge clients in different currencies, but in the end, we want to have > all calculations in USD, but we want to have the *name* of the original > currency. > > The current idea that I have is that since *currency_codes* have the names > of the currencies and it does not change frequently (say It will change > once a month tops) we should use this as a *BroadcastState *to be able to > join it with *exchange_rate*. After that, when we have the name of the > foreign currency and the exchange rate, we can use a LATERAL TABLE join to > join it with Fares. > > The question is, whether my assumptions are correct and if there is any > better idea to solve this problem? > > Thanks in advance, > Best Regards, > Dom.