Superset上でSpreadsheetのデータをSQLで集計してみた
はじめに
調査系のタスクをAmazon Athenaでこなしていましたが、
- サブクエリが使えない
- 参考情報を繋げる目的でRDSを選びたくても直接は選択できない
という2点で、毎回SQL Editor上でCreate Tableを使って何重にもテーブルを作成していました。もうちょっと手っ取り早くやりたいなというところで「SuperSetを使えばいいのではないか」と提案があり、ローカルにて色々と触ってみました。
既にS3から情報を取得する方法なども上がっていて「大体やりたいことが簡単にできる」と理解。ついでにマクロ目的でSpreadsheet上での計算を行うことも多々あり、念の為SpreadsheetをSuperSetで取り扱ってみましたがそこそこハマる感じでした。一通りの手順をまとめてみました。
SuperSetのセットアップ
apache/supersetを利用します。
git clone https://github.com/apache/superset.git cd superset git checkout latest touch ./docker/requirements-local.txt echo "gsheetsdb" >> ./docker/requirements-local.txt echo "gsheetsdb[sqlalchemy]" >> ./docker/requirements-local.txt docker-compose up
ログインするため http://localhost:8088/ へアクセスします。
- username
- admin
- password
- admin
Spreadsheetを取り込む
今回はサンプルとして以下のシートを使ってみることにします。
SuperSet上で「Data > DataBase」を選択し、右側の「+ DATABASE」を選択します。
DATABASE NAMEには適当な名前を、SQLALCHEMY URIにはgsheets://
と入れます。
「SQL Lab > SQL Editor」を選択し、クエリにSpreadsheetのURLを入れて「RUN」を実行します。
SELECT * FROM "https://docs.google.com/spreadsheets/d/1aK_5AtCw_DnlOMoIQjZHU2SUGboQ9VpX-7gDVRufBF0/edit#gid=1495731855"
一覧として取得できました。ただ、このデータをそのままデータソースとしては利用できません。postgres経由で取り扱うため、一度CSVとしてダウンロードしましょう。
EXPLORE / CSV / CLIPBOARDと並んでいるうちのCSVを選択します。
「Data > DataBases」からexamplesのEditを選択します。
EXTRAから「Allow Data Upload」にチェックをいれて「SAVE」を実行します。
「Data > Upload a CSV」を選択します。
TableNameに適当な名前をいれ、CSV FileにはダウンロードしたCSVを、Databaseがexamplesになっていることを確認して、一番下の「SAVE」を実行します。
「Data > DataSet」から作成したテーブルを選択します。
あとはお好みの条件で実行するだけです。
あとがき
データソース仕様の都合でやや回りくどい操作になりましたが、SQLベースで手軽に集計が掛けられるようになりました。Spreadsheet上での検索を手軽に行いたい時の選択肢としてお薦めです。