以下の情報は、今日現在(2019/09/30)の情報になります。
Redash では Google Spreadsheet と連携することが可能です。
公式ドキュメントにも手順は記載されていますが ( https://redash.io/help/data-sources/querying/google-spreadsheet ) 、そちらの内容 +α をここでは書きます。
事前作業
- Google アカウントの用意
- Redash の用意
- Redash で読み込みたい Google Spreadsheet の用意
- Team Drive 配下に置いた場合、
v8.0.0-beta
以降でないと読み込めない(後述)
- Team Drive 配下に置いた場合、
この辺は割愛。
Google Compute Engine の Service Key を払い出し
Redash と Google Spreadsheet の連携には、 GCP から払い出した Service Key が必要です。
API とサービス - 認証情報
Google にログインした状態で上記ページにアクセスすると、Service Key の作成画面に遷移します。
事前に GCP の Project を作成していない場合は、上記画面から作成をし、Project を選択状態にします。
認証情報を作成
Service Key を作成する場合は、上記の画面上の**「認証情報を作成」をクリックして、「サービスアカウントキー」**を選択します。
サービスアカウントキーの作成
作成画面でサービスアカウントを発行するプロジェクトを選択します。
キーのタイプは**「JSON」**を指定します。
この画面で作成ボタンを押下すると、Service Key 情報が含まれた JSON ファイルがダウンロードされます。こちらのファイルはとても大事で、セキュリティ的にも重要なので、他人が閲覧できないような場所に保存をしておきます。
Google Spreadsheet の共有設定
上記で払い出した Service Key 経由で Google Spreadsheet がアクセスできるよう、共有設定を行います。
Google Spreadsheet 右上の**「共有」ボタンを押下し、先程発行した Service Key の JSON ファイルに記載されている「client_email」**を共有ユーザーとして登録します。
これで、Service Key 経由で Google Spreadsheet にアクセスできるようになりました。
Redash のデータソースの設定
引き続き、上記で払い出した Service Key の情報を、Redash の Data Source に設定します。
Redash には**「Google Spreadsheet」**データソースが存在するため、こちらを選択します。
設定項目は以下の2つです。
- Name
- 任意の名前を設定します。
- JSON Key File
- 上記で払い出した JSON ファイルをアップロードします。
情報を入力して Save ボタンを押下すると、設定は完了です。「Test Connection」ボタンで正しく GCP と接続が行えるか、疎通確認も行えます。
Redash からクエリー実行
Redash の Query 画面を開いて、Google Spreadsheet への連携を試みます。
Google Spreadsheet と連携する際は、クエリーは SQL ではなく、以下のような書式で記述します。
(Google Spreadsheet ID)|(Sheet Number)
Google Spreadsheet ID は、Spreadsheet の URL で記載されている英数字文字列です。
例として、公式ドキュメントに記載されている例を引用します。
What is the Spreadsheet ID?
You can find your Spreadsheet ID in its URL. So for example, if the spreadsheet URL is:
https://docs.google.com/spreadsheets/d/b94d27b9934d3e08a52e52d7da7dabfac484efe37Then the ID will be:
b94d27b9934d3e08a52e52d7da7dabfac484efe37
Sheet Number は、一番左のシートが**「0」、追って右に行くごとに 「1」、「2」** ... となります。
以下のようなテスト用の Google Spreadsheet を用意した場合
(Google Spreadsheet ID)|0
として Redash でクエリーした結果は以下のようになります。
Redash から条件を指定してクエリー実行
上記の手順で Redash から Google Spreadsheet の情報は取得できるようになりますが、こちらの方法だとシート上のデータをまとめて全部読み込む事しかできません。
何かしらの条件でフィルタリングしたい場合は、公式ドキュメントに記載されているとおり Query Results (すでにクエリー実行済みで Redash にキャッシュされたデータ)から検索をすることになります。
Query Results を Data Source に設定
Query Results からデータを読み込む場合は、Query Results を Data Source として登録する必要があります。
Query Results の設定項目は一つだけ(Name)で、任意の名前を設定します。
Query Results からデータの読み込み
Query 画面で、上記で作成した Query Results をデータソースとして選択します。
Query Results からキャッシュ済みのデータを呼び出す場合は、以下のような命名規則でテーブル名を指定することで SQL を用いて呼び出すことができます。
query_(query ID)
たとえば、Query の URL が /queries/101/
となっている場合、 Query ID は 101
となり、Redash 上で指定するテーブル名は query_101
となります。
任意の Query Results テーブルからは通常の SQL で自由にデータを取得できるため、たとえば WHERE 句の指定をして以下のようにデータの絞り込みを行うことができます。
このように、 Google Spreadsheet + Query Results を組み合わせることで、自由自在にデータの加工を行うことができます。
この例以外にも Query Results は他にも応用範囲が広く、端的に言うと複数の Data Source から取得したデータを容易に JOIN することができるため、大変便利な機能です。
Issue: Team Drive 配下の Google Spreadsheet は beta 版の Redash でないと読み込めない
Redash と Google Spreadsheet の連携ですが、タイトルで書いたとおり Team Drive 配下の Spreadsheet ファイルは現時点では beta 版の Redash からしか読み込むことができないようです。
この辺については Discussion がなされており( https://discuss.redash.io/t/google-spreadsheet-not-found/3620/8 )、 Change Log を見る限りだと v8.0.0-beta
よりサポートがされているようです。
Google Sheets:
Support for Team Drive.
ということで、ご注意ください。