LoginSignup
5
3

More than 5 years have passed since last update.

PowerBI Network Navigator Chart で Twitter のフォロー関係を可視化する

Last updated at Posted at 2018-06-11

先日PowerBI勉強会に参加してグラフをつかった発表がとても楽しそうだったので、やってみた

環境

  • Windows10
  • PowerBIデスクトップ
  • カスタムビジュアル=Network Navigator Chart

やってみたこと

Twitterのフォロー関係をビジュアライズ

  • 赤=自分、黄色=自分がフォローしているユーザー、青=自分がフォローしているユーザーがフォローしているユーザー。
  • 一瞬「おおっ!」となるが、レポートとしての価値はほぼ無い。
  • すなわち、観賞用。

最初にざっくりまとめると

SourceはCSVファイル

twex.csv

列名 説明
source_id フォローしているユーザーID
source_name フォローしているユーザー名
target_id フォローされているユーザーID
target_name フォローされているユーザー名

PowerBIテーブル

twexテーブル

列名 説明
source_id フォローしているユーザーID
target_id フォローされているユーザーID
weight ユーザーの重要度
source_node_color ノード色
target_node_color ノード色

カスタムビジュアル

Network Navigator Chart

Network Navigator Chartのフィールド twexテーブルのフィールド
Source Node source_id
Target Node target_id
Source Node Color source_node_color
Target Node Color target_node_color
レポートレベルフィルター weight

~ここから手順~

1.リストをCSV形式で作成する

1-1.データ調査

  • 自分がフォローしているユーザーは18人。(少ない・・・)
  • 各ユーザーがフォローしているユーザーを表にするとこんな感じ。
自分がフォローしているユーザー このユーザーがフォローしているユーザーの数
A 81
B 31
C 379
D 280
E 1039
F 6799
G 18061
H 356
I 984
J 415
K 943
L 654
M 5065
N 1220
O 199
P 139
Q 221
R 191

1-2.データ作成

※スクリーンショットのユーザーID、nameは判別できないように加工しています。

1-3.出来上がったCSVファイル

  • ファイル名=twex.csv
  • 文字コード=UTF-8で出来上がるので、サクラエディタなどでUnicodeに手動で変換した。なぜならPowerBIはUTF-8のCSVは読めなかったから・・・
  • CSV形式、カンマ区切りで下表の通り
    • source_id = フォローしているユーザーのID
    • source_name = フォローしているユーザーのname
    • target_id = フォローされているユーザーのID
    • target_name = フォローされているユーザーのname
source_id source_name target_id target_name
99999 gebo 99999 hogehoge
... ... ... ...

2.PowerBI - テーブル作成

2-1.データのインポート-その①

  • データを取得→CSV→twex.csv→twexという名前でインポート

  • source_idとtarget_idは文字列に型変換する

2-2.データのインポート-その②

  • データを取得→CSV→twex.csv
  • target_idは文字列に型変換する。
  • target_id列を選択して→グループ化してカウントをするようにしてOKする。

  • target_idと「カウント」という列のテーブルができるのでFollwerCountというテーブル名で保存する。

2-3.リレーションシップ設定

  • 出来上がった2つのテーブル(twexとFollwerCount)のリレーションを設定する→自動的にリレーション設定されている!
  • 左側のアイコンからリレーションを確認する(赤丸)。リレーションの設定を変更する場合はリレーションシップの管理(青丸)から。

2-4.テーブルのマージ

  • 「クエリを編集」→PowerQueryエディタを開く
  • 画面左から「twexテーブル」を選択→クエリのマージ を選択
  • マージ画面→twexテーブルのtarget_id列を選択→中央のコンポボックスから「FollwerCountテーブル」を選択→FollwerCountテーブルのtarget_id列を選択。結合の種類は「左外部」を選択してOKする。
  • SQLでいうところのtwex.target_idとFollwerCount.target_idをLEFTJOINするという意味

  • PowerQueryエディタに戻るとtwexテーブルに「FollwerCount」列が追加されているが、中身が「Table」と表示されていて?な状態なので、列をクリックして「展開」→「カウント」を選択してOK。

  • これでtwexテーブルに「FollwerCount」列が追加されて、その値はtargetがフォローされている数が表示されるようになる。

2-5.ユーザーの重要度パラメータ

私の作ったCSVではユーザーは35,107人おりまして、このユーザーをNetwork Navigator Chartで一気に表示すると制限を超えて全部表示できなかった残念。
仕方がないので、以下のルールでユーザーの重みをつけて、より重要度の高いユーザーだけを表示するようにした。

  • 自分がフォローしているユーザーは重要
  • たくさんの人にフォローされている人は重要

以下の手順でtwexテーブルに上記ルールに基づいたフィールドweightを追加します

  • 「データビュー」でtwexテーブルを表示
  • メニューから「モデリング」を選択
  • 「新しい列」を追加して以下のDAX関数を設定
weight = if (twex[source_name]="gebo",999,twex[FollwerCount.カウント])

※gebo(自分)のフォロワーだったらweightを999にして、それ以外はフォローされているカウントをweightとする

※最初の動画でノードが増えていくように見えるのは、このパラメータをいじってる

2-6.ノードの色

全部同じ色で表示するよりも少しカラフルな方がいいかな、という事で、色を付ける。
- 赤=自分
- 黄色=自分がフォローしているユーザー
- 青=自分がフォローしているユーザーがフォローしているユーザー

これも同様にtwexテーブルに列を追加します。

列名 説明 DAX関数
source_node_color 自分だったらRed、それ以外はGold source_node_color = if (twex[source_name]="gebo","Red","Gold")
target_node_color 自分のフォローユーザーだったらGold、それ以外はCornflowerBlue target_node_color = if (twex[source_name]="gebo","Gold","CornflowerBlue")

2-7.テーブルできた

テーブル=twex

列名 説明 備考
source_id フォローしているユーザーID
source_name フォローしているユーザー名
target_id フォローされているユーザーID
target_name フォローされているユーザー名
FollowerCount.count フォローされているユーザーが他のユーザーにフォローされている数
weight ユーザーの重要度
source_node_color ノード色
target_node_color ノード色

3.PowerBI ビジュアライズ

ここからは簡単

3-1.MarketPlaceからNetwork Navigator Chartを追加

3-2.マッピング

Network Navigator Chartのフィールドとtwexテーブルのマッピング

Network Navigator Chartのフィールド twexテーブルのフィールド
Source Node source_id
Target Node target_id
Source Node Color source_node_color
Target Node Color target_node_color
レポートレベルフィルター weight

3-3.ビジュアライズ

レポートレベルフィルターを色々変更して鑑賞しましょう。
Nodeが1000を超えるくらいでMAXのようです(悲・・・

おつかれさまでした

参考

5
3
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
5
3