コンテンツに移動
デベロッパー

BigQuery 管理者リファレンス ガイド: API 環境

2021年7月6日
https://storage.googleapis.com/gweb-cloudblog-publish/images/BQS_API.max-500x500.jpeg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 8 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。

このシリーズではこれまで、一般的なコンセプトとコンソールベースのワークフローに焦点を当ててきました。しかし、膨大な量のデータを扱う場合や、多くの関係者に情報を提供する場合には、プログラムによる BigQuery の活用が不可欠です。今回の記事では、BigQuery の API 環境をご紹介します。これにより、各 API の機能や、API を活用して自動化できるワークフローの種類を理解できます。

Google Cloud APIs を活用する

すべての Google Cloud APIs には、サーバー アプリケーションから多くの一般的なプログラミング言語を使用したクライアント ライブラリを通して、モバイルアプリから Firebase SDK を介して、またはサードパーティのクライアントを使用してアクセスできます。Cloud APIs には、Google Cloud SDK ツールまたは Google Cloud Console からアクセスすることもできます。Cloud APIs を初めて使用する場合は、Cloud APIs の使用方法についてスタートガイドをご覧ください。

すべての Cloud APIs では、直接または Google API クライアント ライブラリ経由で呼び出すことができるシンプルな JSON HTTP インターフェースが提供されています。ほとんどの Cloud APIs には、gRPC インターフェースも提供されており、Google Cloud クライアント ライブラリ経由で呼び出すことでパフォーマンスとユーザビリティを向上できます。クライアント ライブラリについて詳しくは、クライアント ライブラリの説明をご覧ください。

BigQuery v2 API

BigQuery v2 API では、BigQuery の「コア」を操作します。この API により、データセットテーブル(外部テーブルとビューの両方を含む)、ルーティン(関数とプロシージャ)などのデータ ウェアハウジング リソースを管理できるようになります。また、BigQuery の機械学習機能を活用してデータのクエリ、読み込み、コピー、抽出などのジョブを作成したり、ポーリングしたりできます。

プログラムによるクエリ結果の取得

この API を活用する一般的な方法の 1 つは、BigQuery のクエリを実行し、その結果を使用してビジネス上の疑問に対する答えをプログラムで取得することです。すぐに思い浮かぶ例としては、Google スライドのテンプレートへの自動入力があります。これは、四半期ビジネス レビューなどでスライドを準備しており、各チームが前四半期の販売実績を示すスライドを必要としている場合に特に有効です。多くの場合、アナリストは手作業でクエリを実行し、その結果をスライドデッキにコピーして貼り付けなければなりません。しかし、BigQuery API、Google Slides APIGoogle Apps Script を使用することで、このプロセス全体を自動化できます。

Google Apps Script を初めて使用する場合でも、Google ドライブ内で実行されるサーバーレス関数を迅速に構築できます。Google Apps Script には Google Workspace と Cloud ライブラリがすでに備えられているため、スライドと BigQuery サービスをスクリプトに追加するだけです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screen_Shot_2021-08-17_at_10.05.02_PM.max-70.max-700x700.png

スクリプトでは、各チームの名前のループ処理を行うなどして、それをパラメータ化されたクエリを実行するためのパラメータとして使用できます。最後に、そのパラメータを使用して、デッキ内でそのチームのスライドのテンプレートを置き換えることができます。いくつかのサンプルコードはこちらをご確認ください。全体のプロセスの詳細については、今後の投稿をお待ちください。

読み込んでいます...

新しいデータでの読み込み

BigQuery で利用可能な既存のデータのクエリを実行するだけでなく、API を使用して新しいデータを BigQuery テーブルに追加する読み込みジョブを作成、実行することもできます。これは、バッチの読み込みパイプラインを構築する際の一般的なシナリオです。例としては、毎晩トランザクション データベースからデータを変換して BigQuery に取り込んでいる場合があります。BigQuery のテーブルに関する投稿でご紹介したように、Cloud SQL データベースに対して外部クエリを実行することも可能です。つまり、BigQuery の API を介してクエリジョブを送信するだけで、Cloud SQL テーブルから新しいデータを取得できます。以下では、google.cloud.bigquery Python ライブラリからマジック コマンドを使用して、結果を pandas データフレームに保存しています。

読み込んでいます...

次に、結果を変換する必要がある場合があります。たとえば、Google マップの GeoCoding API を使用して、データ内の各お客様の緯度と経度の座標を取得できます。

読み込んでいます...

最後に、読み込みジョブを作成して既存のネイティブ BigQuery テーブルにデータと座標を追加できます。

読み込んでいます...

このコードは、サンプルの Jupyter ノートブックでアクセスできます。ただし、本番環境で使用する場合は、Google Cloud Functions の関数などを活用することをおすすめします。

Reservations API

BigQuery の「コア」は BigQuery v2 API で処理されますが、BigQuery の付随的な側面を管理するその他の API もあります。たとえば、Reservations API では、以前の記事でご紹介したように、容量コミットメント、予約、割り当てなどのワークロード管理リソースをプログラムで活用できます。

ワークロード管理

たとえば、毎月第一月曜日の午前 8:00 に重要なダッシュボードの読み込みがあるとします。あなたは、CEO のためにダッシュボードの読み込みを超高速化するのに十分な数のワーカーを確保するにあたり、Flex Slots のスロットを活用することを決めました。そこで、Flex Slots のスロット コミットメントを購入し、ダッシュボードを読み込むための新しい予約を作成し、BI ツールがダッシュボードを実行するプロジェクトを新しい予約に割り当てるプログラムを書くことにしました。サンプルコード全体はこちらをご確認ください。

読み込んでいます...

Storage API

BigQuery を操作する際に関連するもう 1 つの API は、Storage API です。Storage API では、BigQuery をデータ ウェアハウスやデータレイクのように使用できます。リアルタイムなのでデータを待つ必要がなく、高速なのでデータを縮小したりサンプリングしたりする必要がなく、効率的なので必要なデータだけを読み取ることができます。これは以下の 2 つのコンポーネントに分かれています。

  • Read Client は、大量のデータを読み取るのに適したデータ ストリームを公開します。また、読み込みの並列化、部分投影の実行、データのフィルタリング、スナップショット時間の適切な制御の提供などの機能も備えています。

  • Write Client(プレビュー)は、BigQuery v2 API にあったストリーミング メカニズムを継承したものです。exactly-once セマンティクスなど、より高度な書き込みパターンをサポートしています。詳細は近日中にお知らせします。

Storage API を使用して一連の Hadoop コネクタを構築し、BigQuery のデータで Spark ワークロードを直接実行できるようにしました。Storage API を使用して独自のコネクタを構築することもできます。

Connections API

BigQuery Connections API は、Cloud SQL などの外部ストレージ システムへの接続を作成するために使用されます。これにより、BigQuery ユーザーは、他のシステムに対してライブの連携されたクエリを発行できます。また、マルチクラウドのデータソースや構造を定義する BigQuery Omni もサポートします。

連携接続をプログラムで管理する

たとえば、お客様のために分析を組み込んでいるとします。ウェブ アプリケーションは、それぞれのお客様がデータを格納する単一のテナントの Cloud SQL インスタンスを持つように構成されています。これらの情報に基づいて分析を行うためには、各 Cloud SQL データベースへの接続を作成します。各接続を手動で設定する代わりに、Connections API を使用して、お客様のオンボーディング プロセス中にプログラムで新しい接続を作成するというオプションもあります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Screen_Shot_2021-08-17_at_10.20.41_PM.max-70.max-600x600.png

Data Transfer Service API

BigQuery Data Transfer Service では、既知のデータソースからデータを取り込む作業を標準的なスケジューリングで自動化できます。DTS は、以前のオンプレミス ウェアハウスからの変更の同期のための特殊な統合など、移行ワークロードをサポートします。API を使用して、認証情報の確認手動実行のトリガー以前の転送からのレスポンスの取得などを行うことができます。

Data QnA API

最後にご紹介するのは、私のお気に入りの API である Data QnA で、現在プレビュー版が公開されています。組織のビジネス ユーザーにデータのクエリを頻繁に頼まれますか?QnA API を使用することで、自然言語によるテキストの問い合わせを SQL に変換できます。つまり、これらのクエリ リクエストを満たす超強力な chatbot をビルドしたり、ビジネス ユーザーにコネクテッド シートへのアクセスを提供して、スプレッドシート上で分析に関する質問を直接尋ねられるようにしたりすることも可能です。こちらの投稿で、他のお客様が現在どのようにこの API を利用しているかの詳細をご確認ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/Data_QnA.max-1000x1000.max-1000x1000.png

まとめ

今回の投稿では、BigQuery API を利用して、データを活用したワークフローの自動化に向けた新たな扉を開く方法をご紹介できたかと思います。先週のデータ ガバナンスに関する投稿でご紹介した、アクセス ポリシーを管理するための IAM機密データを管理するための DLPメタデータをトラッキングおよび検索するための Data Catalog を含むいくつかのプラットフォームのように、BigQuery の操作にはさらに多くの関連性の高い API があることにご留意ください。

来週は、BigQuery スポットライト YouTube シリーズの今シーズン最後の投稿です。モニタリングのユースケースをご紹介します。ぜひ LinkedInTwitter で私をフォローしてください。

-デベロッパー アドボケイト Leigha Jarett

投稿先