前置き
BigQuery Workflows が Preview になりました。
機能としては公式ドキュメントに次のようなことが書いてあります。
ワークフローをスケジュールして、指定した時間と頻度で自動的に実行することができます。
ワークフローを使用して、コードアセットの実行をスケジュールできます。例えば、SQL クエリを毎日実行し、最新のソース データでテーブルを更新するようスケジュールできます。
複数のコードアセットを持つワークフローでは、実行順序を定義します。例えば、機械学習モデルをトレーニングする場合、SQLクエリでデータを準備し、後続のノートブックでそのデータを使ってモデルをトレーニングするワークフローを作成できます。
Workflows are powered by Dataform.
と書いてあり、Dataform のようにクエリのワークフローを組める上に notebook も実行できるようなイメージでしょうか。
僕個人がデータエンジニアとして使うかどうかは怪しいのですが、社内の分析チームにおすすめできそうな気がしたので試してみることにしました。
概要
公式ドキュメントに書いてあることを抜粋します。
できること
- notebook と SQL クエリをタスクとするワークフローの構成
- スケジューリング
notebook が実行できるところが Dataform と差別化されていて良さそうです。
制限事項
- 既存の notebook や SQL クエリをワークフローに追加することはできない
- 選択したワークフローへのアクセスを他のユーザーに許可することはできない
- ワークフローは Google Cloud コンソールでのみ利用できる
他のユーザーにアクセスを許可できないのがけっこうしんどそうです。
試しにワークフローを作成したアカウントと別のアカウントで同じ画面を見比べて見ましたが確かにワークフローが表示されませんでした。
ユースケースとしてもともとイメージしていたのが、分析チームが作成したワークフローをそのまま渡されて、商用利用できるようにシステム構築するための設計に役立てることだったのですが、そのような用途には使えなさそうです。
試してみた
workflows の作り方はこちらのドキュメントにまとまっています。
依存関係の定義
適当なサンプルのクエリと notebook を作成して依存関係を定義しました。
作り方は GUI からポチポチやるだけで簡単すぎたので割愛します。
次のように 1 つのノードから複数に分岐することはできますが、複数の分岐から1つのノードに遷移するような依存関係は作れなさそうでした。
実行履歴
ワークフローを実行すると実行時間を見ることができます。 Notebook は print するだけでの簡単なコードですがオーバーヘッドがかかるようです。
notebook の実行結果
notebook の実行結果は事前に指定したバケットに保存されます。
こんな感じに実行結果が出ています。
その他細かいことは公式ドキュメントをご確認ください。
感想
notebook を実行できるワークフローを手軽に構築できることは可能性を感じるものの、他のユーザーがアクセスできない点がチームワークするには厳しいと思いました。
現時点では個人開発なら使えそうという感触でした。
まだ Preview 機能なので今後のアップデートに期待します。