© 2018 CData Software Japan, LLC | www.cdata.com/jp
ZOZO 前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法
-Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントとその対策-
2019/01
CData Software Japan
Kazuya Sugimoto -Lead Engineer
See the World as a
Database
Speaker
杉本 和也:Kazuya Sugimoto
• CData Software Japan, LLC Lead Engineer
• Microsoft MVP for Business Solution(Dynamics CRM/365)
Blog:Morning Girl
http://kageura.hatenadiary.jp/
Twitter:@sugimomoto Facebook:sugimomoto
© 2018 CData Software Japan, LLC | www.cdata.com/jp
About CData Software
Bi-directional Access to Live App, Database, & Web API Data Through Standard Drivers
・CData Software, Inc. / Started: 1994 (/nsoftware)
・Location: Chapel Hill, NC a spin-off of /n software
・CData Japan: 2016/6 (JV with Infoteria)
・20年以上にわたりデータ関連コンポーネントを提供
・100+ 対応データソース
・「API を使いやすく」をミッションにクラウドデータ接続を標準化
© 2018 CData Software Japan, LLC | www.cdata.com/jp
はじめに
-なんでこんなことをしようと思ったのか?-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
[前澤 API]で Twitter 検索すると出てくる
Twitter API ・抽選方法への懐疑的な声
© 2018 CData Software Japan, LLC | www.cdata.com/jp
API で取得できない、件数さばけない!
という声が多数!
ほんと・・・?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
ちょっと話はそれますが
© 2018 CData Software Japan, LLC | www.cdata.com/jp
業界最多級のデータソース
Drivers for NoSQL, Big Data, & SaaS Connectivity
CRMおよびマーケティング自動化
会計システム
コラボレーションおよびERP
オンプレミスおよびクラウドDB
ドキュメントおよびファイル形式
ソーシャルネットワーキングネットワーキングおよび認証
電子商取引
その他
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Power BI のデータソース拡張コネクターなどを作ってます
Drivers for NoSQL, Big Data, & SaaS Connectivity
© 2018 CData Software Japan, LLC | www.cdata.com/jp
CData Software Japan に勤めていて、
日々APIと戯れる API 中毒な人間として、
黙ってられない!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
今日お話したいこと・伝えたいこと
どうやって500万件におよぶ大量の Twitter データを取得したらいいのか?
どうやれば、BIツールなどで分析できる状態に持っていけるのか?
みなさんが
「1億円使って獲得した大量のリツイートを分析したい!」
と思ったときのために
実際に大量ツイートを取得した経験から
分析するまでのアプローチ・対応方法・API の仕様や制約をまとめてみました!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
立ちはだかる「嵌りどころ・落とし穴」たち
© 2018 CData Software Japan, LLC | www.cdata.com/jp
分析するまでの過程で遭遇した4つの課題
Twitter
API リミット対策
どうやって500万件の
ツイートを取得するの?
どうやって対象の
ツイートを特定するの?
Twitter Search
API の仕様と制限
どうやって取得した
データを構造化するの?
Twitter データの
構造と解析
どうやって DB に
データを流し込むの?
Twitter データの
DB移行方法
© 2018 CData Software Japan, LLC | www.cdata.com/jp
1.どうやって500万件のリツイートを取得するの?
-Twitter API リミット対策-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
仮に ZOZO前澤社長が本気で API を使って抽選
しようとした場合どうなるか?
イベント期間
「1月5日 22:35 ~ 1月7日 24:00」
当選者発表
「1月8日 9:00」
もし、適切に当選者を全部取得して抽選するのであれば、
「約50時間(24時間 ☓ 2 + 9時間)」
で500万リツイート取得する必要があった
© 2018 CData Software Japan, LLC | www.cdata.com/jp
通常通り Twitter API を使って取得した
場合どうなるの?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
69時間!? 厳しい!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
そこで、2017年に発表された 有償の Search API
「Premium / Enterprise Search API」を使う!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
「Premium / Enterprise Search API」を
使った場合、どうなるの?
Standard Search API Premium Search API Enterprise Search API
取得対象期間 過去 7 日間 過去 30 日間 過去 30 日間
1リクエストで取得できる件数 100 ツイート
count=100
500 ツイート
maxResults=500
500 ツイート
maxResults=500
リクエスト制限 15分 / 180 リクエスト 1分 / 60 リクエスト 1秒 / 20リクエスト
1時間あたりで取得できるツイート数 72,000 ツイート
180 * 4 * 100
1,800,000 ツイート
60 * 60 * 500
36,000,000 ツイート
20 * 60 * 60 * 500
1000万 ツイート取得にかかる時間
(500万ツイートの場合)
138 時間
(69時間)
5.5 時間
(2.75時間)
22 分
(11分)
1000万 ツイート取得にかかる費用 無償 5,000 ドル Twitter 社次第
© 2018 CData Software Japan, LLC | www.cdata.com/jp
ちなみに Premium API の利用料金
(Enterprise API は Twitter 社へ要相談)
© 2018 CData Software Japan, LLC | www.cdata.com/jp
2.どうやって対象のツイートを識別するの?
-Twitter Search API の仕様と制限-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
そもそも何を取得したかったのか?
主なターゲットは
このリツイート
© 2018 CData Software Japan, LLC | www.cdata.com/jp
でも、それ以外にも私はこの企画全体の
影響を可視化したかった・・・!
例えば・・・
© 2018 CData Software Japan, LLC | www.cdata.com/jp
意見を述べる人とか、ニュースとか
© 2018 CData Software Japan, LLC | www.cdata.com/jp
こういう偽物とか
© 2018 CData Software Japan, LLC | www.cdata.com/jp
なんか便乗する人とか
© 2018 CData Software Japan, LLC | www.cdata.com/jp
こんなイベントを開く人とか
© 2018 CData Software Japan, LLC | www.cdata.com/jp
もちろん当選した人も
© 2018 CData Software Japan, LLC | www.cdata.com/jp
取得したいツイートの種類
通常リツイート 引用リツイート リプライ(返信)通常ツイート
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Search API の「Query」を使うわけですが
-Query Available operators-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
(仮定)
大本のツイートに「#月へ行くならお年玉」
これを使えば、全部いけるんじゃない?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
やってみた
検索キーワードが
ツイート内にある
検索キーワードが
引用・リツイート先にある
ノーマルツイート 取得可能 -
リプライ 取得可能 取得できない!
ノーマルリツイート - 取得可能
引用リツイート 取得可能 取得できない!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
これが取得できない!!!!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
いろいろ考えた
© 2018 CData Software Japan, LLC | www.cdata.com/jp
結論
「#月に行くならお年玉」の
ハッシュタグが含まれていない引用リツイートも、
ハッシュタグツイートも取得するならどうするか?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
1.retweets_of:で前澤社長のリツイート・
引用リツイートをすべて取得
2. 「#月に行くならお年玉」検索でさらに取得
3.そして、重複データを削除!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
つまり・・・
© 2018 CData Software Japan, LLC | www.cdata.com/jp
なので、今回は泣く泣く「#月に行くならお年玉」で
取得できるものをシンプルに集めました。
その数「430万ツイート」
それでも、27万円ほどかかりました
(うち、2万7千円が私の財布、3万9千円がPayPalで募ったところご支援いただけました!)
PS.もし、これならできるんじゃね? って人が居たら教えてください
© 2018 CData Software Japan, LLC | www.cdata.com/jp
ちなみに、取得した時に使ったコードは以下で公開中
https://github.com/sugimomoto/CData.Twitter.RetrieveZozoTweets
© 2018 CData Software Japan, LLC | www.cdata.com/jp
3.どうやって取得したデータを構造化するの?
-Twitter データの構造と解析-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
とりあえず、なんやかんやで取得しました
8,653ファイル・33.5GB(1ファイル500ツイート)
© 2018 CData Software Japan, LLC | www.cdata.com/jp
でも中身はこんな感じ
© 2018 CData Software Japan, LLC | www.cdata.com/jp
{
Name : “kazuya”,
Age : 30,
Location : [-73.856077,
40.848447]
} 変換!?
スキーマレス
ネスト・配列ミックスな
階層構造
型はどうする?
配列はどうマッピングする?
ネスト構造は分ける?分けない?
RDBライクになれば、
BIツールに繋げやすい
どうやってRDBライクにスキーマを定義し扱うのか?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
もちろん、Power BI は JSON 読み込めます
でも、何も挟まずに32GBものJSONを読むのは厳しい
© 2018 CData Software Japan, LLC | www.cdata.com/jp
しかも・・・
Twitter オブジェクトは結構フォーマットが多い
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Basic Tweet Format
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Extended Tweets Format
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Retweets Format
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Retweets and Quote Tweets Format
© 2018 CData Software Japan, LLC | www.cdata.com/jp
めんどくさい!
後々のことを考えてある程度リレーショナルな形に
フラット化したい!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
そこで、CData JSON Driver を
利用することにしました
© 2018 CData Software Japan, LLC | www.cdata.com/jp
JSON ファイルの構造を自動解析して
勝手にリレーショナル化してくれる
{
"documents": [
{
"title": "SampleTitle1",
"updated_at": "2018-09-10T05:22:26Z",
“files": [
{
"name": “SampleFile1-1",
"language_code": “en"
},
{
"name": " SampleFile1-2",
"language_code": "ja"
}
]
},
{
"title": "SampleTitle2",
"updated_at": "2018-09-05T05:22:26Z",
“files": [
{
"name": “SampleFile2-1,
"language_code": "ja"
},
{
"name": “SampleFile2-2",
"language_code": “en"
}
]
}
]
}
* title update_at
1 SampleTitle1 2018-09-10T05:22:26Z
2 SampleTitle2 2018-09-05T05:22:26Z
* documents_id name language_code
1 1 SampleFile1-1 en
2 1 SampleFile1-2 ja
3 2 SampleFile2-1 ja
4 2 SampleFile2-2 en
Files テーブル
Documents テーブル
参考:http://bit.ly/CDataJson
© 2018 CData Software Japan, LLC | www.cdata.com/jp
こんな感じになります
© 2018 CData Software Japan, LLC | www.cdata.com/jp
こんな風に見えるようになります
© 2018 CData Software Japan, LLC | www.cdata.com/jp
4.どうやって DB にデータを流し込むの?
-Twitter データのDB移行方法-
© 2018 CData Software Japan, LLC | www.cdata.com/jp
JSONを構造的にアクセスできるようにしたはいいが
分析の度に都度JSONファイルを読み込むのは重い
© 2018 CData Software Japan, LLC | www.cdata.com/jp
とはいえ
• テラバイト・ペタバイト級のデータでも無い
• ワンポイントデータなのでストリーミング処理も要らない
• 構文解析などまで手を染めるつもりはない
最終的にメンバーで分析することも考えて、
シンプルにクラウドRDBに送って、BI ツールで接続できるくらいがちょうどいい
© 2018 CData Software Japan, LLC | www.cdata.com/jp
また手前味噌ですが、CData Sync を活用しました
© 2018 CData Software Japan, LLC | www.cdata.com/jp
CData Sync って?
© 2018 CData Software Japan, LLC | www.cdata.com/jp
.NET C#
CData
ADO.NET
つまり、こんな感じのアーキテクチャにする
.NET
C#
REST
API
HTTP
JSON
SQL
RecordSet
SQL
Twitter Premium APIで
ツイートデータを取得
フラット化したJSONデータを
CData Sync で Azure SQL にレプリケート
SQL
最終的にPower BIを使って
リツイートを分析
{ json }
RecordSet
CData JSON Driver で
JSON をリレーショナル化
© 2018 CData Software Japan, LLC | www.cdata.com/jp
.NET C#
CData
ADO.NET
ちなみに、もし Standard Search API を使うなら
138時間連続稼働させることを考えてこんな感じに
REST
API
HTTP
JSON
SQL
RecordSet
SQL SQL
{ json }
RecordSet
{ json }
{ json }
{ json }
Azure
Functions
Azure
Storage
Azure
Web Apps
もしくは、DataFactory という手も
Azure SQL
もしくは
Datawarehouse
© 2018 CData Software Japan, LLC | www.cdata.com/jp
こんな風に同期設定
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Azure SQL 100 DTU に登録
© 2018 CData Software Japan, LLC | www.cdata.com/jp
これでようやく分析できる状況が整いました!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
最後に分析結果
Power BI で デモ
© 2018 CData Software Japan, LLC | www.cdata.com/jp
66
© 2018 CData Software Japan, LLC | www.cdata.com/jp
67
© 2018 CData Software Japan, LLC | www.cdata.com/jp
68
© 2018 CData Software Japan, LLC | www.cdata.com/jp
69
© 2018 CData Software Japan, LLC | www.cdata.com/jp
70
© 2018 CData Software Japan, LLC | www.cdata.com/jp
71
© 2018 CData Software Japan, LLC | www.cdata.com/jp
72
© 2018 CData Software Japan, LLC | www.cdata.com/jp
73
© 2018 CData Software Japan, LLC | www.cdata.com/jp
まとめ
© 2018 CData Software Japan, LLC | www.cdata.com/jp
まとめ
• Premium API なら 大量ツイートも軽々さばける!
• 検索アプローチは要注意。やりたいこととどこまで検索対象
にできるかは、事前に把握しておくこと。
• Twitter の JSON 構造は地味に複雑。
今後も変化する可能性あるので
柔軟に対応できる状態にしておくのがいい
• 500万リツイートでも40GBほど、実はそこまでビッグでもない
ちょうどいいRDB選択でも十分分析できる
© 2018 CData Software Japan, LLC | www.cdata.com/jp
CData Software Japan では メンバーを募集中!
https://www.wantedly.com/projects/265684
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Special Thanks
Blog公開時からご支援頂いた
@渡部 知記 さん
@Shohei Oda さん
@Takeshi Kagata さん
@小林 竜也 さん
@東 賢 (Ken Azuma)さん
@井之上さん
ありがとうございます!
© 2018 CData Software Japan, LLC | www.cdata.com/jp
Thanks!

ZOZO前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントとその対策-

  • 1.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp ZOZO 前澤社長お年玉リツイート企画のビッグデータに立ち向かう方法 -Twitterのビッグデータを分析するために、実際にやってみてわかった嵌りポイントとその対策- 2019/01 CData Software Japan Kazuya Sugimoto -Lead Engineer
  • 2.
    See the Worldas a Database Speaker 杉本 和也:Kazuya Sugimoto • CData Software Japan, LLC Lead Engineer • Microsoft MVP for Business Solution(Dynamics CRM/365) Blog:Morning Girl http://kageura.hatenadiary.jp/ Twitter:@sugimomoto Facebook:sugimomoto
  • 3.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp About CData Software Bi-directional Access to Live App, Database, & Web API Data Through Standard Drivers ・CData Software, Inc. / Started: 1994 (/nsoftware) ・Location: Chapel Hill, NC a spin-off of /n software ・CData Japan: 2016/6 (JV with Infoteria) ・20年以上にわたりデータ関連コンポーネントを提供 ・100+ 対応データソース ・「API を使いやすく」をミッションにクラウドデータ接続を標準化
  • 4.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp はじめに -なんでこんなことをしようと思ったのか?-
  • 5.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp [前澤 API]で Twitter 検索すると出てくる Twitter API ・抽選方法への懐疑的な声
  • 6.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp API で取得できない、件数さばけない! という声が多数! ほんと・・・?
  • 7.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp ちょっと話はそれますが
  • 8.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 業界最多級のデータソース Drivers for NoSQL, Big Data, & SaaS Connectivity CRMおよびマーケティング自動化 会計システム コラボレーションおよびERP オンプレミスおよびクラウドDB ドキュメントおよびファイル形式 ソーシャルネットワーキングネットワーキングおよび認証 電子商取引 その他
  • 9.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Power BI のデータソース拡張コネクターなどを作ってます Drivers for NoSQL, Big Data, & SaaS Connectivity
  • 10.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp CData Software Japan に勤めていて、 日々APIと戯れる API 中毒な人間として、 黙ってられない!
  • 11.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 今日お話したいこと・伝えたいこと どうやって500万件におよぶ大量の Twitter データを取得したらいいのか? どうやれば、BIツールなどで分析できる状態に持っていけるのか? みなさんが 「1億円使って獲得した大量のリツイートを分析したい!」 と思ったときのために 実際に大量ツイートを取得した経験から 分析するまでのアプローチ・対応方法・API の仕様や制約をまとめてみました!
  • 12.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 立ちはだかる「嵌りどころ・落とし穴」たち
  • 13.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 分析するまでの過程で遭遇した4つの課題 Twitter API リミット対策 どうやって500万件の ツイートを取得するの? どうやって対象の ツイートを特定するの? Twitter Search API の仕様と制限 どうやって取得した データを構造化するの? Twitter データの 構造と解析 どうやって DB に データを流し込むの? Twitter データの DB移行方法
  • 14.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 1.どうやって500万件のリツイートを取得するの? -Twitter API リミット対策-
  • 15.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 仮に ZOZO前澤社長が本気で API を使って抽選 しようとした場合どうなるか? イベント期間 「1月5日 22:35 ~ 1月7日 24:00」 当選者発表 「1月8日 9:00」 もし、適切に当選者を全部取得して抽選するのであれば、 「約50時間(24時間 ☓ 2 + 9時間)」 で500万リツイート取得する必要があった
  • 16.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 通常通り Twitter API を使って取得した 場合どうなるの?
  • 17.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 69時間!? 厳しい!
  • 18.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp そこで、2017年に発表された 有償の Search API 「Premium / Enterprise Search API」を使う!
  • 19.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 「Premium / Enterprise Search API」を 使った場合、どうなるの? Standard Search API Premium Search API Enterprise Search API 取得対象期間 過去 7 日間 過去 30 日間 過去 30 日間 1リクエストで取得できる件数 100 ツイート count=100 500 ツイート maxResults=500 500 ツイート maxResults=500 リクエスト制限 15分 / 180 リクエスト 1分 / 60 リクエスト 1秒 / 20リクエスト 1時間あたりで取得できるツイート数 72,000 ツイート 180 * 4 * 100 1,800,000 ツイート 60 * 60 * 500 36,000,000 ツイート 20 * 60 * 60 * 500 1000万 ツイート取得にかかる時間 (500万ツイートの場合) 138 時間 (69時間) 5.5 時間 (2.75時間) 22 分 (11分) 1000万 ツイート取得にかかる費用 無償 5,000 ドル Twitter 社次第
  • 20.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp ちなみに Premium API の利用料金 (Enterprise API は Twitter 社へ要相談)
  • 21.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 2.どうやって対象のツイートを識別するの? -Twitter Search API の仕様と制限-
  • 22.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp そもそも何を取得したかったのか? 主なターゲットは このリツイート
  • 23.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp でも、それ以外にも私はこの企画全体の 影響を可視化したかった・・・! 例えば・・・
  • 24.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 意見を述べる人とか、ニュースとか
  • 25.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp こういう偽物とか
  • 26.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp なんか便乗する人とか
  • 27.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp こんなイベントを開く人とか
  • 28.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp もちろん当選した人も
  • 29.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 取得したいツイートの種類 通常リツイート 引用リツイート リプライ(返信)通常ツイート
  • 30.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Search API の「Query」を使うわけですが -Query Available operators-
  • 31.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp (仮定) 大本のツイートに「#月へ行くならお年玉」 これを使えば、全部いけるんじゃない?
  • 32.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp やってみた 検索キーワードが ツイート内にある 検索キーワードが 引用・リツイート先にある ノーマルツイート 取得可能 - リプライ 取得可能 取得できない! ノーマルリツイート - 取得可能 引用リツイート 取得可能 取得できない!
  • 33.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp これが取得できない!!!!
  • 34.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp いろいろ考えた
  • 35.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 結論 「#月に行くならお年玉」の ハッシュタグが含まれていない引用リツイートも、 ハッシュタグツイートも取得するならどうするか?
  • 36.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 1.retweets_of:で前澤社長のリツイート・ 引用リツイートをすべて取得 2. 「#月に行くならお年玉」検索でさらに取得 3.そして、重複データを削除!
  • 37.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp つまり・・・
  • 38.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp なので、今回は泣く泣く「#月に行くならお年玉」で 取得できるものをシンプルに集めました。 その数「430万ツイート」 それでも、27万円ほどかかりました (うち、2万7千円が私の財布、3万9千円がPayPalで募ったところご支援いただけました!) PS.もし、これならできるんじゃね? って人が居たら教えてください
  • 39.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp ちなみに、取得した時に使ったコードは以下で公開中 https://github.com/sugimomoto/CData.Twitter.RetrieveZozoTweets
  • 40.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 3.どうやって取得したデータを構造化するの? -Twitter データの構造と解析-
  • 41.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp とりあえず、なんやかんやで取得しました 8,653ファイル・33.5GB(1ファイル500ツイート)
  • 42.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp でも中身はこんな感じ
  • 43.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp { Name : “kazuya”, Age : 30, Location : [-73.856077, 40.848447] } 変換!? スキーマレス ネスト・配列ミックスな 階層構造 型はどうする? 配列はどうマッピングする? ネスト構造は分ける?分けない? RDBライクになれば、 BIツールに繋げやすい どうやってRDBライクにスキーマを定義し扱うのか?
  • 44.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp もちろん、Power BI は JSON 読み込めます でも、何も挟まずに32GBものJSONを読むのは厳しい
  • 45.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp しかも・・・ Twitter オブジェクトは結構フォーマットが多い
  • 46.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Basic Tweet Format
  • 47.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Extended Tweets Format
  • 48.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Retweets Format
  • 49.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Retweets and Quote Tweets Format
  • 50.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp めんどくさい! 後々のことを考えてある程度リレーショナルな形に フラット化したい!
  • 51.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp そこで、CData JSON Driver を 利用することにしました
  • 52.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp JSON ファイルの構造を自動解析して 勝手にリレーショナル化してくれる { "documents": [ { "title": "SampleTitle1", "updated_at": "2018-09-10T05:22:26Z", “files": [ { "name": “SampleFile1-1", "language_code": “en" }, { "name": " SampleFile1-2", "language_code": "ja" } ] }, { "title": "SampleTitle2", "updated_at": "2018-09-05T05:22:26Z", “files": [ { "name": “SampleFile2-1, "language_code": "ja" }, { "name": “SampleFile2-2", "language_code": “en" } ] } ] } * title update_at 1 SampleTitle1 2018-09-10T05:22:26Z 2 SampleTitle2 2018-09-05T05:22:26Z * documents_id name language_code 1 1 SampleFile1-1 en 2 1 SampleFile1-2 ja 3 2 SampleFile2-1 ja 4 2 SampleFile2-2 en Files テーブル Documents テーブル 参考:http://bit.ly/CDataJson
  • 53.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp こんな感じになります
  • 54.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp こんな風に見えるようになります
  • 55.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 4.どうやって DB にデータを流し込むの? -Twitter データのDB移行方法-
  • 56.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp JSONを構造的にアクセスできるようにしたはいいが 分析の度に都度JSONファイルを読み込むのは重い
  • 57.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp とはいえ • テラバイト・ペタバイト級のデータでも無い • ワンポイントデータなのでストリーミング処理も要らない • 構文解析などまで手を染めるつもりはない 最終的にメンバーで分析することも考えて、 シンプルにクラウドRDBに送って、BI ツールで接続できるくらいがちょうどいい
  • 58.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp また手前味噌ですが、CData Sync を活用しました
  • 59.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp CData Sync って?
  • 60.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp .NET C# CData ADO.NET つまり、こんな感じのアーキテクチャにする .NET C# REST API HTTP JSON SQL RecordSet SQL Twitter Premium APIで ツイートデータを取得 フラット化したJSONデータを CData Sync で Azure SQL にレプリケート SQL 最終的にPower BIを使って リツイートを分析 { json } RecordSet CData JSON Driver で JSON をリレーショナル化
  • 61.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp .NET C# CData ADO.NET ちなみに、もし Standard Search API を使うなら 138時間連続稼働させることを考えてこんな感じに REST API HTTP JSON SQL RecordSet SQL SQL { json } RecordSet { json } { json } { json } Azure Functions Azure Storage Azure Web Apps もしくは、DataFactory という手も Azure SQL もしくは Datawarehouse
  • 62.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp こんな風に同期設定
  • 63.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Azure SQL 100 DTU に登録
  • 64.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp これでようやく分析できる状況が整いました!
  • 65.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 最後に分析結果 Power BI で デモ
  • 66.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 66
  • 67.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 67
  • 68.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 68
  • 69.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 69
  • 70.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 70
  • 71.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 71
  • 72.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 72
  • 73.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp 73
  • 74.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp まとめ
  • 75.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp まとめ • Premium API なら 大量ツイートも軽々さばける! • 検索アプローチは要注意。やりたいこととどこまで検索対象 にできるかは、事前に把握しておくこと。 • Twitter の JSON 構造は地味に複雑。 今後も変化する可能性あるので 柔軟に対応できる状態にしておくのがいい • 500万リツイートでも40GBほど、実はそこまでビッグでもない ちょうどいいRDB選択でも十分分析できる
  • 76.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp CData Software Japan では メンバーを募集中! https://www.wantedly.com/projects/265684
  • 77.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Special Thanks Blog公開時からご支援頂いた @渡部 知記 さん @Shohei Oda さん @Takeshi Kagata さん @小林 竜也 さん @東 賢 (Ken Azuma)さん @井之上さん ありがとうございます!
  • 78.
    © 2018 CDataSoftware Japan, LLC | www.cdata.com/jp Thanks!