4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PowerBI】kintoneと直結させる方法

Last updated at Posted at 2025-02-06

こんにちは。

先日、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もできてしまうので宇宙
  • Node, PythonなどでShellを書く
    • これも宇宙ですね😅

やったことがある方法でもこのくらいあって、他にもいろいろ思いつくことができます。

実際に案件でやるなら、この中からお財布と相談してって感じ。

本題

見ていただくとわかるんですが、結局PowerBIが機能単体でkintoneにアクセスする方法はないんですよね。結局開発がちょっと入るというか。

さくっとPowerBI単体で接続できないかなって、いろいろいじっていました。

で、問題の手法について。これはコードを書く必要がないし、PowerBIの力をお手軽に感じられるのでいいかなって思っています。

それでは、作ってみましょう。

kintoneの準備

アプリにアクセスするので、APIトークンを作成します。
アプリがない方は、適当に作ってください。

スクリーンショット 2025-02-06 131238.png

レコード閲覧権限があればいいです。更新したり削除したりはしないですもんね。

その後、アプリ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を開きます。
空のレポートで新規作成していきます。

リボンから、「データを取得>その他>Web」と選択します。
スクリーンショット 2025-02-06 131614.png

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=[クエリ]
でクエリを指定することもできます。

データソースの設定

「接続」ボタンを押下すると、下記のような設定になります。
スクリーンショット 2025-02-06 172337.png

ここで、初期表示では「基本」になっていますが、「詳細設定」にします。

エンドポイントのURLを入れます。(2段になっているのは気分です😆)
クエリーパラメータ(?以降のパラメータ)に
app=アプリID
query=limit 500
を入れます。

意味としては、500件までとらせてください。といったところです。

HTTP要求ヘッダーパラメーターに
x-cybozu-api-tokenとして、アプリのAPIトークンを設定します。

そうして、「OK」を押す。

image.png

見事、kintoneのデータが取得できます。

よく見ると、recordsの内容をきれいに取得するDAXが、生成されているのが分かります。

その後、「閉じて適用」を押します。

image.png

あとはいい感じにかっこいいグラフを作ります。

気になる制限事項

kintoneのAPIの取得制限にどうしてもかかってしまいます。
スクリプトで取得する場合はループして取るのですが、1発では難しい。

クエリにoffsetが使えるので、データソースを複数用意してDAXで結合すればそこそこの件数は行けると思います。offsetは外れても0件データになるだけなので。

(例えば「query=limit 500 offset 500」を指定してみる。)

あとは、最新データを取得する用途であれば、500件以内(あるいは頑張って設定したOffsetずらしのテーブル群のなか)に目標データが含まれていればいいので問題ありません。工場の日次のライン生産データとか。

直結のメリット

MicrosoftFabricなどにPublishしたときに、自動更新を設定できます。
スクリーンショット 2025-02-06 174627.png
こんな感じで発行して、クラウドへ持ち込みます。

image.png
詳しくは説明しませんが、セマンティックモデルの更新を自動設定して。

まとめ

  • kintone-REST-APIを利用してデータの取得ができる
  • PowerBIがいい感じにモデルを作ってくれる
  • 500件しかとれない🫠 もっと取りたい人は、ちからわざ💪

ちょちょっと作ってさくっとレポートを作成するにはとっても楽ちんです。ドリルダウンとかも作れるし。
かっこいいグラフが作れると仕事ができる気分になれるので、みなさんも試してみてください。

案件でやるならcli-kintoneとか使って実行する覚悟は欲しいところです。


この記事は以上です。ありがとうございました。

kintoneのプラグイン開発や研修などを行っています。
お仕事のお話はこちらまで。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?