CDataを使ってkintoneをRDBのように扱う


え?kintoneってテーブル(アプリ)結合できないの?あかんやん。
他のツール使ってもいいからなんとかできないの?
という方向けの記事です。

やること

kintoneの2つのアプリ情報をまとめて一覧表示します。(標準機能ではできない)

今回はCData Excel Add-in for kintoneを使います。
CData Excel Add-in for kintoneの詳細については以下の記事を参考にしてください。
CData Software ハンズオン(Excelからkintoneのデータを取得&登録)

前提

案件管理アプリと活動履歴アプリがあり、案件と活動は1:Nで紐づきます。

  • 案件管理アプリの構成
    • 顧客名
    • 案件名
    • 費用
  • 活動履歴アプリの構成
    • 活動日(活動数=レコード数が取りたいので、今回の例では何でも良い)

このとき顧客ごとの案件名、費用、活動数、コスパ(費用/活動数)を一覧にします。

kintoneの準備

まずはアプリストアの営業支援パックをインストールします。
3つアプリがインストールされますが、利用するのは案件管理と活動履歴の2つです。
案件管理には10レコード、活動履歴には20レコードが登録されています。

CData Excel Add-in for kintoneの準備

以下の記事を参考にCData Excel Add-inをインストールして、接続設定まで完了させてください。
CData Software ハンズオン(Excelからkintoneのデータを取得&登録)

実行

さっそく実行しましょう。
Excelアプリケーションを起動して、空白のブックを開きます。
リボンのCDATAタブを選択し、「取得元Kintone」アイコンをクリックします。
クエリーに以下のSQLを貼り付けて、OKをクリックすると・・・

SELECT
  matter.顧客名, matter.案件名, matter.合計費用,
  activity.活動数, ROUND(matter.合計費用/activity.活動数) AS コスパ
FROM [CData].[Kintone].[案件管理(営業支援パック)] AS matter
  INNER JOIN (
    SELECT
      顧客名, 案件名, COUNT(*) AS 活動数
    FROM [CData].[Kintone].[活動履歴(営業支援パック)]
    GROUP BY 顧客名, 案件名) AS activity
  ON matter.顧客名 = activity.顧客名 AND matter.案件名 = activity.案件名
  ORDER BY コスパ DESC

※過去に営業支援パックをインストールしていた方はアプリ名を変更する必要があるかもしれません。
 アプリ名は「取得元Kintone」アイコンクリック後のテーブル項目を参考にしてください。

できました!
貼り付けたSQLはテーブル名だけが特殊ですが、他は通常のSQLです。これはすごい。

案件管理アプリの情報をベースに、活動履歴アプリの活動数(レコード数)、コスパ(費用/活動数)を表示しています。

まとめ

CDataを使えばRDBとしてkintoneを扱えるので2つ以上のアプリを結合することも可能です。
今回はわかりやすいように2つで紹介してみました。