社内でデータ基盤を作っており、データの加工のしやすさだったり、書きやすさだったりでPythonで書き直すことができるか調べてみました。
調べた限りでは使いたい機能は既にサポートされていそうです。
Dynamic Destinations
テーブル名を参照して動的にBQに書き込む際に利用します。Pythonでも既に使えるようになってそう。
https://beam.apache.org/releases/pydoc/2.23.0/apache_beam.io.gcp.bigquery.html#writing-data-to-bigquery
https://beam.apache.org/releases/pydoc/2.23.0/apache_beam.io.gcp.bigquery.html#apache_beam.io.gcp.bigquery.WriteToBigQuery
https://github.com/apache/beam/pull/7677/files
↓ このドキュメントは更新されてないけど
https://beam.apache.org/documentation/io/built-in/google-bigquery/#using-dynamic-destinations
メッセージの重複排除
サポート済み
id_label: The attribute on incoming Pub/Sub messages to use as a unique record identifier. When specified, the value of this attribute (which can be any string that uniquely identifies the record) will be used for deduplication of messages. If not provided, we cannot guarantee that no duplicate data will be delivered on the Pub/Sub stream. In this case, deduplication of the stream will be strictly best effort.
https://beam.apache.org/releases/pydoc/2.23.0/_modules/apache_beam/io/gcp/pubsub.html
Dataflow AI Platform integration patterns
ログ収集基盤完了後だと思うが、RTMとかである程度使えそう。Dataflowからクエリ投げられるのでBigQuery MLを使っても良いかもしれない。
https://beam.apache.org/documentation/patterns/ai-platform/
アプローチ 1: AI Platform オンライン予測を使用した Dataflow
BigQuery ML