安価でハイパワー。データ分析に向いているBigQueryとは?魅力を解説
BigQueryを使ってみたいけど何に使ったらいいのかわからない。BigQueryは料金が高額そう。 BigQueryを使ったビッグデータの扱いは難しそう。というイメージがあるユーザは多いと思います。
実はBigQueryは、思ったより安価で扱いやすい、それでいて処理は高速という特徴を持つビッグデータ分析サービスです。
本稿ではBigQueryの特徴を説明しつつ、BigQueryの活用方法をご紹介します。
BigQueryとは
BigQueryはGoogleが提供するクラウド型のデータウェアハウスで、Google Cloud Platformのプロダクトの1つです。
安価に利用できて処理が高速、蓄積されたビッグデータはSQLで分析できるという学習コストの低さ、各種BIツールが連携をサポートしている、など特徴がたくさんあります。 面倒なセットアップもサーバ管理も必要なく、すぐに利用できるというのも特徴です。 安価に利用できハイパワーであることから、エンジニアだけではなくSQLを学習すれば非エンジニアでも扱えるBigQueryは、あらゆるユーザにとってデータ分析に向いている製品です。
BigQueryの料金・課金体系
BigQueryのテーブルに保存したデータ量とSQLで抽出したデータ量に応じて課金される従量制です。(無料枠も設定されています)
1ヶ月あたりの料金体系(米国マルチリージョンの場合。抜粋)
オペレーション | 料金 | 詳細 |
---|---|---|
アクティブストレージ | $0.02 per GB | 毎月10GBまで無料。 |
長期保存 | $0.01 per GB | 毎月10GBまで無料。 90日間にわたってテーブルが編集されていないテーブルが対象 |
クエリ(オンデマンド) | $5.00 per TB | 毎月1TBまで無料。 実行したクエリに対してのみ発生 |
詳細は公式サイトで確認できます。
https://cloud.google.com/bigquery/pricing/?hl=ja
料金の計算ツールもあり、概算算出も可能です。
https://cloud.google.com/products/calculator?hl=ja
メニューの左右スライドで「BIGQUERY」を選択して利用します。
参考までにBigQueryで一般公開されているデータセット(Stackoverflow)よりstackoverflow_postsテーブルのストレージ料金と簡単なクエリを実行した料金を試算してみます。
テーブル名:bigquery-public-data:stackoverflow.stackoverflow_posts
テーブルのサイズ:29.36GB (行数:3,101万行)
→ ストレージ料金:(29.36GB - 10GB) * $0.02 = 約$0.39 (おおよそ39円/月) (実際にはこのテーブルは長期保存テーブルです。そのため1GBあたり$0.01料金になるので、おおよそ19円/月)
クエリ
SELECT
title, format_timestamp('%F %T', creation_date ,'Asia/Tokyo') as creation_date, view_count, answer_count
FROM
`bigquery-public-data.stackoverflow.stackoverflow_posts`
クエリ量:1,021.5MB (0.001TB)
→ クエリ料金:$0 (おおよそ0円)(1TB未満のため)
もしstackoverflow_postsテーブルのみを保存し、上記クエリを1日1回、月で30回実行する運用をしても、月におおよそ39円しかかからない試算になります。
処理が高速
BigQueryのホワイトペーパーに以下のような記述があります。
BigQuery Technical White Paper
https://cloud.google.com/files/BigQueryTechnicalWP.pdf
要約)314百万行(35.7GB)のテーブルに対して条件に合致する行数を調べるSQLを実行すると10秒で結果が戻ってくる。
ちなみに料金の試算に使ったSQLは約27秒で結果がでました。行数を調べるだけに比べると時間はかかりましたが、3,101万行を日付変換しながら結果を出力して30秒以内なのでかなり高速です。
BigQueryの処理が高速な理由は、2つの仕組みがあるためです。
1.Columnar Storage(カラムナ ストレージ・列志向型構造)
BigQueryではカラム(列)単位でデータを保存します。カラム単位で保存することによりデータアクセスにかかるトラフィックの最小化(処理の高速化)とデータ圧縮の効率化を実現しています。
BigQuery Technical White PaperよりColumnar Storageのイメージ図。
左は一般的なデータベースのデータ保存方法(行単位)、右はBigQueryのデータ保存方法(列単位)
2.Tree Architecture(ツリーアーキテクチャ)
BigQueryの高速処理は無数のサーバを使った並行分散処理で実現します。クエリを受け取ったサーバ(root server)が無数のサーバ(leaf server)へ処理をさせる仕組みがツリー構造となっているためにこのように呼ばれています。
BigQuery Technical White PaperよりTree Architectureのイメージ図。
以上の2つの仕組みを効率的に利用することで、BigQueryは高速処理が可能になっています。
SQLでデータ抽出
BigQueryに蓄積したデータを分析・抽出するにはSQLを使用します。
多くのエンジニアはSQLを扱えるのでBigQueryでデータ分析するために新たに学習する必要がなく取り掛かりやすいです。SQLを扱えないエンジニアや非エンジニアの方もSQLについての書籍は豊富にあるので、BigQueryでのデータ分析のためにSQLを学習してみることをお勧めします。なお、データを抽出するだけであればSQLの文法を理解しているだけで十分です。
BIツールでビジュアライズ
BigQueryなどに蓄積されるビッグデータはそのまま利用しても価値はありますが、BIツールでビジュアライズすることで ビジネスに有益なデータを容易に発見できるようになります。
BigQueryは様々なBIツールから連携されているため、簡単にデータソースとして利用することができます。処理が高速なBigQueryはダッシュボードの再描画も早くなるので、BIツール(「データポータル」や「Tableau」など)との相性が抜群です。
BigQueryをDMPとして活用する
DMPは「Data Management Platform」の略称で、様々な場所に蓄積されているデータを一元管理し、分析するためのプラットフォームのことです。
DMPで分析したデータはビジネスを成長させるための次のアクションのために利用されます。例えば、自社サイトのデータと自社のCRMデータ、広告配信データをDMPで一元管理して分析することで、次の広告配信を最適化することが可能になります。
BigQueryは大規模のデータを保存しておくことも、分析のために抽出することも安価に利用でき、分析結果抽出は高速に行える、データ分析もSQLで容易にできる。という特徴からDMPとして利用するのにも向いています。
なお、自社サイトの計測をGoogleアナリティクスで行なっている場合、Googleアナリティクス360(有料版)であれば、簡単な設定をするだけでBigQueryへと生データのエクスポートが行えます。Googleアナリティクスの管理画面だけでは不可能な自社サイトの分析や、サイト以外のデータと連携した分析がBigQueryでSQLを書くだけで容易に行えるようになります。
BigQueryは、普段利用しているGoogleアカウント(利用していない場合は新規でアカウントを作成してください)でGoogle Cloud Platformにログインすれば利用することができます。初めてBigQueryを利用する場合はプロジェクトの作成やデータの準備が必要ですが、時間をかけずに試すことが可能です。ぜひBigQueryの高速処理を体験しビジネスに役立てみてはいかがでしょうか?