CData Software Blog

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

100万件のkintone アプリデータをGoogle BigQuery に連携して集計・分析を行う:CDataSync

f:id:sugimomoto:20200219184324p:plain

はじめに

最近 kintone でもかなり大容量なデータを扱っているところが増えてきているように思います。CDataへの問い合わせでも、数十万レコードをkintone アプリに連携させたり、BIツールで分析したいといった問い合わせがよく聞かれるようになりました。

kintone は下記の制約事項に関するページでも書かれている通り、100万件登録した状態でも快適にデータの登録や閲覧が可能です。

https://jp.cybozu.help/k/ja/admin/limitation/limit.html

登録レコード数が多くなると、アプリの動作が遅くなる場合があります。表示やデータ処理の速度は、絞り込み条件、フィールド数などの利用条件によって異なります。レコードの登録や閲覧に関しては、1つのアプリに100万件を登録した状態で快適に使用できることを確認しています。

f:id:sugimomoto:20200219183053p:plain

ただ、最終的にそのデータを分析・集計する時に満足なパフォーマンスが得られるか? 柔軟に集計・グルーピング・フィルター処理できるか? といった点では難しいのではないでしょうか。

Excelエクスポートをして、Excel上で分析なんてもってのほかですし、都度API経由で取得するのは効率がよく有りません。(一応Excelは100万行対応していますが)

ビッグデータビッグデータ専門のデータストアで

数百万レコード、GB級以上のデータを扱うようなシチュエーションの場合には、DWH(データウェアハウス)にデータを移して、そこで集計・フィルター処理などをアドホックに行うことが現在のスタンダードでしょう。

DWHはAzure・AWSGoogleなどのクラウドプラットフォーム各社がそれぞれ特徴のあるサービスを提供しており、そこにデータを貯めておけば、BIツールなどで接続してエンドユーザーでもビッグデータを分析・活用しやすくなります。

ただ、kintone からそのようなDWHにデータを持っていくことはちょっと敷居が高いです。各クラウドベンダーはそれぞれETL/ELTツールやデータプレパレーションツールを持っていますが、国産クラウド製品であるkintoneには対応していないところがほとんです。

そこで、kintone データソース含め、200種類以上のクラウドSaaSサービスに対応している ELTツールであるCDataSync を使って、そのボトルネックを解消し、kintoneのビッグデータをスムーズに分析できる環境を整える方法を紹介します。

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

f:id:sugimomoto:20200107113029p:plain

なお、今回は高性能で使いやすい Google BigQuery を対象として、kintone に登録した100万件のレコードを連携し分析できるようにしてみました。

対象データは以下のようなアプリで、予め100万件レコードを登録しておきました。これをBigQueryに流し込みます。

f:id:sugimomoto:20200219183113p:plain

実施手順の動画

以下のGIFアニメで大まかな実施手順を撮影してみました。データの登録には30分ほどかかるのでそこは割愛していますが、大まかな流れがつかめると思います。

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/CDataBlog/million.gif

必要なもの

  • Google BigQuery・Data Portalが利用可能な GCPアカウント
  • kintone アカウント
  • CData Sync

Google BigQuery の準備

まずは、データの格納先となる Google BigQueryのプロジェクトとデータセットを構成しておきます。

なお、今回はあらかじめ専用のアカウントを作って対応しています。

手順は特に難しくありません。GCPの管理コンソールへ移動し、新しいプロジェクトを作成

f:id:sugimomoto:20200107113111p:plain

BigQuery に移動し、プロジェクト配下にデータセットを作っておきます。ここに連携結果がテーブルとして格納されます。

f:id:sugimomoto:20200107113116p:plain

以上で BigQuery 側の準備は完了です。

CDataSyncのインストール

それでは、CDataSyncの設定を行っていきましょう。

CDataSyncはインストール型のソフトウェアなので、以下のURLからダウンロードして、任意のPCもしくはサーバーでセットアップを行います。

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

f:id:sugimomoto:20200107113122p:plain

セットアップ後、CData Syncの画面がブラウザで立ち上がるので、セットアップ時に入力したパスワードとユーザー名「admin」を入力して、ログインします。

f:id:sugimomoto:20200107113128p:plain

ログイン後「情報」タブに移動し、「30日間の評価版をアクティベート」を行えば、CDataSyncの初期設定は完了です。

f:id:sugimomoto:20200107113135p:plain

kintone データソースの設定

最初にデータのSyncを行うためのデータソースの設定を行います。

CDataSyncでは任意のデータソースを自由に追加して、連携することが可能です。

デフォルトでは kintone データソースが含まれていないため、「接続」に移動し「+ Add More」をクリックし、追加を行います。

f:id:sugimomoto:20200107113139p:plain

f:id:sugimomoto:20200107113144p:plain

一覧の中から「kintone」を検索し、追加します。

f:id:sugimomoto:20200219183400p:plain

追加後、CDataSyncが再起動します。再起動後、データソースの一覧から「kintone」が選択できるようになるので、これを選択し接続設定を行います。

f:id:sugimomoto:20200219183405p:plain

接続設定では、以下の項目をセットし、保存します。

  • URL:接続先となる kintone のURL(例:https://XXXX.cybozu.com/
  • User:ログインユーザーのID
  • Password:ログインユーザーのパスワード

f:id:sugimomoto:20200219183412p:plain

BigQueryへの同期先設定

続いて、同期先となるBigQueryへの接続を構成します。

「接続」→「同期先」から「Google BigQuery」を選択し

f:id:sugimomoto:20200107113206p:plain

あらかじめ作成しておいた、「ProjectId」と「Dataset Id」を入力し、「接続」をクリックします。

クリックすると、OAuthの認証プロセスが開始されますので、対象アカウントでログインし、アクセス許可を承認してください。承認後、設定を保存すれば準備完了です。

f:id:sugimomoto:20200107113211p:plain

ジョブの作成

それでは実際に処理内容を記述したジョブを作成し、データをBigQueryに連携してみます。

ジョブのタブから「ジョブを作成」をクリックし

f:id:sugimomoto:20200107113216p:plain

事前に構成した「kintone」と「BigQuery」を、ソースと同期先としてそれぞれ構成します。

f:id:sugimomoto:20200219183423p:plain

次に連携するデータを決定するために、「テーブルを追加」をクリックし

f:id:sugimomoto:20200219190622p:plain

対象のアプリを選択します。

f:id:sugimomoto:20200219183429p:plain

これは任意ですが、スケジュールタブから日次の処理にするためにスケジューラーを設定します。これで1日1回、BigQueryへ最新のデータが同期されます。

f:id:sugimomoto:20200219190644p:plain

後は設定を保存すれば、完了です。

実行

手動実行はテーブルタブから対象となるテーブルを選択し、「実行」ボタンをクリックすることで実施可能です。

f:id:sugimomoto:20200219183436p:plain

実行後、一定時間が経過すると、以下のようにステータスが変わります! 無事成功したようです。

f:id:sugimomoto:20200219183458p:plain

ログのタブでは実行時間も確認できるので見てみると、およそ30分で完了していました。

f:id:sugimomoto:20200219183529p:plain

BigQueryも見てみると、正常に100万件登録されています!

f:id:sugimomoto:20200219183554p:plain

データもしっかり入っていますね。

f:id:sugimomoto:20200219183611p:plain

試しにレコードIDだけを集計処理してみたら、1.5秒で完了。

f:id:sugimomoto:20200219183618p:plain

あとは、Google Data portal などのBIツールで分析できるので、手軽でとても良いです。

是非 kintone にたくさんデータが溜まってしまって、分析が大変だ! となったら、試してみてください。