omiyu1188

Power BI メインで色々書いていきます。

【Twitter分析 × Power BI】Twitterアナリティクスの週次レポートを作ってみた

目次

はじめに

会社で Twitter 運用についての活動報告を週次で行っているのですが、
報告資料を作るために、一週間分の Twitterアナリティクスのデータを取得 → Excel で集計 → Power Point にグラフを出力 という作業が毎週発生していました。

Power BI を使えば自動集計&自動更新が簡単そう、ということでレポートを作ってみます。

下図のように、

  • 今週のトップツイート
  • ツイート数、エンゲージメント数、平均インプレッション数、フォロワー数の推移
  • 今週のツイート一覧

といった要素を可視化してみたいと思います。

データ準備① Twitterアナリティクスデータ

Twitter アナリティクスのデータを取得する方法は2つあります。

  1. Twitter アナリティクスから CSVファイルをエクスポートする方法
  2. Twitter Engagement API を使用する方法
    Twitterの法人プランの契約と API の利用申請が必要です。
    詳細:Engagement API | Twitter API | Docs | Twitter Developer Platform

今回は1つ目の方法でデータを取得します。
Twitter Engagement API の申請が間に合わなかったためです...)

Twitterアナリティクス にログインします。
「ツイート」タブをクリックし、エクスポートする期間を選択して、

「データをエクスポート」をクリックで指定した期間のデータを取得することができます。

※補足:取得できるデータは「By Tweet」と「By day」の2種類があります。

  • By Tweetツイートごとのインプレッション数、エンゲージメント数、リツイート数など
  • By day:日ごとのインプレッション数、エンゲージメント数、リツイート数など

今回は〇月〇日~〇月〇日の約3か月分のデータを「By Tweet」と「By day」の両方エクスポートして SharePoint 上に配置しました。

データ準備② フォロワー数の取得

フォロワー数のデータは Twitterアナリティクスのデータに含まれていないので、別で取得する必要があります。
私は Power Automate の Twitter コネクタを使用して下図のようなフローを作成しました。
毎日フォロワー数を取得して SharePoint 上の Excel に記録することができます。

データ読み込み

取得したデータを Power BI で読み込みます。
Power BI Desktop で「データを取得」→「SharePoint フォルダー」を選択して

サイト URL を入力します。

「データ変換」をクリックして Power Query エディターを起動します。

データ変換

指定したサイトにある全てのファイルが表示されるので、まずは対象のフォルダのデータに絞ります。
今回は「マーケ指標可視化」というフォルダに対象のデータがあるので、
Folder Path 列でテキストフィルターを使用して「マーケ指標可視化」配下のファイルに絞ります。

「マーケ指標可視化」配下のファイルのみに絞りこむことができました。

次に、データの種類ごとに3つのクエリに分けていきます。

  • Twitterアナリティクスデータ(ツイート別):Name が tweet から始まるファイル
  • Twitterアナリティクスデータ(日付別):Name が daily から始まるファイル
  • フォロワー数のデータ:Name が Twitter フォロワー数.xlsx

「管理」→「複製」でクエリの複製を2回行って、

それぞれのクエリに名前をつけます。

それぞれのクエリについて、以下のようにテキストフィルターを適用します。

  • ツイート別:Name が tweet から始まる
  • 日付別:Name が daily から始まる
  • フォロワー数:Name が Twitter から始まる

次に、ファイルの結合を行います。
それぞれのクエリについて、Content 列横の「ファイルの結合」ボタンをクリックします。

結合後のテーブルを確認して、「OK」をクリックします。

不要なカラムを削除して、

必要に応じてカラム名の変更を行います。

ツイート別データの「時間」列にはツイートの投稿日時が入っていますが、
今回は時刻部分は使用しないので「変換」→「日付」→「日付のみ」で日付のみを抽出します。

Power Query エディターを閉じて適用します。

日付テーブル作成

「テーブルツール」→「新しいテーブル」から日付テーブルを作成します。

日付テーブル = 
VAR StartDate = "2021/12/1"
VAR EndDate = MAX('日付別'[日付])
RETURN
ADDCOLUMNS(
    CALENDAR(StartDate, EndDate),
    "年_num", YEAR ([Date]),
    "年", FORMAT ([Date], "YYYY年"),
    "月_num", MONTH ([Date]),
    "月", FORMAT ([Date], "M月"),
    "週_num", FORMAT(WEEKNUM([Date], 2) - WEEKNUM((EOMONTH([Date], -1) + 1), 2) + 1, "0"),
    "週", FORMAT(WEEKNUM([Date], 2) - WEEKNUM((EOMONTH([Date], -1) + 1), 2) + 1, "第0週")
)

作成したテーブルを日付テーブルとしてマークします。

モデルビューで日付テーブルと他のテーブル間のリレーションシップを作成します。

ここまでできたらいよいよレポート作成に入ります。

トップツイートの表示

レポートビューに移動して、「カード」ビジュアルをキャンバスに追加し、「ツイート本文」をフィールドに追加します。
するとツイートが1件表示されますが、これは「あいうえお順」にしたときの先頭のツイートです。

今回はインプレッション数が一番多いツイートを表示したいので上位Nフィルターを使います。
インプレッション数を合計するメジャーを作成し、上位Nフィルターの「値」にドラッグして使用します。

インプレッション_ツイート別_sum = SUM('ツイート別'[インプレッション])

次にこのツイートのインプレッション数、エンゲージメント数、エンゲージメント率、プロフィールアクセス数、URLクリック数を表示したいと思います。
それぞれを合計するメジャーを作成します。

エンゲージメント_ツイート別_sum = SUM('ツイート別'[エンゲージメント])
エンゲージメント率_ツイート別_sum = SUM('ツイート別'[エンゲージメント率])
プロフアクセス数_ツイート別_sum = SUM('ツイート別'[プロフィールアクセス数])
URLクリック_ツイート別_sum = SUM('ツイート別'[URLクリック数])

キャンバスに「複数の行カード」ビジュアルを追加して、フィールドに作成したメジャーを追加します。

ここで表示される値は全ツイートの合計で、表示したいのはトップツイートのデータなので
先程と同じように上位Nフィルターを使用して以下のように設定します。

タイトルやフォントサイズ等を修正します。

ツイート数、プロフィールアクセス数、平均インプレッション数、フォロワー数表示の推移

以下の4つのメジャーを作ります。

ツイート数_sum = SUM('日付別'[ツイート数])
プロフィールアクセス数_sum = SUM('日付別'[プロフィールアクセス数])
インプレッション数_avg = 
DIVIDE(
    SUM('ツイート別'[インプレッション]), 
    COUNTROWS('ツイート別')
)
フォロワー数_max = MAX('フォロワー数'[フォロワー数])

キャンバスに「カード」ビジュアルを4つ追加して、
それぞれのフィールドに作成したメジャーを追加します。

次に、週ごとの推移を表示します。
キャンバスに「面グラフ」ビジュアルを4つ追加して、それぞれの x軸に「年」「月」「日」、Y軸に作成したメジャーを追加します。

今週のツイート一覧

キャンバスに「テーブル」ビジュアルを追加して、列に URL、ツイート本文、エンゲージメント数合計のメジャー等を追加します。

次に URL 列をクリックして該当ツイートのページに飛べるようにします。
URL 列を選択して、データのカテゴリを Web URL として設定します。

テーブルの書式設定で「URL アイコン」をオンにすると、下図のように URL をアイコンに置き換えて表示できます。

テキストの折り返しをオフにして、一度に表示できるツイート数を増やします。

相対日付スライサーの追加

キャンバスに「スライサー」ビジュアルを追加して、
フィールドに日付テーブルの「Date」列を設定します。

書式設定でスタイルを「相対日付」に変更します。

相対日付スライサーを「最近」「1」「週 (暦)」と設定すると、「最近1週間」のフィルターがレポート全体にかかります。

面グラフでは過去データからの変化をみたいので、スライサーからの影響を受けないように設定します。
スライサーを選択 →「書式」タブの「相互作用を編集」を選択 → 面グラフへの作用をオフにします。
(下図の③)

最後に、レポートに動的なタイトルを追加します。
「週次レポート / 〇年〇月〇日週」と表示できるように以下のメジャーを作成します。

タイトル = "週次レポート" & FORMAT(MIN('日付テーブル'[Date]), "yyyy年M月D日週")

カードビジュアルを追加して作成したメジャーをフィールドに設定して完成です。

おわりに

Power BI で作ったレポートは Power Point に埋め込んで使っていて、社内で共有しやすく便利です。
Twitter Engagement API も使えるように手配して、データ取得の作業も自動化できるようにしたいです。