kintoneのデータをRedashで可視化する
はじめに
kintoneに蓄積した売上データや案件情報などを使ってデータを分析する場合、kintoneのグラフ機能では物足りないから、ファイルに出力してExcelを使っているという方もいらっしゃると思います。
しかし、データ分析するたびにファイル出力しなければなりません。
また一度に出力できるファイルサイズは100MBまでなので、大量のデータを出力するときは分割出力する必要があります。
そんなとき、データを可視化できるツールとkintoneが連携できたら便利かと思います。
この記事では、オープンソースのデータ可視化ツール「
Redash
」とkintoneを連携し、kintoneで管理しているデータをRedashで可視化する方法を説明します。
kintoneとRedashの連携
RedashとMySQLなどの一般的なデータソースと連携させるには、あらかじめ提供されているコネクタを利用します。
コネクタが用意されていないデータソースに対しても、所定の書式のJSONを返すWebサーブレットを「
Querying URLs
」で呼び出すことで、外部のアプリケーションからのデータ取得ができます。
kintoneにはRedashのコネクタがないため、この「Querying URLs」というしくみを使ってデータを取得します。
今回、WebサーブレットはGoogle Apps Scriptを使って構築しています。
RedashでアプリIDを指定してクエリを実行すると、RedashからGoogle Apps Scriptへリクエストが送信されます。
Google Apps Scriptはkintone REST APIを実行してレコード情報を取得し、Redash用の書式に整形してRedashへ返します。
事前に必要なもの
- Redash環境
この記事では、v6.0.0で確認しています。 - Googleアカウント
- kintoneアカウント
kintoneアカウントを持っていない方は、1年間無料の「 開発者ライセンス 」を利用してください。
開発の流れ
- Google Apps Scriptによるプログラム作成
- Redashへのデータソース追加とクエリ作成
- おまけ:Query Resultsを使ったフィルターリング
Google Apps Scriptによるプログラム作成
設定方法
-
Google Apps Script から、[Start Script]ボタンをクリックします。
-
後述のプログラム を貼り付けます。
-
[ファイル]メニュー >[保存]ボタンをクリックして保存します。
適当なプロジェクト名(今回は、「kintone-redash-quering-url」)を入力し、[OK]ボタンをクリックします。
-
[ファイル]メニュー >[プロジェクトのプロパティ]を選択します。
[プロジェクトのプロパティダイアログ]が表示されるので、[スクリプトのプロパティ]タブを選択します。 -
[行を追加]リンクをクリックし、次のプロパティを入力します。
プロパティ 値 KINTONE_SUBDOMAIN 「xxxxx.cybozu.com」
kintoneのサブドメインを入力します。KINTONE_USER_ID kintoneにログインするユーザー名を入力します。
対象アプリに閲覧権限をもつユーザーとしてください。KINTONE_USER_PASSWORD kintoneにログインするパスワードを入力します。 -
[公開]メニュー >[Webアプリケーションとして導入]を選択します。
-
[Webアプリケーションとして導入]ダイアログが表示されます。
次のように入力し、[導入]ボタンをクリックします。
項目 値 プロジェクトバージョン 「New」を選択します。(初期値) 次のユーザーとしてアプリケーションを実行 「自分」を選択します。(初期値) アプリケーションにアクセスできるユーザー 「全員(匿名ユーザーを含む)」を選択します。 -
[現在のWebアプリケーションのURL]欄に表示されるURLをメモしておいてください。
[OK]を押して、ダイアログを閉じます。警告
このURLにアクセスするとkintoneアプリで保存しているレコード情報を取得できます。 URLが外部へ漏れないようにしてください。
-
スクリプトのページは閉じてもかまいません。
URL発行後に、修正したソースコードを反映する場合は、プロジェクトバージョンを上げる必要があります。 4. からの手順で、再度[Webアプリケーションとして導入]ダイアログを表示します。 [プロジェクトバージョン]項目で「New」を選択し[更新]ボタンをクリックします。
プログラム
以下のプログラムを、Google Apps Scriptに貼り付けてください。
警告
レコード一括取得時にその結果として1万を超える可能性がある場合は、運用・適用中のプログラムのご確認および修正対応の検討をお願いします。
詳細は
offsetの制限値を考慮したkintoneのレコード一括取得について
の「レコードIDを利用する方法」を確認ください。
|
|
Redashへのデータソース追加とクエリ作成
-
Redashを開きます。
-
画面右上のユーザー名を選択し、[Data Sources]を選択します。
-
[+ New Data Source]ボタンをクリックします。
-
データソースの一覧から[Url]を選択します。
-
データソースを追加します。
次のように入力し、[Save]ボタンをクリックします。
項目 値 Name データソースの名前です。
今回は「kintone」としました。URL Base Path 「https://script.google.com/macros/s/」と入力します。 HTTP Basic Auth Username 空欄 HTTP Basic Auth Password 空欄 -
画面上部の[Create]ボタンをクリックし、[Query]を選択します。
-
新規Query画面が表示されます。
次のように入力し、[Save]ボタンをクリックします。
項目 値 左側のドロップダウン 先ほど追加した「Url」データソースを指定します。
今回は「kintone」を選びます。右側のクエリ画面 「『Google Apps Scriptによるプログラム作成』の手順8. でメモしたURLのhttps://script.google.com/macros/s/以降」
+ 「?appId=」 + 「連携したいアプリID」を指定します。
たとえば、- URL:https://script.google.com/macros/s/xxxxxxx/exec
- 連携したいアプリID:1
xxxxxxx/exec?appId=1
-
[Execute]ボタンを押下し、データを取得します。
Google Apps Scriptにリクエストが送られ、返却されたkintoneのデータが表示されます。
これで、Redashからkintoneのデータを閲覧できるようになりました。
あとは「Visualization」機能を使ってグラフを作成したり、グラフを元にダッシュボードを作ってみましょう。
Redashの使い方については、
Redash Help
を参照してください。
Redashでは、こんな2軸グラフを作ることもできます。
Query Resultsを使ったフィルターリング
概要
「URL」データソースで実行されるGoogle Apps Scriptのプログラムは、kintoneのレコード全件を取得します。
そのため、条件で絞ったレコード抽出ができません。
グラフを作る場合、期間が今年などある程度フィルターリングしたデータを使いたいという場面が多いと思います。
その場合、「
Query Results
」(要v3.0.0以上)というデータソースを使うと、「Url」データソースで取得したデータの絞り込みができます。
Redashでは、クエリの実行結果をとRedashの内部データベースに保存しています。
「Query Results」は内部データベースで保存された実行結果に問い合わせするデータソースです。
手順
-
Redashを開きます。
-
画面右上のユーザー名を選択し、[Data Sources]を選択します。
-
[+ New Data Source]ボタンをクリックします。
-
データソースの一覧から[Query Results]を選択します。
-
データソースを追加します。
次のように入力し、[Save]ボタンをクリックします。
項目 値 Name データソースの名前です。
今回は「query-results」としました。 -
画面上部の[Create]ボタンをクリックし、[Query]を選択します。
-
新規Query画面が表示されます。
次のように入力し、[Save]ボタンをクリックし、保存します。
[Execute]ボタンをクリックすると、SQLのWHERE句で指定した条件に一致するデータだけを取得できるようになりました。
項目 値 左側のドロップダウン 先ほど追加した「Url」データソースを指定します。
今回は「query-results」を選びます。右側のクエリ画面 SQLクエリを記述します。
このとき、FROM句に「query_クエリID>」を指定することで、内部DBに保存されたそのクエリの実行結果を取得できます。
クエリIDが1の場合は「query_1」になります。
たとえば、「日時」フィールドが2019年03月01日以降になるデータに絞り込み、かつ「日時」の降順に並び替える場合は、次のようなSQLになります。SELECT * FROM query_1 a
WHERE a.日時 >= '2019-03-01 00:00:00'
ORDER BY a.日時DESC
クエリIDは、「Redashへのデータソース追加とクエリ作成」手順7. で作成したクエリのURLで確認できます。
http://サーバのURL/queries/数字
の数字部分がクエリIDです。
おまけ:
Query Parameters
機能を使うと、SQLに条件をべた書きすることなく絞り込み条件を指定できます。
ダッシュボードからも絞り込み条件を指定できます。
おわりに
Redashはオープンソースで利用できる便利なデータ可視化ツールです。
今回紹介した「Url」データソースを使えば、kintoneのデータをRedashに連携できます。
kintoneに蓄積したさまざまなデータをRedashが提供する柔軟なグラフやダッシュボードで可視化できると、データ分析作業の効率化につながるかもしれません。
このTipsは、2019年8月版kintoneで動作を確認しています。