LoginSignup
1

More than 3 years have passed since last update.

Cloud Dataflow SQL眺めてみた

Posted at
  • 使ってみた・ドキュメント眺めただけです
  • Cloud Dataflow SQLはアルファです(2020/02時点)

Cloud Dataflow SQLとは

  • BigQueryのUIから、Cloud Dataflowジョブを作成する機能です
  • SQLを書くだけで、Pub/Sub・BigQuery・Cloud Storageのデータを組み合わせて、BigQueryのテーブルに書き出せます(※)
  • 内部的にはBeam SQLで処理しているらしいです

※ チュートリアルはPub/SubとBigQueryのJOINですが、リファレンスではPub/Subのメッセージ同士のJOINをしています

使ってみる

チュートリアルでは、以下の作業を行います:

  1. BigQueryのテーブル作成・データ登録(通常のBigQueryで使う時と同じです)
  2. Data Catalogに、Pub/Subメッセージの情報を登録
  3. BigQuery UIから、Pub/SubトピックをDataflowソースとして登録
  4. BigQuery UIから、SQLを実行
  5. Pub/Subメッセージをpublish

Dataflowジョブの開始時にサブスクリプションが作られ、そこからメッセージがpullされます。ジョブ実行前にpublishされたメッセージは無視されるので、気をつけませう。

制限

現時点で、結構制限があります。

  • 読み込みはPub/Sub・BigQuery・GCS、書き込みはBigQueryだけ
    • (日本語版ドキュメントだとGCSの記載はないですが、英語版だと可能とあります)
    • 普通のBeam/Dataflowはより多くのサービスと接続(S3とかDatastoreとか)出来ます
  • GCSファイルはヘッダーありのCSVのみ
  • Pub/SubメッセージはJSON、かつスキーマが事前定義されている
  • Dataflow workerのスケールのコントロールは出来ない
    • 上限設定出来ないのは怖いかも
  • Dataflow jobをdrain出来ない
    • ただし、Dataflow画面からはdrain選べ、停止も出来ます‥保証してないという意味?

出来ないとは書いていないが、出来なさそうな点

  • 書き出し先のデータセット・テーブル名は固定?
    • Beam/Dataflowでは、メッセージの中身に応じて書き込み先を変更することが出来ます(Dynamic Destinationという機能)

SQL

Dataflow SQLは、BigQueryと同じくZetaSQLをベースとしていますが、いくつか違いがあるようです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1