こんにちは。
先日、kintone+PowerBI連携について発見したことを、軽い気持ちでつぶやいたら、思っていたよりも反響があったので怖くなり、どういうことなのかを説明する記事です。
書き忘れていましたので、追記ですが、kintoneもPowerBIも無料で使えます。
kintoneはここから。
PowerBI(Desktop)はここから。
https://aka.ms/pbidesktopstore
書き忘れはここまで。
追加。
R3さんの記事にもいいのがあった! こちらもご確認ください。
https://www.r3it.com/blog/powerquery-to-kintone
実戦的な内容は
これとか
【Kintone Power BI Connector】
https://www.cdata.com/jp/drivers/kintone/powerbi/
これとかがあります
【Smart at tools for kintone BI接続】
https://kintone-sol.cybozu.co.jp/integrate/msol019.html
プログラマとしてはこのR3さんの記事が素晴らしく、Rも書けるので楽しいです。
https://www.r3it.com/blog/powerbi-with-r-script
このほかにも優れたいくつかの方法があります。
- DataSpider, AsteriaWarpなどでDBに放り込む
- cli-kintoneでローカルにCSV化して取り込む
- Access + cli-kintone
- 簡易DBを作って同期(帳票も作れてわりと便利です)
- krewData + BOX
- マウントしたディレクトリに同期したCSVから取り込む
- krewData + GoogleSpreadsheet
- krewDataの外部入出力
- GoogleWorkspace単体
- krewではなくGASでスプレッドシートに同期
- Makeをつかって橋渡し
- APIを作る
- AWS:APIGateway+Lambda
- これを言ってしまうとAzureとかFirebaseもできてしまうので宇宙
- AWS:APIGateway+Lambda
- Node, PythonなどでShellを書く
- これも宇宙ですね😅
やったことがある方法でもこのくらいあって、他にもいろいろ思いつくことができます。
実際に案件でやるなら、この中からお財布と相談してって感じ。
本題
見ていただくとわかるんですが、結局PowerBIが機能単体でkintoneにアクセスする方法はないんですよね。結局開発がちょっと入るというか。
さくっとPowerBI単体で接続できないかなって、いろいろいじっていました。
で、問題の手法について。これはコードを書く必要がないし、PowerBIの力をお手軽に感じられるのでいいかなって思っています。
それでは、作ってみましょう。
kintoneの準備
アプリにアクセスするので、APIトークンを作成します。
アプリがない方は、適当に作ってください。
レコード閲覧権限があればいいです。更新したり削除したりはしないですもんね。
その後、アプリIDを控えておいてください。
https://support.kincone.com/hc/ja/articles/4411880749081-kintone%E9%80%A3%E6%90%BA-%E3%82%A2%E3%83%97%E3%83%AAID%E3%81%AE%E7%A2%BA%E8%AA%8D
アプリIDが何かわからない人は👆の記事が一番わかりやすいです。
ここまでで取得しているものは
- APIトークン
- アプリID
です。
PowerBIの設定
PowerBI Desktopを開きます。
空のレポートで新規作成していきます。
point
kintoneの/k/v1/records.jsonというAPIを使います。
https://cybozu.dev/ja/kintone/docs/rest-api/records/get-records/
エンドポイントは
https://[あなたのドメイン]/k/v1/records.json?app=[アプリID]
となります。
https://[あなたのドメイン]/k/v1/records.json?app=[アプリID]&query=[クエリ]
でクエリを指定することもできます。
データソースの設定
ここで、初期表示では「基本」になっていますが、「詳細設定」にします。
エンドポイントのURLを入れます。(2段になっているのは気分です😆)
クエリーパラメータ(?以降のパラメータ)に
app=アプリID
query=limit 500
を入れます。
意味としては、500件までとらせてください。といったところです。
HTTP要求ヘッダーパラメーターに
x-cybozu-api-tokenとして、アプリのAPIトークンを設定します。
そうして、「OK」を押す。
見事、kintoneのデータが取得できます。
よく見ると、recordsの内容をきれいに取得するDAXが、生成されているのが分かります。
その後、「閉じて適用」を押します。
あとはいい感じにかっこいいグラフを作ります。
気になる制限事項
kintoneのAPIの取得制限にどうしてもかかってしまいます。
スクリプトで取得する場合はループして取るのですが、1発では難しい。
クエリにoffsetが使えるので、データソースを複数用意してDAXで結合すればそこそこの件数は行けると思います。offsetは外れても0件データになるだけなので。
(例えば「query=limit 500 offset 500」を指定してみる。)
あとは、最新データを取得する用途であれば、500件以内(あるいは頑張って設定したOffsetずらしのテーブル群のなか)に目標データが含まれていればいいので問題ありません。工場の日次のライン生産データとか。
直結のメリット
MicrosoftFabricなどにPublishしたときに、自動更新を設定できます。
こんな感じで発行して、クラウドへ持ち込みます。
詳しくは説明しませんが、セマンティックモデルの更新を自動設定して。
まとめ
- kintone-REST-APIを利用してデータの取得ができる
- PowerBIがいい感じにモデルを作ってくれる
- 500件しかとれない🫠 もっと取りたい人は、ちからわざ💪
ちょちょっと作ってさくっとレポートを作成するにはとっても楽ちんです。ドリルダウンとかも作れるし。
かっこいいグラフが作れると仕事ができる気分になれるので、みなさんも試してみてください。
案件でやるならcli-kintoneとか使って実行する覚悟は欲しいところです。
この記事は以上です。ありがとうございました。
kintoneのプラグイン開発や研修などを行っています。
お仕事のお話はこちらまで。