Slackのログ(JSON形式)をCSVに変換した
やりたいこと
- Slackの活動数やユーザー間のつながりを分析したい
- 発言数、リアクション数、リアクション・被リアクション関係、メンション関係など
- データはJSONの階層形式なので、分析しやすいようにCSVに変換する
DLできるデータ
- 詳しくは Slack からエクスポートしたデータの読み方 参照
- Slackのログはパブリックチャンネルであれば全期間出せる
- 設定と権限>データのインポート/エクスポート でいける
- ログ
- channnel.json:チャンネル一覧
- users.json:ユーザー一覧
- チャンネル名フォルダ下にログが存在する日付ごとのファイルがある
- 2018-01-01.json
- 2018-01-02.json
やりたいことをもとに見たいデータの形を考える
- 今回は汎用的に分析できるように、RDBライクなデータにする
- チャンネル一覧
- ユーザー一覧
- メッセージ一覧
- リアクション一覧:リアクションされたユーザー、リアクションしたユーザー、絵文字
- メンション一覧:メンションしたユーザー、メンション先ユーザー
- リアクション、メンションはメッセージと1:N関係
出力するとこんな感じ
メッセージ
channel_id |
talk_id |
talk_user |
text |
C5XXXXXXX |
XX1 |
U9XXXXXXX |
<@U8YYYYYYY> こんにちは |
C5XXXXXXX |
XX2 |
U8YYYYYYY |
帰りたい |
C5XXXXXXX |
XX3 |
U9XXXXXXX |
しごおわ |
リアクション
channel_id |
talk_id |
talk_user |
reaction_user |
emoji |
C5XXXXXXX |
XX1 |
U9XXXXXXX |
U8YYYYYYY |
ok_woman |
C5XXXXXXX |
XX1 |
U9XXXXXXX |
U7ZZZZZZZ |
iine |
C5XXXXXXX |
XX2 |
U8YYYYYYY |
U9XXXXXXX |
wakaru |
C5XXXXXXX |
XX2 |
U9XXXXXXX |
U7ZZZZZZZ |
otukare |
メンション
channel_id |
talk_id |
talk_user |
mention_user |
C5XXXXXXX |
XX1 |
U9XXXXXXX |
U8YYYYYYY |
こうしておくことで人気絵文字とかリアクション・被リアクション関係、メンション・被メンション関係などを分析しやすくなる!
ソースコード
Pythonで作ったぞい
https://github.com/yakipudding/slack-analytics