Google BigQuery / Tableauを使ってみた
TableauからGoogle BigQueryへ接続してみました。
弊社で利用しているTreasureDataからデータ出力してBigQueryへロード、Tableauから接続まで実際に行った手順について記載します。
TreasureDataからAmazonS3へデータ出力
まず、データが蓄積されているTreasureDataからAmazonS3へファイル出力します。
やり方は簡単で、コンソール上の”Result Export”から”AWS S3/Riak CS”を選択して、APIキーや出力先のディレクトリを選択するだけです。
Compressionオプションで”gz”を指定したのですが、これが仇になるとは。。。詳細は後述します。
(GoogleCloudStorageへ直接出力できたら嬉しいな、なんて思いつつ)
AmazonS3からGoogleCloudStorageへデータ転送
AmazonS3からGoogleCloudStorageへのデータ転送はgsutilを使います。
gsutilのインストール
[code]
wget https://storage.googleapis.com/pub/gsutil.tar.gz
tar xvzf gsutil.tar.gz
cd ./gsutil
./gsutil config
[/code]
すると認証用のURLが表示されるので、アクセスして認証コードを入れるだけです。簡単です。
configファイルの編集
インストール設定が完了すると、.botoファイルが生成されます。
AmazonS3から転送を行うためのAPIキーとシークレットキーを設定する箇所があるので設定します。
[code]
#aws_access_key_id = <your aws access key ID>
#aws_secret_access_key = <your aws secret access key>
[/code]
あとは以下のような感じで、S3からCloudStorageへの転送ができます。
[code]
gsutil -m rsync -r s3://(bucket)/(path)/ gs://(bucket)/(path)/
[/code]
BigQueryへのロード
bqコマンドを利用するので、GoogleCloudSDKをインストールします。
インストール方法についてはhttps://cloud.google.com/sdk/に書いてあります。
※コンソールからでもロードはできます。
ファイルについてはtsvで出力したので、以下のコマンドでロードします。
[code]
bq load –source_format=CSV –field_delimiter="\t" (Dataset).(Table) gs://(bucket)/(path)/xxxxxx.gz schema.json
[/code]
フォーマットとしてCSV、tsvファイルなのでデリミタとしてタブ、ロードするファイルのCloudStorageのパス、テーブルスキーマを設定しているjsonを指定します。
loadコマンドのオプションについてはここに詳細が記載されています。
実に簡単だなーと思ったら、ここでつまずきました。ロード失敗。
よくよく調べてみると、CSVフォーマットで圧縮ファイルの場合4GBが上限。
ちゃんと書いてありましたね。
https://cloud.google.com/bigquery/loading-data-into-bigquery#quota
かなり馬鹿っぽいんですが、再度ダウンロード、解凍、アップロードしなおしてなんとかロード成功。
今回ロードするファイルがいくつかあり、4GBを超えるものとそうなでないものがあったので、圧縮と非圧縮ファイルのロードのパフォーマンスを比べてみました。
結果は以下のとおりです。
ファイル | 圧縮 | サイズ | サイズ(非圧縮) | ロード時間(秒) | MB/sec |
---|---|---|---|---|---|
001 | 6.25GB | 26.76GB | 259 | 105.8 | |
002 | 6.25GB | 26.75GB | 249 | 110.0 | |
003 | 6.25GB | 26.78GB | 249 | 110.1 | |
004 | 6.25GB | 26.78GB | 250 | 109.6 | |
005 | ◯(gz) | 68.51MB | 294MB | 35 | 8.4 |
006 | ◯(gz) | 145.21MB | 622MB | 87 | 7.1 |
圧縮と非圧縮でファイルサイズが全然違うので、これだけではなんともいえないですが、
これだけ見ると、非圧縮のほうが10倍くらい速いですね。
BigQueryを使ってみる
本当にデータがロードされたのかコンソール上からクエリを投げて確認してみます。
とりあえず、カウント。
約3億2千万レコードがロードできました。1.2秒で出力されました。
Tableauから接続
やっとここまで来ました。Tableau経由で接続してみたいと思います。
- Tableauのデータ接続から”Google BigQuery”を選択します。
- 認証画面が出るので、GCPが利用できるGoogleアカウントのID/パスワードを入力します。
- プロジェクト>データセットを選択するとテーブル一覧が表示されるので選択します。
あとは他のデータソースと同じ形でいけます。
今回、BigQueryにはAudienceOneのテストデータを入れました。
なので、こんな感じでユーザの分析ができます。3億レコード入ってますがサクサクできました。
TableauからはRedshiftに接続して利用することが多かったのですが、BigQueryもアリですね。
とはいえ、レコード数が多くなるとクエリ単位に課金されてしまうので、若干コストが心配ですが。

関連記事
-
-
Treasure Dataの新機能(Data Tank)をAudienceOneのレポート機能で利用した話
Data Tankとは? Treasure Dataの新機能でTreasure Dataのプラットフォーム上に構築されたデータマートです。 Tableau等のBIツールとの接続を想定されており、AWSでいうところのRedshift的なものだと考えるとわかりやすいかと。 Data TankはPostg …
-
-
気象予報士とビッグデータ解析の意外な関係
DACから気象予報士が誕生しました ビッグデータ解析部のMikeです。 2015年1月の気象予報士試験に合格し、めでたく4月からアドテク業界ただ一人(本当?)の気象予報士となりました 。 そんなわけで、今回は気象予報士とビッグデータ解析の関係についてお話したいと思います。 なぜ気象予報士を目指したか …
-
-
【クラウド初心者向け】Google Cloud Platform(GCP)でWebサイトを公開してみよう!
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 背景 わたくしは最近プライベートで開発したWebサービスをインターネット上に公開しまし …
-
-
Treasure Dataで長期間の集計
プラットフォーム・ワン T氏です。プラットフォーム・ワンでは、DSPのMarketOneとSSPのYIELD ONE提供しています。 MarketOneやYIELD ONEのログを調査する場合にTreasure Dataを使うことがあります。Treasure Dataでは大量のデータに対してHive …
-
-
HyperLoglogでcount distinctを速くする
こんにちは。俺やで。 HyperLoglogについて書きます。おもしろいです。名前が。 ■1. HyperLoglogとは? count distinctを速くするアルゴリズム 以前、Minhashについて書きました。 (Treasure Dataさんのブログにも載せていただきました。ありがとうござ …
-
-
最強のSQLクライアント(GUIツール)「TeamSQL」を使ってみた!
はじめに みなさんこんにちは、プロダクト開発本部の亀梨です。 普段はXmediaOneというメディアプランニング・広告運用管理・トラッキング・マーケティング分析を行う 統合プラットフォームの開発を担当しています。 エンジニアの皆さん、SQLクライアント(GUIツール)って何使ってます? わたくしはこ …
-
-
巨大データベースのスケールアップと引越作業
はじめに ビッグデータ解析部でオーディエンスデータ解析基盤の開発、運用を担当している Mike です。 弊社ではインターネット広告配信ログをはじめとする「ビッグデータ」と呼ぶにふさわしいデータボリュームを扱うオーディエンスデータ解析基盤を構築しています。今秋、そのうちの1構成要素である、データサイズ …
-
-
【入門編】TreasureDataでサイトのアクセス解析をしてみた~第2弾!~
今回もやります、集計クエリ解説シリーズ第2弾!! 前回は、Webログからセッション単位のデータを作成するだけでした。 第2弾では作成したテーブルを元に、より実践的なアクセス解析、サイト分析で使えるHiveQLについて、実際に使用したクエリとともに解説していきたいと思います。 今回やったこと 利用した …
-
-
ディープラーニングで「顔が似ているAKB48のメンバーを教えてくれるbot」を構築
概要 こんにちは、システム開発部の中村です。 今回は、Facebook Messenger APIを利用して、 画像をアップロードすると、似ているAKB48のメンバーを教えてくれるbotを実装しました。 尚、ディープラーニングやTensorFlowそのものの解説というより、 「エンジンとしてディープ …
-
-
Amazon Redshiftのパフォーマンスチューニング #1 アーキテクチャ概要
ご挨拶 こんにちは。システム開発部の中村です。 現在新卒入社2年目で、普段は受託開発の要件定義等の業務が主担当だったりします。 このブログの発起人というか、まあ言い出しっぺという事で初稿を上げさせて頂きます。 今回はAmazon Web ServiceのDWHサービス、Redshiftのパフォーマン …