CData Software Blog

クラウド連携のCData Software の技術ブログです。

kintone データを毎回エクスポートせずに Tableau で分析したい! CData Sync を使って 3 ステップで kintone データをデータベースに連携・同期

f:id:sugimomoto:20190206151921p:plain

こんにちは! CData Software Japan リードエンジニアの杉本です。

本日は最新版がリリースされたばかりの CData Sync を使って、kintone のデータを Tableau 等のBIツールで分析したい場合によく発生する課題を解消方法を紹介したいと思います。

普段どおり Tableau で分析する場合(Before)

CData でも普段から各種BIツールを使いながら分析を実施しているんですが、そこでよくボトルネックになるのは、どうやってクラウドデータソースから Tableau などのBIツールにデータを取り込むのか? といった点です。

おそらく、ほとんどのユーザーは kintone の基本的機能である CSV エクスポート機能を使って、こんな感じでBIツールにデータを取り込んでいるのではないかと思います。

f:id:sugimomoto:20190206141303p:plain

そんなに難しいスキルが居るわけでも無いので、あまりデータ量が多くなければ、これでもいいのですが、10以上のアプリケーションにまたがったり、データの更新が早いアプリケーションがあったりすると、「エクスポートして読み込んで、エクスポートして読み込んで」だけでかなりの時間を浪費してしまいがちです。

また、kintone のエクスポート機能は書き出すファイルが100MBを超えると、書き出しに失敗してしまうので、大量のレコードを扱うことには向いていません。

https://jp.cybozu.help/k/ja/user/app_collectdata/data_export.html

代替案として、kintone の REST API を使って自動的に出力できるようにする、という方法も紹介されていますが、非技術者にとってはなかなか腰が重くなる作業ではないかなと思います。

CData Sync を使って Tableau で分析する場合(After)

そんなボトルネックや業務の煩わしさを CData Sync を使って解決します。

CData Sync は kintone のデータを各種データベースに連携・複製してしまうツールです。

これを利用することで、常にデータベースには最新の kintone データが複製されているので、Tableau などの BI ツールはそのデータベースを見に行くだけで作業が完結します。

f:id:sugimomoto:20190206141312p:plain

データベースに格納されているので、大量データの集計やフィルタリングに悩むこともありません。

一度そのデータベースをTableauで参照してしまえば、接続先の調整やメンバー同士での共有も楽ちんです。

いわゆる簡易DWH(データウェアハウス)を作ってしまう、とイメージしてもらえればわかりやすいのではないかなと思います。

今回の記事ではこの実現手順をステップバイステップで紹介していきたいと思います。

ちなみに、動画でも公開しているので、是非参考にしてみてください。

www.youtube.com

ちょっとだけ補足

今回はシンプルにMicrosoft Azureで提供されている Azure SQL Databaseを利用しますが

CData Sync では用途や環境に合わせて、同期先のDBを変えられます。

SQL ServerMySQLといった基本的なRDBはほとんどカバーしていますし、BigQueryなどのビッグデータ系DWHにも連携可能です。

f:id:sugimomoto:20190206141507p:plain

お好みのデータベースに合わせて、同期先を変えてみてください。自動的にCSVを生成するみたいなことも可能です。

必要なもの

・CData Sync 2019

・CData Sync kintone Connector

・kintone アカウント(kintone評価版アカウント取得、および、サンプルアプリケーションの作成方法 - Qiita

・Azure アカウント

CData Sync や kintone Connector はトライアル版が提供されています。

Azure アカウントは12ヶ月無料のトライアルアカウントがあります。

https://azure.microsoft.com/ja-jp/free/

実施手順

それでは実際に同期・分析するまでの手順を解説していきたいと思います。

Azure SQL の構成

まず、レプリケート先となるAzure SQL Database を構成します。

Azure Portal にログインし、「リソースの作成」→「SQL Database」を選択

f:id:sugimomoto:20190206142445p:plain

任意の構成でデータベースを作成します。

ちなみに価格レベル次第でレプリケート速度が変わるので、データ量や同期頻度を考慮しながら設定するとよいでしょう。

f:id:sugimomoto:20190206142457p:plain

Azure SQL Database を構成したら、サーバー側のファイアウォール設定で接続元のIPアドレスを許可します。

今回はローカルマシンにCData Syncを入れるので、そのマシンから接続する際のIPアドレスを許可します。

対象のデータベース管理画面から「サーバーファイアウォール設定」をクリックし

f:id:sugimomoto:20190206142559p:plain

「+クライアントIPの追加」で、現在接続しているIPアドレスを自動的に登録し、「保存」を押します。

f:id:sugimomoto:20190206142606p:plain

以上でAzure SQL Database側の設定は完了です。

CData Sync のインストール

続いて、CData Syncをインストールします。

以下のURLにアクセスし「ダウンロード」をクリック

https://www.cdata.com/jp/sync/

f:id:sugimomoto:20190206142614p:plain

CData Sync は Windows 版と Linux などの Cross-Platform 版があるので、任意のプラットフォームを選択して、ダウンロードを行います。

f:id:sugimomoto:20190206142621p:plain

今回はWindows 版を選択しました。

ダウンロードできたインストーラーを立ち上げると、セットアップウィザードが表示されるので、画面に従ってセットアップを実施します。

f:id:sugimomoto:20190206142628p:plain

対象のデータソースコネクタをインストール(kintone)

CData Sync のインストールが完了したら、次に対象のデータソースコネクタをインストールします。

今回は kintone コネクタが必要なので、以下のURLにアクセスし、kintone コネクタダウンロードをクリックします。

https://www.cdata.com/sync/download/#sources

f:id:sugimomoto:20190206142635p:plain

インストーラーをダウンロードしたら、先程と同じようにセットアップを実施します。

f:id:sugimomoto:20190206142642p:plain

CData Syncの起動

CData Sync インストールが完了すると、以下のようにログイン画面が表示されるので、設定したID・PWでログインを実施します。

f:id:sugimomoto:20190206142724p:plain

この画面から各種設定を実施していきます。

f:id:sugimomoto:20190206142728p:plain

データソースの設定(kintone)

それでは最初にデータソース側の設定を行います。

ナビゲーションメニューから「接続」→「データソース」を選択し、表示されているデータソース一覧の中から「kintone」のデータソースを選択します。

f:id:sugimomoto:20190206142735p:plain

次の画面で、kintone に接続するための各種設定を実施します。

f:id:sugimomoto:20190206142743p:plain

基本的な入力内容は以下の通りです。

  • Url :接続先 kintone のURLを入力します。例:https://xlqc1.cybozu.com/
  • User:ログインするユーザーのIDを指定します。
  • Password:ログインするユーザーのパスワードを指定します。

同期先の設定(Azure SQL DataBase)

次に同期先の設定を行います。

同じく接続の画面から「同期先」を選択し、一覧の中から対象の同期先「Azure SQL Databae」を選択します。

f:id:sugimomoto:20190206142757p:plain

先程のデータソースの接続先と同じように接続情報を入力します。

f:id:sugimomoto:20190206142809p:plain

  • Server:Azure SQL Database の Server アドレス 例:cdatasyncsugimototest.database.windows.net
  • Database:接続先となるデータベース名
  • User:SAユーザーのID
  • Password:SAユーザーのPW

同じように接続テストを実施して、接続が確立できれば設定完了です。

「変更を保存」して設定を終了します。

ジョブの設定

それでは最後にデータソースと同期先の設定を元に、どのテーブルをどのように同期するのか?といった設定となるジョブを追加します。

ナビゲーションメニューから「ジョブ」を選択し「ジョブを追加」をクリックします。

f:id:sugimomoto:20190206142823p:plain

データソースと同期先の構成

ジョブの作成画面に移動後、まずソースと同期先の設定を確認します。

複数ソース、複数同期先を登録している場合は、ここで対象となるものをそれぞれ指定します。

f:id:sugimomoto:20190206142829p:plain

テーブルの追加

続いてデータソースから同期したいテーブルを選択します。

「+テーブルを追加」をクリックし

f:id:sugimomoto:20190206142845p:plain

テーブルの一覧が表示されるので、ここから任意のテーブルを選択します。

今回はテンプレートで作成できる「案件管理」のアプリを選択しました。

f:id:sugimomoto:20190206142856p:plain

ちなみにサブテーブルも選択することができます。

カラムマッピングの構成

次に同期するカラムの構成を確認します。

追加したテーブル設定の横に「変換」のボタンが表示されるので、このボタンをクリックします。

f:id:sugimomoto:20190206142940p:plain

この画面からレプリケートするカラムの取捨選択や、レプリケートするデータのフィルタリング設定を行うことが可能です。

今回は特に設定を変更しませんが、不要なカラムはここで除外しておくと、後々BIツールなどで分析する際に楽になるのではないかと思います。

f:id:sugimomoto:20190206142949p:plain

スケジュールの構成

今回は一度きりのレプリケートですが、CData Sync ではスケジュールを構成して同期することも可能です。

1時間に1回や1日1回といった構成が可能になっています。

今回は1時間に1回実行したいので「Run Job: Hourly」で「毎時何分:0」を指定します。

f:id:sugimomoto:20190206152502p:plain

これで、1時ちょうど、2時ちょうど、といった形で実行されていきます。

詳細設定

詳細設定では、レプリケートでよく発生するエラーハンドリングやアプローチの設定を変更することができます。

特に文字列の自動切り捨てなどはJSONのオブジェクトが想定以上に長い場合などに、エラーで終了せず切り捨て登録などをしてくれるものになるので、対象のデータベースの設定次第ではチェックを入れていいと思います。

f:id:sugimomoto:20190206143118p:plain

実行と結果確認

すべての設定が完了したら、実行してみましょう。

一度「変更を保存」をクリックします。

f:id:sugimomoto:20190206143136p:plain

今回は手動で実行するため、対象となるテーブルを選択し「実行」ボタンをクリックするだけです。もちろん、先程スケジュールを構成していれば、特に実行する必要はありません。

f:id:sugimomoto:20190206143206p:plain

実行すると、以下のようにステータスが「Runninng」となり

f:id:sugimomoto:20190206143212p:plain

成功すれば、以下のように処理された件数が表示されます。

f:id:sugimomoto:20190206143219p:plain

SQL Server Management Stadio を起動し、対象のAzure SQL databaseにアクセスしてみると、以下のようにデータが取り込まれていることが確認できます。

f:id:sugimomoto:20190206143226p:plain

Tableau からアクセスしてみる

あとは Tableau からの Azure SQL Server にアクセスするだけで通常どおりレポートの作成ができます。

f:id:sugimomoto:20190206143237p:plain

f:id:sugimomoto:20190206143322p:plain

f:id:sugimomoto:20190206143340p:plain

追加・更新したレコードも自動で同期

CData Sync では自動で新しく追加されたレコード・更新されたレコードも自動的に識別して、同期されます。

例えば、以下のようにレコードを更新し

f:id:sugimomoto:20190206143355p:plain

新しくレコードを

f:id:sugimomoto:20190206143410p:plain

この状態で再度実行すると

f:id:sugimomoto:20190206150403p:plain

今度は以下のように処理結果が2件とだけ表示されます。

f:id:sugimomoto:20190206150410p:plain

すると以下のように2件だけ、最新のデータが反映されました。

f:id:sugimomoto:20190206150419p:plain

CData Sync kintone Connector の制約事項

削除されたレコードは同期されません。すでに同期されたレコードはそのまま残ってしまうので、ベストプラクティスとしては kintone のデータは削除するのではなく、削除フラグなどの論理フラグを立ててもらうのが望ましいです。

サブテーブルも同期可能です。ただ、サブテーブルは差分更新に対応していないため、都度一括処理になります。

終わりに

いかがでしたでしょうか。

最近 kintone で大量のデータを扱うシチュエーションも増えてきたように見受けられます。

会社によっては数百のアプリを運用しているところもあるようですし、そういった場合に kintone のデータ分析を行うのはなかなか骨が折れると思います。

そういった分析のための余計な仕事を CData Sync でうまく緩和してもらえればなと思います。