Power BI を使って Exchange の各ユーザーカレンダーを横断して分析できるようにする:CData Exchange Power BI Connector
今回は「Power BI 勉強会 @ 東京 #11」のランチセッションで発表するための記事になります!
また、この記事の内容は以下の動画でも提供しています。
4分くらいなので、さくっと見てもらえるかと。
- やりたいこと
- 実現するにあたっての課題
- 実現アプローチ
- CData Power BI Exchagne Connector のインストールと接続設定
- Power BI から Exchange Online に接続
やりたいこと
もともと私自身CRMアプリケーションのインテグレーションをしていた経験もあって、「Office365 / Exchange Online のデータを使って、打ち合わせや会議、予定の情報を分析したい」という話をよく耳にします。
実際Activity分析の材料として予定表は宝の宝庫です。
なぜか? と言えば、いつ、誰が、どこに、何をしにいった? といった情報が基本的に入力されるのはもちろんのこと、社内システムのようにユーザーが入力するための敷居がとにかく低い。基本的なインフラレベルで使っているものになるので、データがちゃんと貯まるんですね。
(※本来であれば、CRMアプリケーションと組み合わせて、顧客に紐づけて活用するのがいいんですけどね。)
というわけで、今回はこの宝の山をPower BI上で取得して分析できるようにしたい! というお話になっています。
実現するにあたっての課題
雰囲気的に簡単にできそうなお題なんですが、ちょっと課題があります。
Power BI にExchange のコネクタがあるんですが、実は「1ユーザー」の情報しか取得できません!
そこで、CData Power BI Exchange Connector を使って、実現する方法を紹介したいと思います。
実現アプローチ
CData Power BI Exchange Connector を使うことは前提になるのですが、それと合わせて理解しておく必要があるものが、Exchange の偽装ユーザーです。
あくまでExhangeのデータ取得には特定のユーザーを割り当てて行いますが、そこに偽装ユーザーのリクエストを挟むことによって、自分以外のスケジュールにもアクセスできるようにします。
そのため、あらかじめ、Exchange 管理画面にて「ApplicationImpersonation」を対象ユーザーに付与しておいてください。
以下のBlogを参考にさせてもらいました。
ただし、偽装ユーザー権限は結構強力の権限なので、使用する際には要注意です。
あと、反映されるまで、少し時間がかかるみたいです。
CData Power BI Exchagne Connector のインストールと接続設定
それでは実際の手順を簡単に説明していきたいと思います。
まず、以下のWeb サイトから「CData Power BI Exchange Connector」をダウンロード・インストールしておきます。
https://www.cdata.com/jp/drivers/exchange/powerbi/
インストールすると、認証情報を入力するための画面に移るので、先程述べた偽装ユーザー権限を持ったユーザー情報でログインします。
ちなみに、ServerのプロパティにはExchange Onlineの場合「https://outlook.office365.com/EWS/Exchange.asmx」を指定します。
Power BI から Exchange Online に接続
それでは実際にPower BI からExhcnage Onlineのデータを取得してきましょう。
Power BI を立ち上げて
「CData Exhcange」を選択します。(Power BI の Exchange コネクタではありません)
DataSourceを選択して、そのままOKをクリック
とりあえずログインユーザーのスケジュールだけ取得します。
取得できたら、クエリを編集して、Power Queryで取得処理を書き直しましょう。
以下のようなものがデフォルトになっているので、
Sampleで私が作成したものですが、下記のようなクエリで実行できます。
CData Power BI Connectorでは内部的にSQL文でリクエストできるようになっており、
select * from Calendar where ImpersonationUser = 'hogehoge@hogehoge.onmicrosoft.com' というSQLで偽装ユーザーとして予定表データが取得できるようになります。
取得したいユーザーを増やしたい場合は、メールアドレスを追加してください。
let Source = "CData Power BI Exchange", BaseQuery = "select Subject,Start,End,IsMeeting,OrganizerName,DATEDIFF('mi',Start,End) as UsageTime,ItemId from Calendar where ImpersonationUser = '", Users = { "XXXX@XXXXXX.onmicrosoft.com", "XXXX@XXXXXX.onmicrosoft.com", "XXXX@XXXXXX.onmicrosoft.com", "XXXX@XXXXXX.onmicrosoft.com", "XXXX@XXXXXX.onmicrosoft.com", }, AllData = Table.Combine( List.Transform( Users, each CData.Exchange.DataSource(Source, null, [Query = BaseQuery & _ & "'" ]) ) ) in AllData
こんな感じでデータが取得できました。
あとはPower BIの機能を使って、可視化することができます。
CData Power BI Connector は30日間のトライアルを提供しているので、是非使ってみてください!