★本記事は10分で読み終わることができます。
現役エンジニアである筆者がBigqueryでできることを実例とともに解説した記事です。
データ分析を仕事で、Bigqueryを利用する人が増えているのではないでしょうか?
また、Bigqueryの導入を検討している人も多いことと思います。
BigqueryはDWHとして第一線で活躍するツールです。
DWHとはデータを貯める場所を意味する言葉で、分析をする対象のデータをとりあえず貯めていく倉庫です。
-
【動画で勉強したい人必見】Bigqueryを学べるUdemy講座3選
本記事は5分で読み終えることができます。【記事の信頼性】京都大学出身の現役ITエンジニアである筆者は日々の業務でBigqueryを活用しています。Bigqueryを知り尽くした筆者がBigqueryを ...
続きを見る
Bigqueryとは
Bigqueryとは、Googleが提供するGCP(Google Cloud Platform)のサービスの一つです。
Google社自身が利用しているビッグデータ解析の基盤を、私たちユーザにも利用できるように提供したものです。
Bigqueryは破格的な料金で利用でき、少し使ってみたい方には無料枠があります。
以下の記事で料金体系や安全に安く使う方法を解説しているので参考にしてみてください。
-
【パーティション】Bigqueryの料金体系と安全に安く使う方法を丁寧に解説!
★本記事は10分で読み終わることができます。現役エンジニアである筆者が実例を元にBigqueryの料金体系や安く済ませる方法を解説した記事です。 今、Googleの提供するBigqueryの活用がデー ...
続きを見る
Biqueryでできること
Bigqueryでできることとして「データ分析」「データベース」「外部サービスと連携」を解説します。
データ分析
主な利用方法は、やはりデータ分析です。
TB(テラバイト)レベルのデータを数秒 ~ 数十秒で処理できます。ローカル環境では考えられないですね。
そして、Webブラウザ上でSQLのクエリを直接記述して実行することで簡単にデータ分析をすることができます。(下の画像がWebブラウザ画面です)
Bigqueryでは左のサイドバーで以下の機能が使用できます。それぞれ簡単に説明しますね。
▶︎ クエリ履歴
クエリを実行した履歴を確認できるので、過去のクエリをすぐに再利用できます。
▶︎ 保存したクエリ
クエリを名前つけて保存できます。よく実行するクエリは名前をつけて保存しましょう。
個人用とプロジェクト用があり、プロジェクト用で
▶︎ ジョブ履歴
実行したジョブの履歴が見れます。
ジョブとは、データの読み込み、データのエクスポート、データのクエリ、データのコピーなどです。
▶︎ スケジュールされたクエリ
クエリの実行するタイミングを設定できます。定期実行も可能です。
▶︎ BI Engine
BIツールなど大人数がクエリを実行するツールの基盤にBigqueryを採用した場合に、普段より高速なクエリ処理やキャッシュ機能を利用できます。
別途料金が発生します。
よく使用するのが「スケジュールされたクエリ」という機能で、クエリの実行を予約することができます。何日の何時に定期的に実行するかを決め、分析結果をテーブルの格納することができます。
また、クエリ履歴で過去に実行したクエリを確認可能であったり、保存したクエリでは名前をつけてクエリを保存しておけば、0から毎回クエリを書く必要がなく便利ですね。
下記の動画で Bigqueryの使い方について「コロナのオープンデータ」の取得からちょっとしたクエリまで解説しているのでよかったら参考にしてください。
データベース
2つ目のBigqueryでできることはデータベースです。Bigqueryはデータを保存しておくデータベースとしてもコスパがかなり良いです。
CSVやGoogleスプレッドシートから読み込み・書き出しも可能なのでローカルに保存しているデータとの連携も簡単です。
蓄積しておいたログデータなどを即座にクエリで分析ができることがBigqueryが人気の理由です。
以下はCSVをBigqueryにアップロードする手順です。
まず、クエリエディタの下にある「テーブルの作成」をクリックします。
テーブルの作成元を「アップロード」を選択します。
あとはCSVを選択するだけです。簡単ですね。
外部サービス連携
3つ目のBiguqeryでできることは、外部サービスとの連携です。
GCPにはサーバ、画像認識や音声認識のサービス、タスクスケジューラやアクションの設計など様々なサービスがありますがとても簡単に連携が可能です。
具体的には、画像認識サービスで抽出したテキストデータをBigqueryに保存するといった使い方が考えられます。
実例
筆者の実例をもとにサーバとBigqueryの連携について解説していきます。
Bigqueryは、非常に優れた処理能力を持っているので、オンプレのサーバやローカル環境で構築したシステムの計算処理部分をBigqueryに投げることにしました。
簡易的なシステム構成は以下の図になります。
オンプレのサーバからBigqueryのAPIを利用してデータのアップロードと計算処理を行います。
プログラミング言語は主にPythonで構築していますが、BigqueryのAPIは様々な言語でのサンプルコードが公式サイトで公開されています。
以下がPythonでAPIを利用する手順になります。
Pythonにはpandas-gbq、google-cloud-bigqueryというライブラリがあるのでインストールします。
pandas-gbqはデータフレームのままBigqeuryとアップロード・ダウンロードすることができます。
pip install pandas-gbq google-cloud-bigquery
GCPのサービスを利用するためにはサービスアカウントを取得する必要があります。色々なサイトで紹介されているのでここでは省略しますね。
まずはデータのアップロードをします。
pandas-gbqライブラリのto_gbq関数を利用します。Bigqueryの書き込み先のテーブル名とプロジェクトIDを指定してあげるだけでOKです。
import pnadas as pd
#アップロード処理
pd.to_gbq(df, '書き込み先のテーブル', 'プロジェクトID')
続いてBigquery上にアップロードしたデータをクエリで処理します。
変数 queryに直接実行したいクエリを記述して、query()で実行します。
from google.cloud import bigquery
# GCPのProjectIDを指定
project_id = "ProjectID"
client = bigquery.Client(project=project_id)
# 実行したいクエリを記述
query = """
SELECT name FROM `project_id.dataset.table`
WHERE time > "2021-03-10 00:00:00"
"""
# クエリ実行
query_job = client.query(QUERY)
まとめ
今回はBigqueryのできることを3つ紹介しました。
・データ分析
・データベース
・外部サービス連携
Bigqueryを使いこなして解析なデータ分析ライフを送りましょう!
-
【動画で勉強したい人必見】Bigqueryを学べるUdemy講座3選
本記事は5分で読み終えることができます。【記事の信頼性】京都大学出身の現役ITエンジニアである筆者は日々の業務でBigqueryを活用しています。Bigqueryを知り尽くした筆者がBigqueryを ...
続きを見る