Twitter API V2 を使用して、Power BI でツイートデータを可視化する (2) データ整形編

# はじめに
[(1)データ取得編](https://qiita.com/rygondo/items/ffcba9b36dfaa408c363)からの続きです。
前回は、Power BI から Twitter API に接続して、ツイートデータを取得するところまでを解説しました。
前回までの手順で、特定のキーワードで検索したツイートデータを Power BI へ持ってくることができたので、ここからは、Power BI の機能を使って、データ整形 → 可視化を行っていきます。

# 前回取得したデータ
Power Query エディタで、「data」「inclueds」「meta」の3つのデータを取得するところまでやりました。
ツイートの内容は「data」「inclues」に分かれて入ってくるので、それぞれを整形していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/d733ffce-a695-74bc-2a02-5f8a787ee5cc.png)

# 大まかな手順
1. 取得したデータを「data」(ツイート内容) と「include」(それ以外の情報) に分ける
2. 「data」(ツイート内容) を整形
3. 「include」(それ以外の情報：今回はユーザー情報のみ)を整形 
4. ツイートテキストを Text Analytics でキーフレーズ抽出 (※要 Premium ライセンス)

# 1. 取得したデータを「data」(ツイート内容) と「include」(それ以外の情報) に分ける
「data」にはツイートに関する情報、「include」には今回はユーザーに関する情報が入っているため、別々のテーブルに分けてから整形をしていきます。
構造の概要としては以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/a5ae5aac-b875-35fc-53a3-d2273b412d29.png)


1. 取得したデータ(下図例では twitter_analysis_base)を「参照」して、新しいクエリ(下図例では twitter_analysis_base (2))を生成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/4a4c2567-feaa-e5b3-4218-b2cb74466302.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/00779982-3ca6-2da4-5d8d-5bf2f2211402.png)

2. 再度取得したデータ(下図例では twitter_analysis_base)を「参照」して、新しいクエリ(下図例では twitter_analysis_base (3))を生成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/987e1b05-bdce-4c83-f94b-2b467dd6403a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/99bd0933-3988-7d24-3851-fb960e3f23d8.png)


3. 新しく生成したクエリのそれぞれの名前を変更する。1つは「data」用、もう1つは「include」の中の「users」用 (下図例では、それぞれ twitter_analysis_data、twitter_analysis_users に変更)
- twitter_analysis_base (2) → twitter_analysis_data へ変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/e5cc4707-3687-f6f6-0338-00fb043815d4.png)
- twitter_analysis_base (3) → twitter_analysis_users へ変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/602c922e-b42a-9acc-46a7-31ccd1cbb088.png)


# 2. 「data」(ツイート内容) を整形
data 部分には、1 レコードずつツイート内容が格納されているので整形していきます。
1. 「twitter_analysis_data」 の 「data」 の 「List」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/b8fc5d14-e16d-6a35-4cde-3a3aaf35a40f.png)

2. 展開されたリストをテーブルに変換する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/2ed52a68-efe0-5d83-5842-0fc3016a08fe.png)
    - 表示されたテーブルへの変換ダイアログはそのまま OK を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/637154ce-dba6-39ec-df9c-6d56ce1db65d.png)

3. Column1 の横の展開ボタンを押してレコードの中身を展開する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/aca7fc41-53fb-dca9-11fc-81d8cabe5211.png)
    - 展開時は、「元の列名をプレフィックスとして使用します」のチェックボックスを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/ada2f379-47cd-fe7b-b8bc-7302b0325233.png)


4. 3で展開された項目のうち、「public_metrics」 の横の展開ボタンを押してレコードの中身を展開する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/35eb85a0-1e13-ed9d-79ca-54605a94ebfe.png)
    - 展開時は、「元の列名をプレフィックスとして使用します」のチェックボックスを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/941d8df3-8c00-6bfc-f5a6-ee38d391a1c4.png)


5. 3で展開された項目のうち、「edit_history_tweet_ids」は今回使用しないので、削除する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/4e936a6c-6a9d-25d2-9c45-c30bcadb4697.png)

6. 項目の名前をわかりやすくするため一つずつ変更し、また、各項目の型を変更する

|項目名(変更前)|項目名(変更後)|型|
|:--|:--|:--|
|lang|言語|テキスト|
|retweet_count|リツイート数|整数|
|reply_count|リプライ数|整数|
|like_count|いいね数|整数|
|quote_count|引用数|整数|
|impression_count|表示数|整数|
|text|ツイートテキスト|テキスト|
|created_at|ツイート日時|日付/時刻/タイムゾーン|
|id|ツイートID|テキスト|
|author_id|ユーザーID|テキスト|

※2023年1月17日現在、Twitter API が 項目「source」 を返さなくなっているため、こちらの一覧からは除外しています。

- 項目名の変更(各項目をダブルクリックして変更)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/27ecea7c-6f63-02b5-cf22-2de8878a57a2.png)

- 型の変更(各項目の左のアイコンを変更)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/7fbfb4b7-1c44-cdb4-b4f7-b156b2b322c8.png)

# 3. 「include」(それ以外の情報：今回はユーザー情報のみ)を整形
include 部分には、ツイート内容以外の情報が格納されており、今回はユーザー情報のみ取得するよう指定しています。user の中に1 レコードずつツイートしたユーザーの情報が格納されているので整形していきます。

1.  「twitter_analysis_users」 の 「includes」 の 「Record」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/171521bc-36d0-41ba-0b40-ddeb0fb70b61.png)

2. 「users」の 「List」をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/564d3ee3-a8e5-8efe-a23c-b45af00b0864.png)

3. 展開されたリストをテーブルに変換する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/04ecd4d2-7213-89f0-fe0d-97a742a6aa09.png)
    表示されたテーブルへの変換ダイアログはそのまま OK を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/a06616fd-d428-93ce-b63a-ced81b99f706.png)

4. Column1 の横の展開ボタンを押してレコードの中身を展開する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/05e971d2-00b1-0851-20e9-eef58f1047cf.png)
    - 展開時は、「元の列名をプレフィックスとして使用します」のチェックボックスを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/6c51858b-98f7-f119-2e50-c37d5748fb24.png)

5. 4で展開された項目のうち、「public_metrics」 の横の展開ボタンを押してレコードの中身を展開する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/792cbeaf-c582-9aa5-1a79-09dd62b15413.png)
        - 展開時は、「元の列名をプレフィックスとして使用します」のチェックボックスを外す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/99953e2b-bd34-bc37-9031-9e4a7ce73698.png)

6. 項目の名前をわかりやすくするため一つずつ変更し、また、各項目の型を変更する

|項目名(変更前)|項目名(変更後)|型|
|:--|:--|:--|
|id|ユーザーID|テキスト|
|description|ユーザー説明|テキスト|
|username|ユーザーハンドルネーム|テキスト|
|profile_image_url|ユーザープロフィール画像URL|テキスト|
|url|ユーザープロフィールURL|テキスト|
|followers_count|フォロワー数|整数|
|following_count|フォロー数|整数|
|tweet_count|ツイート数|整数|
|listed_count|リスト数|整数|
|name|ユーザープロフィール名|テキスト|
|created_at|ユーザー作成日時|日付/時刻/タイムゾーン|
|location|場所|テキスト|

# 4. ツイートテキストを Text Analytics でキーフレーズ抽出 (※要 Premium ライセンス)
Power BI の Premium 機能である Text Analytics のキーフレーズ抽出機能を使って、ツイート内容から主要なキーフレーズをマイニングします。
実装には、Premium ライセンス(Power BI Premium Per User もしくは Power BI Premium Per Capacity)が必要です。(試用版でも可)
ワードクラウドを作成しない場合はこのステップは飛ばすことも可能です。

1. twitter_analysis_dataを「参照」して、新しいクエリ(下図例では twitter_analysis_data (2))を生成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/dd7a530e-e821-3e09-8c52-9f9e04dc5c79.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/370b2745-430c-6f13-092b-273663f3f607.png)

2.  新しく生成したクエリの名前を変更する。 (下図例では、twitter_analysis_keyphrase に変更)
    - twitter_analysis_data (2) → twitter_analysis_keyphrase へ変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/3521bc85-4ae1-474f-f80e-3f86c94a2784.png)

3. ツイートID、ツイートテキスト 以外の項目を削除する
    - ツイートID と ツイートテキスト 列を Ctrl キーを押しながら選択し、右クリックメニューで「他の列の削除」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/e0a82e2a-53a9-cef7-964f-1b307e3113ba.png)

4. ツイートテキストを選択して、AI 分析情報の「Text Analytics」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/cf5cbe14-b393-64cb-17bf-f596fe292e7a.png)

5. Text Analytics ダイアログで、「Extract key phrases」を選択し、「Text」 で 「ツイートテキスト」 が選択されていることを確認し、OK ボタンを押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/a21c1fb7-fc2d-5d0e-fefc-ca51859b6645.png)

6. キーフレーズ抽出された結果が、「Extract key phrases」列と「Extract key phrases.KeyPhrase」列に抽出される。
    - 「Extract key phrases」列 → キーフレーズ抽出された結果をカンマ区切りですべて格納
    - 「Extract key phrases.KeyPhrase」列 → キーフレーズ抽出された結果を1語1レコードで格納
    → 今回は 「ツイートID」と「Extract key phrases.KeyPhrase」を使用するので、その他の列を削除する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/fa07b872-ff11-bda7-23d2-7650456bb631.png)

7. 「Extract key phrases.KeyPhrase」列の名前を 「キーフレーズ」に変更する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/b93cfbc9-1543-7d8c-9f43-9ade3cda5db5.png)

8. キーフレーズ列の値の前後に空白が入っているため、トリミングする
    - 「キーフレーズ」列を右クリックして、「変換」→「トリミング」を選択
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/16d2547f-d19c-5074-e314-e12a0a91b80f.png)

# データ整形の最後に
twitter_analysis_base から、3種類のデータ(ツイート内容、ユーザー情報、キーフレーズ)を作成しましたが、この本体は可視化には使用しないので、読み込みをOFFにします。(読み込みをOFFにしても、レポートの更新をONにしておけば、このデータを基にしている3つのデータはしっかりと更新されます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2642886/e5416dbd-d2f3-3217-da88-6ea3fa24cd4a.png)

ここまででデータ整形が完了しました。
今回はここまでとし、次回はいよいよデータを取り込み、ビジュアル作成・可視化していきます。