はじめに
「AppSheetを使って社内アプリを作ってみた」では、スマホからSpreadsheetに作業の依頼を登録するという簡単なアプリをつくりました。
今度は、逆にBigQueryのデータをSpreadsheetに集計・出力して、それをAppSheetを用いてスマホで見せるというアプリをつくりたいと思います。
0. 参考にしたサイト
こちら、前回と同じです。
1. 準備
まず、前提としてBigQueryからSpreadsheetに出力するということが必要です。
下記のような購買データのテーブルから、シンプルに、日別の売上件数をまとめたものを使います。
|id |店舗名 |購入日 |購入商品 |購入金額 |購入個数 |
|---|---|---|---|---|---|---|
|001|〇〇店|2020-01-10|product1|2500|1|
|002|☓☓店|2020-01-10|product1|750 |3|
|002|☓☓店|2020-01-10|product2|1000 |2|
そして、BigQueryからSpreadsheetに持ってくるのは、1年少し前にリリースされた、「BigQuery の大規模データセットを Google スプレッドシートで分析」のBigQueryデータコネクタを使おう。
と思ったのですが、これを使うにはG Suiteの一定会員以上(G Suite Businessとか)じゃないと駄目らしいので、敢えなく断念。
でも、諦めきれずに探していると、OWOX BI BigQuery Reportsという、Spreadsheetのアドオンを見つけたので、こちらを使うことにしました。
アドオンのインストールは、Spreadsheetのメニューバーから、アドオン>アドオンを取得で、「OWOX BI BigQuery Reports」を検索すれば可能です。
2. BigQuery → Spreadsheet
さて、OWOX BI BigQuery Reportsから、「Add new report」とすると、右側にメニューが表れました。
ここで、Projectを選択すると、Queryを入力できるようになります。
サンプルで、Git Hubからデータを取ってくるものもありますが、ここでは新たなQueryを発行しましょう。
普通はORDER BYは重いからしないのですが、日付順で欲しいので今回はORDER BYしています。
SELECT 購入日, SUM(購入個数) as 合計個数
FROM `myproject.mydataest.mytable`
GROUP BY 購入日
ORDER BY 購入日
※BigQueryでは変数に和名は使えませんが、分かりやすいようにここでは和名表記させていただきました。
Spreadsheetに、簡単にデータが取得できました。なぜか、日付がデフォルトで00:00:00になっていますね。
BigQueryではDate型なのですが、Spreadsheetに持ってくると「日時」形式になっているようです。
「日付」形式に変えておきましょう。1度変えると、再度Queryを回しても「日付」形式は維持されました。
3. Spreadsheet → AppSheet
AppSheetを起動し、既に存在している上記のSpreadsheetを元データに「Start with your own data」で作成します。
UX > Viewsから下記の設定を変更
- View Nameを変更
- グラフにしたいので、View typeを「chart」に変更
- chartのデフォルト「histogram(ヒストグラム)」から、今回は「col series(棒グラフ)」に変更
- VIEW OPTIONSのChart columnsで「購入個数」を選択
4.保存してアプリを起動
右上のSaveボタンで保存してから、Open in tabを押すと、アプリのエミュレーターっぽい画面が開きます。
グラフを選ぶと、詳細の画面にもジャンプできます。
これだけで、簡単にグラフができてしまいました。
ただ、日付の選択とかはできないんですかね。。。(★要確認)
そうなると、先月からの売上推移とか、固定した見せ方にしておく必要がありますね。
例えば、Spreadsheetから呼び出すSQLを下記のように変えると、今日の2ヶ月前から今日までの売上個数をグラフでみることができるようになります。
SELECT 購入日, SUM(購入個数) as 合計個数
FROM `myproject.mydataest.mytable`
WHERE 購入日 >= DATE_SUB(CURRENT_DATE("Asia/Tokyo"), INTERVAL 2 MONTH)
GROUP BY 購入日
ORDER BY 購入日
その上で、OWOX BI BigQuery Reportsから、Schedule reportsを選ぶと、毎日や毎月の自動実行を設定できます。これらを組み合わせて、自動更新されるBIアプリを作ることができました。
4.おわりに
前回、AppSheetとSpreadsheetの相性がとても良かったので、ぜひ次は見える化をしたいと思ってチャレンジしてみました。
ただ、AppSheetはあくまでアプリ作成用でBI作成用ではないので、単純にBIっぽい使い方をするのであれば、Data
PortalといったBIそのものの方が向いているかもしれません。(私が機能を調べきれていないだけかもしれませんが・・・)
ただ、AppSheetからSpreadsheetに何かを入力 → それを組み込んで処理を実行 → その結果をAppSheetに返す。といった一連の流れができれば、アリかもしれません。