cybozu developer network

カテゴリー内の他の記事

kintone のデータを Redash で可視化する

Index

はじめに

kintone に蓄積した売上データや案件情報などを使ってデータを分析する場合、kintone のグラフ機能では物足りないから、ファイルに出力して Excel を使っているという方もいらっしゃると思います。

しかし、データ分析するたびにファイル出力しなければなりません。
また1度に出力できるファイルサイズは 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年間無料の「開発者ライセンス」をご用意しておりますのでぜひご利用ください。

開発の流れ

  1. Google Apps Script によるプログラム作成
  2. Redash へのデータソース追加とクエリ作成
  3. おまけ:Query Results を使ったフィルタリング

Google Apps Script によるプログラム作成

設定方法

  1. G SuiteDeveloper Hub から、[新規スクリプト]ボタンをクリックします。
  2. 後述のプログラムを貼り付けます。
  3. [ファイル]メニュー > [保存]ボタンをクリックして保存します。
    適当なプロジェクト名(今回は、「kintone-redash-quering-url」)を入力し、[OK]ボタンをクリックします。
  4. [ファイル]メニュー > [プロジェクトのプロパティ]を選択します。
    [プロジェクトのプロパティダイアログ]が表示されるので、[スクリプトのプロパティ]タブを選択します。
  5. [行を追加]リンクをクリックし、次のプロパティを入力します。

    3つすべて入力したら、[保存]ボタンをクリックします。

    プロパティ
    KINTONE_SUBDOMAIN 「xxxxx.cybozu.com」
    kintone のサブドメインを入力します。
    KINTONE_USER_ID kintone にログインするユーザー名を入力します。
    対象アプリに閲覧権限を持つユーザーとしてください。
    KINTONE_USER_PASSWORD kintone にログインするパスワードを入力します。
  6. [公開]メニュー > [ウェブアプリケーションとして導入]を選択します。
  7. [ウェブ アプリケーションとして導入]ダイアログが表示されます。
    次のように入力し、[導入]ボタンをクリックします。

    項目
    プロジェクトバージョン 「New」を選択します。(初期値)
    次のユーザーとしてアプリケーションを実行 「自分」を選択します。(初期値)
    アプリケーションにアクセスできるユーザー 「全員(匿名ユーザーを含む)」を選択します。
  8. [現在のウェブアプリケーションのURL] 欄に表示される URL をメモしておいてください。
    [OK]を押して、ダイアログを閉じます。
    ※ この URL にアクセスすると kintone アプリに保存しているレコード情報を取得できます。
    URLが外部へ漏れないようにしてください。
  9. スクリプトのページは閉じても構いません。

※ 注意
URL 発行後に、修正したソースコードを反映する場合は、プロジェクトバージョンを上げる必要があります。
4. からの手順で、再度[ウェブアプリケーションとして導入]ダイアログを表示します。[プロジェクトバージョン]項目で「New」を選択し[更新]ボタンをクリックします。

プログラム

以下のプログラムを、Google Apps Script に貼り付けてください。

※ レコード一括取得時にその結果が1万を超える可能性がある場合には、運用・適用中のプログラムのご確認ならびに修正対応の検討をお願いいたします。
詳細はこちらの記事の「レコードIDを利用する方法」を確認ください。

Redash へのデータソース追加とクエリ作成

  1. Redash を開きます。
  2. 画面右上のユーザー名を選択し、[Data Sources]を選択します。
  3. [+ New Data Source]ボタンをクリックします。
  4. データソースの一覧から [Url] を選択します。
  5. データソースを追加します。
    次のように入力し、[Save]ボタンをクリックします。

    項目
    Name データソースの名前です。
    今回は「kintone」としました。
    URL Base Path  「https://script.google.com/macros/s/」と入力します。
    HTTP Basic Auth Username 空欄
    HTTP Basic Auth Password 空欄
  6. 画面上部の[Create]ボタンをクリックし、[Query]を選択します。
  7. 新規 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
  8. [Execute] ボタンを押下し、データを取得します。Google Apps Script にリクエストが送られ、返却された kintone のデータが表示されます。

これで Redash で kintone のデータを閲覧できるようになりました。

あとは「Visualization」機能を使ってグラフを作成したり、グラフを元にダッシュボードを作ってみましょう。
Redash の使い方については、Redash Help をご参照ください。
Redash では、こんな2軸グラフを作ることもできます。

Query Results を使ったフィルタリング

概要

「URL」データソースで実行される Google Apps Script のプログラムは、kintone のレコード全件を取得します。
そのため、条件で絞ったレコード抽出ができません。

グラフを作る場合、期間が今年などある程度フィルタリングしたデータを使いたいという場面が多いと思います。
その場合、「Query Results」※というデータソースを使うと、「Url」データソースで取得したデータの絞り込みができます。※ 要 v3.0.0 以上

Redash では、クエリの実行結果をとRedash の内部データベースに保存しています。
「Query Results」は内部データベースで保存された実行結果に問い合わせするデータソースです。

手順

  1. Redash を開きます。
  2. 画面右上のユーザー名を選択し、[Data Sources]を選択します。
  3. [+ New Data Source]ボタンをクリックします。
  4. データソースの一覧から [Query Results] を選択します。
  5. データソースを追加します。
    次のように入力し、[Save]ボタンをクリックします。

    項目
    Name データソースの名前です。
    今回は「query-results」としました。
  6. 画面上部の[Create]ボタンをクリックし、[Query]を選択します。
  7. 新規 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で確認したものになります。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

サインインしてコメントを残してください。