Python で BigQuery を強化: マネージド Python UDF の一般提供を開始
Sandeep Karmarkar
Group Product Manager
Chao Shen
Tech lead
※この投稿は米国時間 2026 年 6 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。
SQL は、高パフォーマンスの構造化データ分析における業界標準です。しかし、複雑な手続き型ロジック、科学計算、高度な文字列操作、ML ワークフローを純粋な SQL で表現することは、不可能ではないにせよ、非常に困難な場合があります。このような作業は Python で行う方が適しています。また、データ実務者は、本来の業務に加えてインフラストラクチャの管理まで担うことがよくあります。たとえば、カスタム イメージやコンテナの保守、追加されたコンピューティング サービスの操作など、カスタム Python コードやライブラリで単純なヘルパー関数を実行するだけのために、余分な作業を強いられます。
こうした状況を踏まえ、このたび BigQuery マネージド Python ユーザー定義関数(UDF)の一般提供(GA)を開始しました。
このリリースは、BigQuery の拡張戦略における大きなマイルストーンです。これにより、データ サイエンティスト、エンジニア、アナリストは、標準 SQL クエリや Python の BigQuery DataFrames(BigFrames)を使用して、BigQuery 内でカスタム Python コードを直接かつ安全に実行できるようになります。Python UDF は本番環境のエンタープライズ ワークロードで完全にサポートされ、BigQuery の課金 SKU に完全に統合されます。
SQL と豊富な Python エコシステムとの橋渡し
BigQuery マネージド Python UDF は、BigQuery が管理するサーバーレス リソースで実行され、インフラストラクチャのセットアップやコンテナの管理を必要とせずに、数十億行規模まで自動的にスケールされます。BigQuery は、Python コードのコンパイル、イメージの構築、セキュリティ パッチの適用、デプロイ、実行を自動的に処理するため、SQL 内で Python 関数を使用することが極めて簡単になります。
主なメリット
-
柔軟性: NumPy、SciPy、pandas、scikit-learn などのトップクラスの科学 / 数学ライブラリを含む、広大な Python エコシステムに SQL の SELECT ステートメントから直接アクセスできます。
-
外部 API との緊密なインテグレーション: クエリ内で外部ウェブ API や Google Cloud サービス(Cloud Translation、Gemini Enterprise Agent Platform、カスタム マイクロサービスなど)を安全に呼び出すことで、BigQuery テーブルをリアルタイムでクリーニングおよび拡充できます。
-
フルマネージド、サーバーレス: BigQuery が基盤となるコンテナ インフラストラクチャを管理し、パフォーマンスを動的かつ自動的にスケールします。
サンプルコード
以下は、よく利用されている Python パッケージである beautifulsoup を利用して、HTML タグを削除する Python UDF の例です。この関数を使用して、
BigQuery の一般公開テーブルに保存されている StackOverflow の回答本文を処理します。
クエリの実行方法:
高度な機能
Python UDF には、上級ユーザー向けに、パフォーマンスの調整やモニタリングを行うための機能が追加されています。たとえば以下のようなものがあります。
Pandas PyArrow によるベクトル化処理スループットを最大化するため、GA リリースでは、ベクトル化された入力を PyArrow RecordBatch として直接処理できます。PyArrow は、データを行単位ではなく列単位で一括処理することで、Python のシリアル化や変換にかかるオーバーヘッドを排除し、データ集約型の計算において最大 10 倍のパフォーマンス向上を実現します。
構成可能なコンテナ リソースデータ サイエンスや ML のデータ準備などの負荷の高い処理において、関数ごとにコンテナのメモリ(最大 16 GB)と CPU(最大 4 vCPU)をプロビジョニングできるようになりました。これにより、メモリ使用量の多いワークロード(大規模なシリアル化されたモデルや地理空間データセットの読み込みなど)をサンドボックス内で直接実行できます。
カスタマイズ可能な同時実行数コンテナあたりの同時リクエスト数(最大 1,000 件の同時オペレーション)を構成することで、スループットとリソース効率を最適化できます。これにより、スケールアウト実行の費用対効果を大幅に向上させ、高負荷の並列処理下でも卓越したパフォーマンスを発揮できるようになります。
ログとリアルタイム指標のストリーミング本番環境のワークロードを簡単にデバッグおよびモニタリングできます。BigQuery コンソールでは、クエリ結果から Cloud Monitoring のリアルタイムの CPU、メモリ、同時実行の指標へ直接リンクできるようになりました。
課金
BigQuery マネージド Python UDF への課金は、BigQuery Services SKU に基づいて行われます。この SKU は、BigQuery の費用ベースの確約利用割引(CUD)の対象となるため、予算効率を最大化できます。
また、INFORMATION_SCHEMA.JOBS を通じて費用のオブザーバビリティを取得することもできます(請求ラベル MANAGED_ROUTINE_EXECUTION と MANAGED_ROUTINE_BUILD を使用)。
詳細については、ドキュメントの料金セクションをご覧ください。
ご利用にあたって
BigQuery Python UDF の使用を開始するには、まずプロダクト ドキュメントをご覧ください。
次に、BigQuery 一般公開データセットとして公開されている関数をお試しください。たとえば、BigQuery プロジェクトで次のコードを実行して、BigQuery の一般公開データから国名のデータをトークン化します。内部的には、このトークン UDF は o200k_base トークナイザー ライブラリを利用しています。
または、こちらの Codelab を試して、より高度なシナリオについてご確認ください。
他の高度な設計パターンを実装する方法については、Google の公式の一般公開ドキュメント ガイドをご覧ください。
-
Google Cloud またはオンライン サービスを呼び出す(接続あり): Gemini Enterprise Agent Platform や Cloud Translation などのファーストパーティの Google Cloud サービス、または外部 API エンドポイントに Cloud リソース接続を使用して安全に接続する方法については、Python コードで Google Cloud またはオンライン サービスを呼び出すの説明をご参照ください。
-
BigQuery DataFrames(BigFrames)Python UDF: BigQuery DataFrames を使用して、標準の Jupyter ノートブック環境や Colab 環境からカスタム Python 関数をネイティブに記述、デプロイ、スケールする方法については、BigQuery DataFrames 用の Python 関数のカスタマイズの説明をご参照ください。
今すぐ Python ワークフローを孤立した状態から解き放ち、データ ウェアハウスの中核に直接組み込みましょう。
- グループ プロダクト マネージャー、Sandeep Karmarkar
- テクニカル リード、Chao Shen


