BigQuery workflowsがPreviewになったから試してみた

BigQuery workflowsがPreviewになったから試してみた

Clock Icon2024.09.26

Google Cloud Next’24でも発表されたBigQuery workflowsがプレビューになりました。

You can now create workflows to execute code assets in sequence at a scheduled time. This feature is in Preview.

https://cloud.google.com/bigquery/docs/release-notes#September_23_2024

Google Cloud Next’24でBigQuery workflowsが発表された時の弊社ブログはこちらです。
https://dev.classmethod.jp/articles/bigquery-google-cloud-next-24/#BigQuery%2520workflows%25EF%25BC%2588Preview%25EF%25BC%2589

本記事では、プレビューになったBigQuery workflowsについて機能概要や制限、実際に動作させてみた所感などをまとめてみました。
興味がある方は読んでみてください。

機能概要

BigQuery workflowsはその名の通りワークフロー形式で、SQLかNotebookを手動・またはスケジュール実行することができる機能となります。

スクリーンショット 2024-09-26 19.46.59

ワークフローは、以下の要素で構成されます

  • Notebook
  • SQL

ワークフローは指定した時間と頻度で自動的に実行されるようにスケジュールできます。
スクリーンショット 2024-09-26 19.49.15

スケジューラで設定可能な項目は以下となります。

項目 概要
スケジュール名 スケジュールの名称
サービスアカウント ワークフローを実行するサービスアカウント
Cloud Storageバケット Notebook実行結果保存先バケット※Notebookを設定している場合のみ
スケジュールの頻度 毎日、毎週、毎月、カスタム(cron式)から選択可
タイムゾーン タイムゾーン

Notebookを実行するランタイムはStandard E2 Runtime(4 vCPU, 16GB RAM)で固定のようです。

また、ワークフローはDataformによって実行されるようです。

Workflows are powered by Dataform.(ワークフローはDataformによって提供される)

引用:https://cloud.google.com/bigquery/docs/workflows-introduction

制限

以下の制限があるようです。

  • 既存のノートブックやSQLクエリをワークフローに追加することはできません。ワークフロータスクを追加するには、ワークフロー内で新しいノートブックまたはSQLクエリを作成する必要があります。
  • 特定のワークフローへのアクセス権を他のユーザーに付与することはできません。
  • ワークフローはGoogle Cloudコンソールでのみ利用可能です。
  • ワークフローを作成した後に、そのワークフローを保存するリージョンを変更することはできません。詳細については、「コード資産のデフォルトリージョンを設定する」を参照してください。

https://cloud.google.com/bigquery/docs/workflows-introduction#limitations

コンソールでのみ利用可能、他のユーザからアクセスできないという点は少し残念に感じてしまいます。

クォータに関してはDataformのものが適用されます。
https://cloud.google.com/dataform/docs/quotas?hl=ja

料金

SQLだけであればBigQueryのコンピューティング・ストレージ料金。Notebookを含む場合はNotebookを実行するインスタンス費用(Standard E2)が発生するようです。あとはCloud Loggingの料金。
以下はリファレンスの引用となります。

ワークフロータスクの実行には、BigQueryの計算料金とストレージ料金が発生します。
また、Notebookを含むワークフローでは、デフォルトのマシンタイプに基づくColab Enterpriseのランタイム料金が発生します。
価格の詳細については、Colab Enterpriseの価格を参照してください。各BigQueryワークフローの実行は、Cloud Loggingを使用してログに記録されます。ロギングはBigQueryワークフローの実行に対して自動的に有効化され、Cloud Loggingの課金料金が発生する場合があります。 詳細については、Cloud Loggingの価格を参照してください。

https://cloud.google.com/bigquery/docs/workflows-introduction#pricing

ためしてみた

SQLとNotebookを実行するワークフローを作成してみました。
BigQueryのエクスプローラを開くと、ワークフローのアイコンが追加されています。
スクリーンショット 2024-09-26 20.26.04

ワークフローを押下すると、以下の画面になるので開始を押下します。
スクリーンショット 2024-09-26 20.27.18

タスクを追加を押下するとクエリまたはノートブックのどちらかを選択することができます。
スクリーンショット 2024-09-26 20.28.38

クエリを押下します。押下すると画面上にQuery task(xxxx)というアイコンが表示されます。
スクリーンショット 2024-09-26 20.30.10

画面右側EDIT QUERYを押下するとクエリを設定することができます。
スクリーンショット 2024-09-26 21.59.11

テスト用なので1を表示するだけの簡素なSQLを実装しました。
クエリを保存を押下して閉じます。

ワークフローを実行するためにはサービスアカウントなどの設定が必要です。
画面上部の設定を押下して設定画面へ移動します。
サービスアカウントや処理を実行するリージョンを選択します。
(Notebookを設定していないのでNotebook optionsは設定不要です)
スクリーンショット 2024-09-26 22.01.44

BigQuery workflowsを実行するサービスアカウントはDataformの権限が必要となります。
Dataformの実行権限に関しては以下のリファレンスをご確認ください。
https://cloud.google.com/dataform/docs/required-access?hl=ja#about-service-accounts

画面上部の実行を押下するとワークフローが実行されます。
実行押下後、実行数を押下すると実行したワークフローの履歴を見ることができます。
スクリーンショット 2024-09-26 22.10.00

実行履歴を開いていくと詳細を表示から実行した結果を見ることができます。
スクリーンショット 2024-09-26 22.12.44

実行結果
スクリーンショット 2024-09-26 22.14.26

続いて今度はNotebookも追加してみます。
タスクを追加からノートブックを選択します。

スクリーンショット 2024-09-26 22.15.45

2つ目のタスクを追加したのでどちらかのタスクをクリックすると次の後に実行を押下すると
もう片方のタスクが表示されるようになっています。
スクリーンショット 2024-09-26 22.15.45

もう片方のタスクを設定してみます。
スクリーンショット 2024-09-26 22.18.49

依存関係が設定されました。
先ほど設定でサービスアカウントなどを設定しましたが、Notebook追加後に設定にビックリマークがつくようになったかと思います。
これはNotebookを追加したためNotebook optionsを設定する必要が出てきたためです。
スクリーンショット 2024-09-26 22.20.35

設定を開いて適当なCloud Storageバケットを設定する必要があります。
設定したCloud Storageバケットには、ワークフローを実行後にNotebookのコードと結果が格納されます。
スクリーンショット 2024-09-26 22.25.42

SQLのタスクの時と同様にタスクを選択してEDITを押下するとNotebookを作成することができます。
スクリーンショット 2024-09-26 22.27.52

コードを追加したり、テキストを追加したりできます。
ランタイムに接続するとColab Enterpriseランタイムが立ち上がり費用が発生するので注意が必要です。
スクリーンショット 2024-09-26 22.29.42
Standard E2の費用が発生します。詳しくは料金表をご参照ください。
https://cloud.google.com/colab/pricing?hl=ja

デフォルト設定では17時間後まで立ち上がったままなので検証のみで不要な方はColab Enterpriseのコンソールから削除しましょう。
スクリーンショット 2024-09-26 22.35.04

Notebookを含んだワークフローの実行方法は先ほどのSQLと同様なので割愛します。

まとめ

使用してみた感覚としては、スケジュールドクエリとDataformの中間の機能のように感じました。
スケジュールドクエリでは難しいけどDataformを使うほどではない、という時に役立ちそうだなと。
ただ、現状では作成したワークフローに対して他のユーザからアクセスできないという点は少し残念だなと思いました。個人単位でしか管理できないのではチーム開発ではなかなか運用に取り入れるのは難しいなと。これはGAになるまでに変わると良いなと思います。
ワークフローを組むGUIはさくさく動いてとっても気持ちいいものでしたしGAになるのがとても楽しみです。
Nextで発表があったときはdata canvas、data preparationなどのタスクをワークフローに組み込めたり、DataformやCloud Composerにエクスポートすることもできる様子だったのでこれから機能追加があるのかもしれません。

それではまた。ナマステー

参考

https://cloud.google.com/bigquery/docs/workflows-introduction

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.