Google BigQuery - bq command編

こんにちは、三回連続でSSTDの大村です。1年の半分がすぎてもう7月ですね。私事ですが、弊社の社屋移転まで10日あまりとなりました。各種説明会、片付けなどで社内がばたばたしています。当たり前のように通勤していたオフィスですがあと10日で別の場所になるのかと思うと急にセンチメンタルな気分になります。

前回までウェブインターフェースであるBigQuery BrowserからBigQueryを操作していましたが、コマンドラインから操作するためのbq Command-line Toolも用意されています。このbqはpythonベースのツールになっています。今回はbqの設定をし、簡単なコマンドの入力までを紹介します。

ローカル環境

  • OS:Windows8 Pro 64bit
  • CPU:Intel Core i7 2.00GHz
  • RAM:8GB

インストール

Linuxなどの環境ではできる方が多いと思いますので、今回はWindows環境での設定方法を紹介します。今回はgoogle-bigquery-tools/README.txtを参照しました。

必要条件

  • python 2.6.5かそれ以上
  • Linux, Windows, OS Xの環境

pythonインストール

まずはインストーラーをダウンロードします。
下記のURLの「Python 2.7.5 Windows X86-64 Installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source)」をダウンロードしました。

http://www.python.org/download/

python3.X.X台ですと弊社環境で動作しませんでしたので、今回はPython 2.7.5を利用しています。ダウンロードが完了したら、実行し、「C:\Python27」にPython環境をインストールします。

easy_installインストール

次にpythonのRubyのgemにあたるeasy_installをインストールします。下記のURLのファイルをローカルにダウンロードし、「C:\Python27」直下に配置します。

ez_setup.py

コマンドプロンプトを起動し、「C:\Python27」に移動し、ez_setup.pyを実行します。

>cd C:\Python27
>python ez_install.py

bqインストール

次に「C:\Python27\Scripts」に移動し、bqをインストールします。下記のコマンドを打って、しばらく待っているとインストールが終了します。ネットワーク状況によると思いますが10分くらいはかかるので待っていて下さい。

>cd C:\Python2\Scripts
>easy_install bigquery

PATHの登録

毎回、pythonフォルダに移動するのもめんどくさいのでPATHにpythonフォルダの位置を登録します。PATHに「C:\Python27」と「C:\Python27\Script」を登録します。

確認

コマンドプロンプトでコマンドが実行できるか確認してみます。

>bq help

これで利用できるコマンド一覧が表示されればインストール成功です。

bq commandを利用してみよう

承認

まずはじめに自分のアカウントを利用するために初期化する必要があります。

>bq init

URLが表示されますので、コピーしてブラウザでアクセスしてください。アクセスすると表示されるコードをコマンドプロンプトの「Enter verification code:」の横に貼り付け、Enterします。成功すると現在のProjetの一覧が表示されます。

基本的なコマンド

基本的なコマンドを紹介します。

データセットの一覧を表示します。後ろにデータセット名を指定すると指定したデータセット内のテーブル一覧を表示します。

>bq ls

次にqueryを投げてみましょう。前回UPしていたデータがあると思いますのでそれを利用します。

>bq query "select * from testdataset.testtable"

こんな感じで表示されます。

最後にテーブルを作成し、データをインポートしてみます。前回CSV形式でアップロードしたので、今回は下記のようなjson形式のデータをアップロードします。

実行コマンドは以下のとおりです。

>bq mk testdataset.jsontbl
>bq ls testdataset
>bq load --source_format NEWLINE_DELIMITED_JSON testdataset.jsontbl ./test.json id:integer,name:string,time:timestamp
>bq query "select * from testdataset.jsontbl"

コマンドを利用することで処理の自動化などができるようになり、大変便利に利用できそうです。BigQueryの特集は今回で最後ですが、機会があれば速度検証結果やREST_APIの紹介もしていきたいと思います。

執筆:大村@SSTD