Google Dataflow/Beamのlead/lag関数のようなSQLを実行する方法を探しています。 SQLで行われていれば、私の場合、それはDataflow(Beam)でSQLのリード/ラグ関数を実行できるトランスフォームの作成方法
ビーム内lead(balance, 1) over(partition by orderId order by order_Date)
ようになり、我々は、入力されたテキストファイルを解析し、データを保持するクラスClient_Orders
を作成します。簡単にするため、このクラスのメンバーはorderId
、order_Date
およびbalance
としましょう。そして、我々はPCollectionsビームにおける
PCollection <KV<String, Iterable<Client_Orders>>> mainCollection = pipeline.apply(TextIO.Read.named("Reading input file")
.from(options.getInputFilePath()))
.apply(ParDo.named("Extracting client order terms from file") // to produce Client_Orders object
.apply('create KV...", GroupByKey.<String, Client_Orders>create());
にKVを構築することによりorderId
でパーティションを作成し、私たちは、ウィンドウを行うことができます知っているが、それは期間Windows.of(Duration.standardDays(n))
の面でウィンドウサイズを設定するには、一般的には必要ですが、それはしませんこの場合、私はorder_Date
を使用してPCollectionを繰り返す必要がありますか?
ありがとう、@ケン、私は試してみます。後で更新します。 – bignano
それはあまりにも大きくない場合、どのようにメモリ内のキーごとのソートを行うのだろうか? – bignano
こんにちは@Kenn、私はこの 'GroupByKey.SortValuesByTimestamp'を見つけました。これが私が必要とするものであれば、私はorder_Dateで注文するつもりですか?ありがとう –
bignano