8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-12-21

はじめに

Twitter のツイートデータを Power BI で可視化するシナリオはいくつかあるのですが、今回は、Twitter API V2 に Power BI から直接接続して可視化する手順をご紹介します。

Twitter API に接続するには、Twitter Developer アカウントが必要になりますが、V1.1の時代は、英語で申請して Twitter 社と何回かやり取りする必要があるなど、ハードルがやや高い感じでした。しかし、V2 では、Essential access アカウントであれば、登録するだけで利用できるようになり、とても簡単に利用できるようになっています。API 接続部分はちょっとテクニカルな感じですが、データ取得後はいつもの Power BI なので、興味がある方はぜひチャレンジしてみてください。

必要なもの

  • Twitter Developer アカウント

※ Twitter Developer アカウントの取得方法はこちらのサイトがとても分かりやすかったです。

大まかな手順

大まかな手順は以下の通りです。

  1. Twitter API の Bearer Token をコピー
  2. Power Query でツイートを取得するためのクエリを生成する
    2-1. Power Query で検索キーワードとトークンのパラメーターを作成する
    2-2. Power Query で Twitter API へ接続してクエリ実行し、データを取得する
  3. Power Query で データ整形する
  4. Power BI Desktop 上でビジュアルを作成する

1. Twitter API の Bearer token をコピー

Bearer token の内容をコピーしておきます。(Power Query のパラメーターとして利用)
※ アカウントの取得の過程で Bearer token は取得できますが、コピーを忘れた場合は、Twitter Developer ポータル画面で、Regenerate (再生成) することが可能です。
image.png
image.png

2. Power Query でツイートを取得するためのクエリを生成する

Twitter API は様々な検索をすることができるのですが、今回は特定のキーワードでツイートを取得することにします。
Twitter API V2 でツイート検索時に使用するのは、GET /2/tweets/search/recent です。様々なクエリパラメーターと Bearer token を渡して URL を組み立てて、ツイートを検索するクエリを実行する流れになります。

※ Twitter API の仕様で、1リクエストにつき取得できるツイートは最大100件で、過去7日間分が範囲となります。
※ 15分ごとに180リクエストの制限があるので過度な要求はさけるようにしましょう。

※Twitter のクエリ仕様について解説

クエリの基本構造は以下のような形です。

"https://api.twitter.com/2/tweets/search/recent?query=[検索ワード(必須)]&[ツイート日時ユーザー情報など取得したい情報や取得したい件数などを'&'でつなぐ(任意)]" -H "Authorization: Bearer [Bearer token]"
  • ツイート検索に使用する API [tweets/search/recent] を Url で記述
    "https://api.twitter.com/2/tweets/search/recent?"
  • 引数(クエリパラメーター)
    ?につづけてに引数を&でつないで追加していきます
    列挙型のものは、取りたい項目を空白無しの,でつないでいきます
    ※ Twitter API の仕様はこちら

今回は基本的な項目(ツイート内容とツイートしたユーザーの情報)のみを使います。使うクエリパラメーターは以下の通りです。
(以下はクエリパラメーター全項目ではなく、今回使うものだけをあげています)

引数名 必須 内容
query テキスト 検索したいキーワード
expansions author_id user.fields を取得するときに指定必要
max_results 数字 クエリで取得する件数
tweet.fields id(default) テキスト ツイートのID
text(default) テキスト ツイートの本文
edit_history_tweet_ids(default) オブジェクト ツイートの全バージョンを示す一意の識別子。編集履歴のないツイートは1つのID、編集履歴のあるツイートは複数のIDが存在
author_id テキスト ユーザーID
created_at 日付(ISO 8601) ツイートの投稿時間(UTC)
lang テキスト ツイートの言語
public_metrics オブジェクト ツイートの公開エンゲージメント指標 (リプライ数・いいね数・リツイート数)
source テキスト ツイートしたアプリ名
user.fields id(default) テキスト ユーザーID
name(default) テキスト ユーザーがプロフィールで定義した名前
username(default) テキスト ユーザーが自らを識別するための Twitter スクリーンネーム、ハンドルネーム
created_at 日付(ISO 8601) ユーザーアカウント作成日時(UTC)
description テキスト ユーザー説明
location テキスト ユーザプロファイルで指定された場所(自由形式)
profile_image_url テキスト ユーザープロフィール画像URL
public_metrics オブジェクト ユーザーのアクティビティに関する詳細(フォロワー数、フォロー数、ツイート数、リスト数)
url テキスト ユーザープロフィールURL

2-1. Power Query でパラメーターを作成する

Twitter API を実行するために、2つの Power Query パラメーターを作成します。

  • 検索キーワード
  • トークン
  1. Power BI Desktop を起動し、「データの変換」-> 「データの変換」をクリックして、Power Query エディタを起動します。
    image.png

  2. Power Query エディタで、「パラメーターの管理」->「新しいパラメーター」をクリックします。
    image.png

  3. 「パラメーターの管理」 画面で、新しいパラメーター 検索キーワード を作成します。
    [種類]に テキスト を指定し、[現在の値]に 任意の値(例:"日本マイクロソフト") を入力します。
    image.png

  4. 同じく、「パラメーターの管理」 画面で、新しいパラメーター トークン を作成します。
    [種類]に テキスト を指定し、[現在の値]にあらかじめコピーしておいた、Twitter API V2 の Bearer Token を貼り付けます。
    image.png

これで Power Query パラメーターは作成完了です。

2-2. Power Query でTwitter API へ接続し、クエリを実行するコードを記述する

Power Query で空のクエリを作成し、詳細エディタに M言語でコードを記述していきます。

  1. Power Query エディタで「新しいソース」-> 「空のクエリ」をクリックし、空のクエリを作成する。
    image.png

  2. 空のクエリの名前を わかりやすい名前 (例:twitter_analysis_base) へ変更する
    image.png

  3. 「詳細エディタ」をクリックして、詳細エディタを開く
    image.png
    image.png

  4. 以下のソースを貼り付け、完了ボタンを押下

    Twitter API
    let
        // AccessTokenHeader を作成
        AccessToken = トークン,
        AccessTokenHeader = "bearer " & AccessToken,
        
        // bearer token を使用して、Twitter GET /2/tweets/search/recent メソッドを実行
        GetJsonQuery = Web.Contents("https://api.twitter.com/2/tweets/search/recent?max_results=100&expansions=author_id&tweet.fields=author_id,created_at,lang,public_metrics,source&user.fields=created_at,description,location,profile_image_url,public_metrics,url&query=" & #"検索キーワード",
            [
                Headers = [#"Authorization"=AccessTokenHeader]
            ]    
        ),
      
        FormatAsJsonQuery = Json.Document(GetJsonQuery)
    in
        FormatAsJsonQuery
    

    image.png

    ※ 上記ソースをざっくり説明すると、組み立てた URL を Web.Contents 実行して、戻ってきた値を Json.Document で見られるようにしています。

  5. 以下の通り、[data]、[includes]、[meta] が取得できていることを確認する。
    image.png

    ※ Twitter API V2 では、[data] と [includes] に分かれて、要求した項目が格納されて返ってきます。

今回はここまでです。
次回は取得したデータ[data]、[include]の中にある、ツイート内容やユーザー情報を Power Query でデータ整形していきます。

8
2
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
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?