BigQuery Studio 推しの新機能 6 選
はじめに
Google Cloud Champion Innovators Advent Calendar 2023 の 20 日目の記事です。
三度の飯より BigQuery を愛する筆者が最近注目している新機能をご紹介します。
執筆時点でプレビューの機能もあり、今後変更される可能性もありますことをご留意ください。
ワンストップでデータの分析からML開発を可能にするソリューションである BigQuery が BigQuery Studio としてさらに進化を重ねるリリースが、2023年8月29日に発表されました。
そして、Stored procedures for Apache Spark が 2023年10月19日に登録不要のプレビューとして使えるようになりました。(元は 2022年10月11日に要登録のプレビューとして登場)
従来からある機能も含めて、本記事で以下の推しポイントを紹介していきます。
- BigQuery DataFrames
- BigQuery Notebook
- BigQyery PySpark Procedure
- Duet AI によるコーディング支援機能
- Dataform により Notebook や クエリのバージョン履歴管理可能に
- Dataplex により データプロファイル・データクオリティを確認可能に
BigQuery DataFrames
BigQuery SQL では対応できない(難しい)処理は、Python で対応することがあります。そもそも SQL より Ptyhon の方が使い慣れているという方もいらっしゃるでしょう。
この機能は、BigQuery にあるデータを Python DataFrame ライクに扱いつつも、その処理は BigQuery のエンジンを使うというものです。Python 実行環境にデータをダウンロードすることなく集計・分析ができるようになるため、ビッグデータをローカルで扱うのに苦労していた方には嬉しい機能です。
しかも、ML の開発もできちゃいます。Min-Max スケーラー・標準化・One-Hot エンコーダーなどの前処理からモデルトレーニング、さらには PaLM2 を使ってテキスト生成・Embedding まで、幅広いモジュールが用意されています。
BigQuery Notebook
BigQuery SQL では対応できない(難しい)処理は、Python で対応することがあります。そもそも SQL より Ptyhon の方が使い慣れている~(以下略
これまでは Colab や Vertex AI Workbench で Notebook インスタンスを作成して開発するといった手段を取っていましたが、この機能の追加によって BigQuery コンソール画面から直接 One-click で Notebook (Colab Enterprise)を開いて実行できるようになりました。
Python コード、SQL クエリ、Markdown テキストを組み合わせて、データを探索、分析、可視化することができます。
画面を移動することなくシームレスに開発ができるようになり、個人的にはとても有難いです。
上述の BigQuery DataFrames も勿論サポート。
BigQuery PySpark Procedure
BigQuery SQL では対応できない(難しい)処理は、Python で(以下略
これまで Python プログラムを Cloud Functions や Cloud Run にデプロイしてから、それらをリモート関数として BigQuery から呼び出すことはできましたが、大規模計算に対応させるためにはかなりの工夫が必要でした。
BigQuery PySpark は、その名の通り BigQuery と PySpark を組み合わせたサービスで、BigQuery のデータを Python から直接処理するプロシージャを書くことができます。これも Notebook 同様にコンソールから One-click で立ち上げることができます。
PySpark は、Apache Spark を Python から利用するためのフレームワークです。Python のライブラリとして提供されており、Python のコードから Spark の機能を利用することができます。
そもそも Spark って何ぞやと言う方向けに説明すると、Spark は Apache Software Foundation によって開発されている分散処理フレームワークです。Hadoop MapReduce の後継として開発され、MapReduce よりも高速でスケーラブルな処理を実現しています。
Spark は、以下の特徴を備えています。
- 高速な処理:In-memory 処理が可能であり、高速な処理を実現しています。
- スケーラブルな処理:分散処理に対応しており、大規模なデータ処理に適しています。
- 多様な処理:MapReduce に加えて、SQL、Streaming、機械学習など、さまざまな処理に対応しています。
BigQuery PySpark はまさに「鬼に金棒」です。
Duet AI によるコーディング支援機能
Duet AI for BigQuery により、コーディング支援が可能となりました。
Bard や Generative AI Studio 等で聞いてからコピペして、という手間なく自然な流れでコーディングの支援をしてもらえるのが嬉しいポイントです。
できることは以下の3つ。いずれも ON/OFF の切り替えができます。
- SQL 文の補完 Auto-completion
- たぶん一番使うであろう機能がこちら。クエリを書いていくと先を予測して補完すべき内容を候補として出してくれます。例えば、ある値の平均値を出したい時に GROUP BY 句が必要と判断された場合、自動的に GRUOP BY 句以下を書いてくれます。これにより単純にコーディング スピードが上がるだけでなく、デバッグの手間も大きく削減されます。
- SQL 文の生成 Auto-generation
- SQL 初心者におススメなのがこの機能。コメントアウト内に生成してほしいクエリのプロンプトを書き、Enter/Return を押すことでクエリの提案が記述されます。複数候補がある場合は選択し、OKであれば TAB を押して決定。日本語でのリクエストも可能です。
- SQL 文の説明 Explanation
- 他の人が書いたクエリ、昔の自分が作ったクエリを読み解くのが大変ってあるあるだと思います。そんな時に使えるのが、クエリの処理内容を文章で解説してくれるのがこの機能。説明してほしい範囲を選択して、左のペンマークから解説をお願いできます。
また、BigQuery Notebook においても、コード補完・生成が使えます。
Dataform により Notebook や クエリのバージョン履歴管理可能に
Dataform はフルマネージド データパイプライン管理サービスです。データ統合の ELT(抽出、読み込み、変換)プロセスにおける Transform を管理することができ、テーブル間の依存関係を維持・可視化しながらテーブルの開発・テスト・デプロイすることが可能です。
スケジューラー機能を持ち、サーバーレスのため基盤管理は不要であること、そして現時点において無償で利用できるというのは嬉しい点です。
そしてさらに、BigQuery Studio の新機能として Notebook や クエリのバージョン履歴管理が可能となりました。ここは公式ドキュメントも事例もほとんど見られなかったので、色々試してみて分かったら別の機会でお伝えしていきます。
この機能により、共同開発のしやすさもグンと上がると期待しています。
Dataplex により データプロファイル・データクオリティを確認可能に
Dataplex はデータのメタ管理ツールで、組織全体で様々な場所にデータが保存されていても、データサイロ全体で一元化されたポリシーによる統制管理、検索、データ品質やリネージを確認することができます。
その機能により、BigQuery でデータ検索・データ プロファイリング・データ品質のチェックが可能となりました。
これまでもデータの中身をスキーマや詳細、プレビューで確認することはできましたが、それぞれのカラムの Null の割合がどれくらいになっているか、平均・最小・最大値はどれくらいか、といったことを確認するにはクエリを実行する必要がありました。
データプロファイルでは各カラムに対して以下のような内容が集計され、一覧で確認することができるようになります。
-
Null percentage
-
Unique percentage
-
Statistics - Average, Maximum, Minimum, Standard deviation, Quartile
データ品質では、データが日々更新される中でNull値の割合が一定の割合を超えていないかどうか、といったルールを定めておくことでチェックが可能になります。このルールは事前定義のものからカスタマイズまで多岐に設定ができるため、使い方によってはデータガバナンスからML開発における特徴量選定まで活用することができるかもしれません。
まとめ
BigQuery はデータウェアハウスの域を超えて、ビッグデータ分析からMLの開発のワンストップソリューションとして進化を遂げていると個人的には感じています。連動性の高い Vertex AI も使っていくことで、データの分析・モデル開発だけでなく DevOps・MLOps でもその効率性を上げることができます。
実際に業務で使っていると、こうした新機能の追加によって、データアナリスト・データサイエンティスト・データエンジニアといった様々な役割・レベルの人たちが同じ環境・共通認識で作業ができるようになってきていることも実感しています。
機能もですが、コンソール UI も使いやすさが日々進化しているので、これからデータを触っていこうという方にもおススメです。
Discussion