Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Slack の利用状況を可視化して見えてくるものってなんだろう? Power BI と CData Slack Connector で利用状況レポートを作る方法

最近Twitterでこんなご意見をもらいました!

社内利用状況レポート! なるほど!

最近はビジネスチャット戦国時代ですもんね。Slackを筆頭に、TeamsやChatWork、LineWorkなど、どんどんサービスが増えて、盛り上がっているなーと感じます。

boxil.jp

ただ、導入したとしても、うまく活用されているのかってやっぱり気になりますよね。もっと有効活用されるには、もっとコミュニケーションが活発になるにはどうしたらいいのか? いろんな会社・コミュニティで試行錯誤しているのかなとも感じています。

そこでやっぱりひとつの指針として(サブスクリプションサービスにお金を払っているなら尚更)、利用状況というのは可視化したいというニーズは強いのでしょうね。

でも実際のところ利用状況レポートってどうなの? 役立つの? 

ただ、私自身実際にデータは取れることは理解していても、Slackのデータを分析することで見えてくるものが本当にあるのか? ってわからなかったんですよね。

そこで今回は、Slackをベースにチャットツールからのデータの取得の仕方だけでなく、実際にレポートとして作成したものを紹介して、どんな情報が可視化できるのか!? 試してみた結果をお届けします。

また、チャットツールって結構会社さんごとに使い方にばらつきがあるのではないかと思っているので、SNSを通じて、みんなが使っているSlackの状況を共有してもらおうと考えています!

いい感じに協力してくれた方のレポートが集まったら、それをまとめた記事+勉強会での発表もしようかなと考えていますので、是非ご協力いただければと思います!

こんなレポートが出来上がった!

早速ですが、作成した Slack 利用状況レポートを紹介したいと思います。

今回はなんと Microsoft Power BI MVP の清水さんに協力頂いてレポートを作成してもらうことができました!

こんな感じのレポートです! 接続先は清水さんがイベントの管理などで利用しているSlackとのこと。

f:id:sugimomoto:20190516195540p:plain

Messages数の偏りやチャネルごとの投稿状況、時間帯別の投稿状況が可視化されていて、面白いレポートに仕上がっています!

f:id:sugimomoto:20190516195546p:plain

そのSlackの役割にもよるかもしれませんが、メインのチャネルが固定されていて、ユーザー投稿にもかなり偏りがあることが見て取れます。

私は勝手に、チャネルごとにみんなバラバラ投稿しているんじゃないかなと思っていたりしたのですが、やはりSlackごとに特色があるものですねー。

ちなみに、以下のURLでReportのテンプレートの使い方を公開しています!

bit.ly

是非試してみてください! そしてよかったら、Poewr BI Facebook Groupかツイッターで流してもらえると、みんなで比較ができるので、いろんな考察が捗るのではないかと思っています。

Slackのデータはどうやって取得するの?

それでは実際にレポートを作るためのデータ取得方法を解説したいと思います。

Slackのデータは現状Power BI に標準のコネクタが無いので、基本的には Web API 経由で取得しないといけません。ただ、認証だったり、取得したJsonのパースだったり、テーブル形式に直したりと、手間がかかることが多いので、CData Slack Power BI Connectorを使って、楽をします。

f:id:sugimomoto:20190516195636p:plain

https://www.cdata.com/jp/drivers/slack/powerbi/

こちらのページから「ダウンロード」をクリックして、評価版を入手してみてください。

継続的にデータを分析するのであれば製品版が必要ですが、一回きりの取得であれば、機能差は無いので評価版で大丈夫です。

ダウンロード後、インストーラーが起動するので、そのまま次へ進めていきます。

f:id:sugimomoto:20190516195702p:plain

インストールが完了すると、以下のように接続設定の画面が表示されます。

特に入力は不要で、そのまま「接続のテスト」をクリックすればOKです。

f:id:sugimomoto:20190516195708p:plain

すると、以下のようにOAuthの承認画面が表示されるので、内容を確認の上「許可する」をクリックしてください。

f:id:sugimomoto:20190516195714p:plain

f:id:sugimomoto:20190516195719p:plain

以下のような画面が表示されれば接続OKです。接続画面もそのままOKをクリックして閉じます。

f:id:sugimomoto:20190516195725p:plain

Power BI でのデータ取得方法

それでは、Power BIからSlackのデータを取得してみます。

まずは手軽にチャンネルの一覧から。

f:id:sugimomoto:20190516195731p:plain

CData Power BI Connectorのインストールが正常に完了していると、データを取得の一覧で、以下のようにCData Slackのアイコンが追加されます。これを選択して、「接続」をクリックします。

f:id:sugimomoto:20190516195738p:plain

最初にサードパーティサービスの確認が出てくるので、そのまま続行をクリック

f:id:sugimomoto:20190516195743p:plain

Data Source Nameを選択(1種類しか無いはずです)して、OKをクリックします。ちなみに、CData Power BI ConnectorはSQLでSlackのデータが取得できるようになっているので、SQL Statementのところに「SELECT * FROM hogehoge」と書いてもデータが取得できますが、それは後ほど。

f:id:sugimomoto:20190516195749p:plain

ナビゲーターの画面では、取得できるテーブルの一覧が表示されるので、Channelsを選択して、読み込みます。

f:id:sugimomoto:20190516195755p:plain

すると、こんな感じでチャンネルの一覧が取得できます。

f:id:sugimomoto:20190516195801p:plain

Messageの取得方法

Messageの取得方法は若干特殊です。

もともとSlackのAPIでは、Messageの取得処理にChannelIdが必要となっているので、CData Power BI Connectorを使う場合も、ChannelIdをWhere句で指定する必要があります。

今回はすべてのチャネルからメッセージを取得したいので、Power Queryを使ってこれを実現します。

新しくデータを追加するため、「クエリの編集」をクリックし

f:id:sugimomoto:20190516195943p:plain

「空のクエリ」を追加します。

f:id:sugimomoto:20190516200107p:plain

詳細エディタを開いて、以下のようなクエリを追加します。

let
    Source = "CData Power BI Slack",
    ChannelsQuery = "select * from Channels ",
    MessagesQuery = "select * from Messages Where ChannelId = '",
    
    Channels = CData.Slack.DataSource(Source, null, [Query = ChannelsQuery]),

    ChannelRecoreds = Table.Column(Channels,"Id"),

    AllData = Table.Combine(
    List.Transform(
        ChannelRecoreds,
        each CData.Slack.DataSource(Source, null, [Query = MessagesQuery & _ & "'" ])
        )
    )
in
    AllData

f:id:sugimomoto:20190516200327p:plain

やっていることは単純で「select * from Channels」で取得してきたチャネル一覧を元に、「"select * from Messages Where ChannelId = 」で各チャネルからメッセージを取得しています。

これで、以下のようにメッセージ一覧が取得できます。

f:id:sugimomoto:20190516200505p:plain

あとは取得したデータのリレーションを構成して、レポートを作成できる環境が整います。

f:id:sugimomoto:20190516200607p:plain

おわりに