jupyterのGoogleカスタマイズ版であるGoogle cloud Datalabはこれまで、GAE上でしか動かなかったので、安いとはいえ課金にちょっと抵抗があった。
でも最近ではベータ版ではDokcerイメージで配布され、ローカルでも動くようになったので試してみた。ローカルではなく社内のLinuxサーバーにインストールした。
これからDockerはアプリのパッケージ的使い方でも普及していきそう。
Quickstarts | Google Cloud Datalab | Google Cloud Platform
ボリュームのマウントは、notebookが再起動で消えてしまうので必須。
設定後、右上でGoogleアカウントで認証すれば、BigQuery、CloudStrageなどそのままアクセスできて便利。
%sql
でBigQueryのクエリを書いて、
%chart
で、Google Chartで出力できる。
出力する際は、
%sql --module module_name
で変数にいれて
%chart pie -f age,count --data module_name
のような感じ。
どんなチャートがあるか一覧で見たいときはチャートギャラリーがおすすめ。
Chart Gallery | Charts | Google Developers
チャートの使い方がわからないときは
%chart -h
選んだ種類ごとにオプションが違うので指定したうえで-hすればさらに詳しく見れる。
%chart pie -h
%htmlで始めればHTMLもそのまま書ける
Pythonで書きたい場合は
import datalab.bigquery as bq bq.Query("SELECT * FROM hoge").results()
などで
BigQueryのテーブル名を調べたいときも
%bigquery tables -f bizoceean*
でワイルドカードで検索した結果を出力できる。
この結果を会社の人に見せる際は、コマンドでHTMLで出力できる。
ホストマシンにjupyterを入れるか、docker execで
sudo jupyter nbconvert --to html USER_RANK.ipynb
でHTMLで同じディレクトリに出力されるので、これをメールで送るなり、Google Driveに入れるなりすればおk
ファイル名に日付を使いたいときは、dateコマンドで
sudo jupyter nbconvert --to html USER_RANK.ipynb --output=user_rank_`date "+%Y%m%d"`.html
また、決まった日時レポートでは、コードはスクロールが大変で見づらくなるため、グラフ、表だけ表示した方が良い。
検索してみたら、javascriptでコードを消す方法があった。
Google cloud datalabでは
%html <script> var code_show=true; //true -> hide code at first function code_toggle() { $('div.prompt').hide(); // always hide prompt if (code_show){ $('div.input').hide(); } else { $('div.input').show(); } code_show = !code_show } $( document ).ready(code_toggle); </script> <a href="javascript:code_toggle()">[Toggle Code]</a>
で書けた。
ほんと便利なツールです。
BigQueryのクエリー料金などがかかるのは、どこでもいっしょなのでそれはいいとして、無料で十分すぎるし、みんながこれを使ったらTableauとか死ぬんじゃないだろうか。