ツイートをTableauで可視化するデータ基盤の構築
Twitterで特定のキーワードやハッシュタグを含んだツイートを、取得&蓄積するデータ基盤をGoogleCloudPlatform上に構築しました。
BigQueryにデータを保管しているため、Tableauで可視化が可能です。
開発環境
GoogleCloudPlatform
・GoogleBigQuery
・GoogleCloudFunctions (python)
概要
Googleスプレッドシートに記載されているキーワードをもとに、Twitter APIからツイート内容を取得してネガポジスコアを算出し、GoogleCloudStorage(以下GCS)とBigQueryに保存します。BigQueryに保存したデータは、Tableauで表示&ダウンロード可能です。
GCSとBigQueryに保管するロジックは、Cloud Functions上にpythonで構築しています。
Cloud Schedulerで1日1回実行するように設定しているため、初期設定さえすれば後は毎日全自動で取得してきてくれます。
また、キーワードはいつでも他の人が変更&追加可能です。
解説
① TwitterAPIでツイートを取得
Standard Search APIを利用するためには、英語で申請が必要です。
申請に関してはこちらを参考にしました。
Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ
また、Standard Search APIによる取得は以下のような制限があります。
・1回で最大100ツイート
・15分で180回リクエスト
・取得できるツイートは過去7日間まで
15分間で最大18000ツイートまでしか取得できません。
15分経過すれば、リクエスト回数が180回に戻ります。
無償APIだと7日以上前のツイートは取得できません。
本格的に取得したい場合は、有償のAPIを利用することで取得することができます。
Twitter APIに関してはこちらのページを30回以上見ました。
500万件を超えるTwitter のリツイート データを取得・分析する方法
② ツイートをCloud Storageに保管
Cloud FunctionsはJavaScriptやpythonをクラウド上で動作できるサービスです。
Googleドライブ上のスプレッドシートから、あらかじめ入力しておいたキーワードを取得して、Twitter APIをたたきます。
帰ってきたjsonをcsvに変換して、1日分のツイートをCloud Storageに保管します。
取得したツイート内容を直接BigQueryに保管しても良いのですが、一度データレイクとしてCloud Storageに保管しています。
データを限定して保管すると、あとから「あ、この項目も欲しかった!」なんてことになるかもしれないですしね。
データ基盤の概念についてはこちらを参考にしました。
データ基盤の3分類と進化的データモデリング
③ BigQueryに保管
ここでもCloud Functionsを利用しています。
pythonで感情分析を実施し、スコア化しています。
データフレームで処理しているためBigQueryへの保管はto_gbqを使っています。
pandas.DataFrame.to_gbq
to_gbqのtable_schemaでBigQueryのスキーマを指定しておかないと、ほとんどnullの項目(geo等)を保管する際に「スキーマが違う!」と怒られる場合があるので注意が必要です。
今回は感情分析がメインのため、BOTやリツイートを除外しています。
BOTに関しては、sourceに「twitter.com」が含まれているものだけを選定、
リツイートはツイート本文が「@ RT」で始まっているものを除外しています。
④ BigQueryに保管
キーワードごとにテーブルを作成しています。
ツイート内容の他に、ツイート日時、アカウント情報、いいね数、ネガポジスコア等を保管しています。
⑤ Tableauで可視化
Tableau DesktopでBigQueryを直接読み込み、可視化しています。
画像は取得していませんが、URLで表示したり保存も可能です。
BigQuery × Tableauでなくても、Microcms等のCMSを利用してNextやNuxtでまとめサイトの構築も可能です。