Tableau prepを使って大量のCSVファイルを1つにまとめて軽くしたい
●概要
MLBの2022年と2023年の全投球のデータを取得して、年ごとの違いがあるかを比較したいと考えたが、データダウンロードの都合により1つ当たり約13,000KBの72ファイルに分かれてしまった。
そのまま、Tableau内でユニオンしても良いが、データ重すぎるため、毎回立ち上げるのに30秒以上待たされてしまうので、Tableau prepで1つのファイルに結合しつつ、ファイル容量も大幅に圧縮したい。
(*Tableau prepを触り始めてから日が浅いので、より良い方法が見つかれば随時更新します。)
●データ概要
期間:2022年・2023年レギュラーシーズン(2022年4月4日~10月7日、2023年3月30日~10月1日)
取得データ対象:上記の期間内で投じられたMLBの全投球
Baseball Savantより取得:
https://baseballsavant.mlb.com/
●ファイル結合(ユニオン)作業
・Tableau prepのインストール
72ファイルを合体するために、まずTableu prepをインストールする
① 下記のサイトアクセスする
https://www.tableau.com/ja-jp/support/releases/prep
② ログインしてダウンロードを実行
最新の日付のものを選択
↓
ログイン画面に飛ぶので必要な情報を入力
↓
使っているPCに合わせたダウンロードを選択し、任意の場所に保存
↓
ダウンロードされたファイルを開き、「インストール」を選択するとTableau prepアプリがインストールされる
これで、Tableau prepのインストールは完了となる。
・ファイルを結合(ユニオン)する
ここからは、インストールしたTableau prepを使って実際に72ファイルを1つに結合(ユニオン)していきたい。
① Tableau prepに対象ファイルの取り込み
左上の+マークから、取り込みたいファイル形式を選択。(今回はCSVファイルなので、「テキストファイル」を選択)
↓
対象ファイルを取り込むと下記の様な画面に飛ぶ
これで、取り込み完了となる。
② 結合(ユニオン)を行う
ユニオンしたいファイルをドラックして、他のファイルの上に重ねると、選択肢が表示されるので、その中の「ユニオン」の上にドロップする。
↓
下記の様な表示になっていれば、ユニオンが成功している
↓
他のファイルもユニオンしたい場合は、
対象ファイルを「ユニオン1」の上にドラックし「追加」の上にドロップ
3つのファイルがユニオンされ1つになった状態となる
③ ユニオンしたデータを出力する
ユニオンしたデータを出力する場合は、対象データの横の+から、出力を選択する
↓
参照から任意の保存場所とファイル名を記入し、
フローの実行で出力される
*1度にユニオン出来るファイル数の上限は10ファイルなので、11以上ファイルをユニオンする場合は複数回実行する必要があるが、ユニオンしたファイルをさらにユニオンすれば72ファイルでもそれほど工数は掛からなかった。
●出力したファイルをTableauに取り込んで分析
Tableu prepで出力したファイルは拡張子が「.hyper」となる。この「.hyper」はデータを圧縮するのが非常に優秀で、72ファイルを1つにユニオンした「.hyper」ファイルの容量は約186,000KBと、単純計算ではあるがCSVの場合の72×13,000KB=936,000KBの約5分の1まで容量を圧縮する事が出来ている。
これにより、Tableauファイルを開くまでに30秒以上待たされる様な事はなくなった。
最後におまけ程度ではあるが、ユニオンしたファイルを使って2022年と2023年のMLBの球種別変化量に違いがあるかを確認していきたい。
・右投手平均変化量比較
球種別変化量は多くの球種で、2022年(×)に対して2023年(●)はホップ成分の少ない又はドロップ成分の多い変化になっており、全体的に“垂れ”の傾向にあった事が分かる。
・左投手平均変化量比較
左投手も同様に多くの球種で、2022年(×)に対して2023年(●)は“垂れ”系の傾向がみられる。
●まとめ
左右共に球種を跨って、似たような傾向がみられるため、2023年から導入されたピッチクロックや、それによる盗塁の増加などがこの結果の要因となっている可能性も考えられる。
また、大量ファイルの分析を行う際は、Tableauに直接取り込むのではなく、Tableau prepを使って1つのファイルに変換する方が圧倒的に軽い事が分かった。
この記事が気に入ったらサポートをしてみませんか?