データウェアハウスの導入を検討しているなら、GoogleのBigQueryを知っておくべきでしょう。BigQueryは、Googleが提供するクラウドベースのデータウェアハウスサービスで、大規模なデータを効率的に処理して分析することができます。本記事では、BigQueryとは何か、データウェアハウスにBigQueryを選定するメリットから、BigQueryの利用料金や活用方法、うまく活用するためのコツについて解説します。
Google BigQueryとは?

Google BigQueryは以前「GCP」という略称で親しまれたGoogle Cloudが提供するビッグデータ分析ツールの一つで、数テラバイト、数ペタバイトなどの膨大なデータを数秒〜数十秒で処理できるという特徴があります。膨大なデータを高速で処理できるというこの特徴はGoogleが開発したDremelという独自の技術によるもので、エンジニアでなくともSQLが扱える人であれば日々生成する大量のデータを素早く分析することが可能となりました。また、このように非常に高性能なサービスですが利用料がリーズナブルなので多くの開発現場で用いられています。
Google BigQueryを利用する5つのメリット

スケーラビリティが高い
スケーラビリティとは、システムが大量のデータや利用者の増加に対応できる能力のことです。Google BigQueryは、ペタバイト単位のデータを高速かつリアルタイムに処理できます。また、データサイズに応じて自動的にスケールアップして処理能力を拡張するため、大量のデータを効率的に処理することができます。そのため、企業が抱えているビジネスの成長に伴い扱うデータの量が増えてもパフォーマンスが低下することなく素早いデータ分析を行うことができます。
Google BigQueryが高いスケーラビリティを保つことができる理由としては、2つあります。
1つ目は、Columnar Storageという、DBを列単位で保存する手法を用いていることです。通常のシステム開発で用いるMySQLやPostgreSQLなどのリレーショナルデータベースではデータを行単位で保存しますが、大量のデータを操作する際には動作が遅くなるというデメリットがあります。一方、Columnar Storageでは列単位の保存を行うことにより、トラフィックの最小化と高い圧縮率を可能とし、結果として高いパフォーマンスを維持したまま快適なデータ分析を行うことができます。
2つ目は、Tree Architectureという、クエリの分散処理を行っていることです。単体のサーバーでクエリの処理を行う場合、大量のクエリが発行された際に処理が遅くなることがあります。しかしTree Architectureではクエリを受け取ったサーバーから実際に処理をする複数のサーバーにクエリを渡すことにより大量のクエリ発行にも耐えられる構造となっています。
Google Cloud Platformとシームレスに統合できる
Google Cloudの一部であるため、Google Cloudの他のサービスとシームレスに連携できます。そのため、たとえば、Googleスプレッドシートに入力した内容とBigQueryとの連携が容易に行えます。ほかにも、マーケティング分析のためのGoogleアナリティクス、データ収集のためのPub/Sub、データ処理のためのDataflowなどと連携し、一連のデータ活用フローをGoogle Cloud内で完結させることができます。
SQLクエリで高度な分析ができる
SQLを用いてデータの抽出、加工、分析が可能です。ハイレベルなエンジニアでなくとも既存のSQLの知識を活かして分析することができます。たとえば、SQLを使って容易に機械学習のモデルの作成や地理空間データの分析が可能です。また、ARRAYやSTRUCTといった複雑なデータ型を扱ったり、正規表現を用いてテキストデータを処理することができます。そのほかにも、Google Queryでは機械学習のライブラリも提供されているため労力をかけずにモデルのトレーニングを行うことができ、機械学習プロダクトの開発が非常に効率化できます。
低コストで利用できる
基本的にGoogle BigQueryはクエリ実行の際にのみサービスが起動し、サービス起動時のみ料金が発生する従量課金制度を採用しているため、必要な分だけ利用することができます。また、クエリやデータのアップロードにかかる料金も比較的低く、コスト面でもメリットがあります。
上記のクエリ料金(コンピュート料金)の他に、ストレージ料金という概念があります。ストレージ料金は保存したデータの量によって決定します。Google BigQueryは他のクラウドサービスと比較して低価格での利用が可能ですが、あまりにも大量のデータを無理に分析した場合料金が高くなることが見込まれるので注意してください。
セキュリティが高い
Google BigQueryはGoogleの堅牢なセキュリティインフラストラクチャによって保護されています。データは常に暗号化されて保存され、ネットワーク間の通信も暗号化されています。また、IAM(Identity and Access Management)を使用すれば、ユーザーやロールに基づいた細かいアクセス制御が可能です。
さらに、VPC Service Controlsを使用すれば、Google BigQueryへのアクセスを企業のネットワーク内に限定することで、データの漏洩を防ぐことが可能です。このような信頼できるセキュリティ機能により、BigQueryは企業の重要なビジネスデータを安全に保管することができます。
Google BigQueryの利用料金

料金体系としては前述の通り、ストレージコストとコンピュートコスト(クエリコスト)があります。

まず、ストレージコストについて、従来の方法は「論理ストレージ」に基づいています。「論理ストレージ」は、データが圧縮される前のサイズを元に計算されます。しかし、Google BigQueryでは実際にはデータは自動的に圧縮されて保存されます。そのため、この圧縮後のデータサイズに基づいて課金する「圧縮ストレージ」が導入されました。「圧縮ストレージ」では、圧縮されたデータサイズに対して課金され、圧縮率によっては今までよりも安く済むことがあります。ただし、「圧縮ストレージ」にはいくつかの制約があります。
また、従来のBigQuery Reservation (flat-rateを使用しているプロジェクトがある場合、「圧縮ストレージ」課金は利用できません。
また、Google BigQueryのストレージコストには「アクティブストレージ」と「長期ストレージ」の2種類のコストがあり、90日以上変更のないデータは「長期ストレージ」に振り分けられ、料金が安くなります。同様に、90日以内に変更があったデータは「圧縮ストレージ」に振り分けられます。
Google BigQueryには「タイムトラベル」という機能もあり、データを削除・変更してもデフォルト設定では過去7日間のデータが保存されます。「圧縮ストレージ」では、この「タイムトラベル」のデータに対しても料金が発生します。
次にコンピュートコスト(クエリコスト)についてですが、コンピュート料金は「オンデマンド」または「BigQuery Editions」のいずれかが選択できます。
BigQuery Editionsは、従来のBigQuery Reservation (flat-rate)の代替となるもので、3つの価格プラン(Standard、 Enterprise、 Enterprise Plus)があります。各Editionには、利用可能な機能が異なります。たとえば、特定のセキュリティ機能はStandard Editionでは利用できません。
BigQuery Editionsを選択しないでオンデマンドモードを利用すると、Enterprise Plusに相当する機能が利用できますが、コストパフォーマンスにおいてはEditionsが優れています。
この2つの課金モデルをどのように選択すべきかですが、読み込むデータ量が1TB以下ならオンデマンドモードがおすすめです。1TB以上なら各Edition(Standard、 Enterprise、 Enterprise Plus)の中から、展開するサービスに応じて選択しましょう。各Editionには独自の特徴があるため、リリースするサービスの規模感や機能、予算などをもとに選択するとよいでしょう。
また、データストレージに関しては、データが頻繁に更新されない場合やデータの圧縮率が高い場合は、新しい「圧縮ストレージ」を選択することで料金を抑えることができます。BigQuery Reservation (flat-rate)を利用している場合や、データを頻繁に更新する場合は、従来の「論理ストレージ」が適しています。
データの削除・変更が頻繁に行われる場合は、「タイムトラベル」機能の課金も考慮するとよいでしょう。「タイムトラベル」機能はデフォルト設定で有効になっており、過去7日間のデータが保存されます。この保存されたデータに対しても課金が発生するため、不要な場合は無効化しましょう。
上記の料金体系を理解した上で、定義した要件に従って選択することでGoogle BigQueryの料金を最適化できます。
Google BigQueryの活用方法

ビッグデータの解析
データを高速に分析することができるため、マーケティングデータ、ログデータ、ソーシャルネットワークデータなど、さまざまな種類の膨大なデータを解析することで、データマイニングやビジネスでの方針決定などに役立ちます。また、複数のファイル形式をサポートしており、CSV、JSON、Avro、Parquetなどの形式のデータとして手元にインポートできます。
リアルタイムでの分析
Google BigQueryはストリーミングデータの挿入をサポートしており、リアルタイムでデータを追加し、クエリの実行ができます。この一連の流れにより、ユーザーのリアルタイムな行動分析やリアルタイムなダッシュボードの作成やアラート表示など、リアルタイムで追う必要がある多様な業務に役立ちます。
機械学習の前処理
アノテーションなどの、機械学習モデル開発に必要なデータの前処理にも活用できます。大量のデータを高速に処理し、モデルのトレーニングに適した形に変換することが可能です。また、BigQuery MLを用いることで、Google BigQuery内で直接機械学習モデルを作成することができます。
データの可視化
GoogleデータポータルやLooker Studioなどのデータを可視化するツールと簡単に連携することも可能です。これにより、クエリの結果を直感的に理解できるレポートやダッシュボードを作成し、結果への定量的な評価ができ、事業の方針決定に役立ちます。
Google BigQueryをうまく活用するためのコツ5選

クエリの最適化
Google BigQueryのクエリ料金は、クエリが読み込んだデータ量に基づいて算出されるため、クエリを最適化し不要なデータの読み込みを減らすことで、コストの削減が図れます。たとえば、WHERE句を使用して必要なデータだけをフィルタリングしたり、SELECT句で必要なカラムだけを指定したりすることで、クエリの効率を向上できます。
テーブルの最適化
Google BigQueryではデータベースのテーブル設計や管理方法によっても、クエリのパフォーマンスやコストが変動します。たとえば、パーティションテーブルやクラスタテーブルを使用することで、クエリが読み込むデータの量を減らし、パフォーマンス向上が図れます。また、頻繁に変更されるデータと変更頻度の低いデータを別テーブルに分けることでストレージコストの最適化が可能です。
セキュリティの最適化
Google BigQueryは信頼性の高い強力なセキュリティ機能を備えていますが、その機能を適切に設定した上で利用することが肝要です。IAMの設定をしてアクセス権を細かく制御することや、VPC Service Controlsを利用してネットワークのセキュリティの強化を行いましょう。また、顧客情報などの機密データを扱う場合は、Google BigQueryのデータロス防止機能や暗号化機能を活用することも選択肢に入れてください。
テストの実施
新しいクエリの処理などを本番環境で利用する前に、必ずテスト環境を用意しテストを行いましょう。特に、大量のデータを扱うビッグデータ解析では、想定外のバグが発生した場合システム全体を停止させる重大な事故となる恐れがあります。
ドキュメンテーションの整備
必要なドキュメントの整備を行うことも重要です。クエリを発行する目的やテーブル設計、データの意義などをドキュメントに明記することにより、他のチームメンバーや後継の開発者が作業を引き継ぎやすくなります。また、障害が発生したときに原因を特定する一助となります。
trocco®とGoogle BigQuery

ここまでBigQueryの解説をしましたが、BigQueryをより活用するためにはやはりある程度専門知識が必要となってしまいます。弊社はデータ分析基盤の総合支援サービスtrocco®を提供しており、Google BigQueryをより簡単に他のサービスと連携することが可能です。
Google BigQueryとtrocco®を連携させることでより直感的に、自動でデータを扱うことができます。trocco®を利用しShopifyシステム上にあるデータをBigQueryにまとめる作業やTwitter広告レポートをBigQueryへ連携してLook Studioでグラフにする作業、Googleスプレッドシートに入力されたデータをBigQueryにまとめてTableauで表・グラフに起こす作業などが手間なく気軽に行え、更なる業務効率化が実現します。
下記の記事では例としてtrocco®を利用してSalesforceのデータをGoogle BigQueryへ同期して、Tableauで可視化する手順を説明しています。ご興味のある方はぜひ一度ご覧ください。
trocco®を利用してSalesforceのデータをGoogle BigQueryへ同期して、Tableauで可視化する
まとめ

今回はGoogle BigQueryのメリットや料金体系、活用方法や活用の際のコツについて解説しました。Google BigQueryは前述のようにハイパフォーマンスで信頼できるサービスでありながら料金もリーズナブルという、クラウドサービスとして非常に優れた特徴を持ちます。SQLが分かれば非エンジニアでも操作可能ですが、それでも他のサービスとの連携を行う場合技術的に深掘りしなければならない点が目立ちます。
trocco®を利用すればGoogle以外の他サービスとの連携を簡略化でき、ジョブ管理や通知・再実行などの運用支援も可能です。フリープランであれば無料で利用できるためぜひこのご機会にお試しください。
