【解説】開発ライブ実況#8 データエンジニアによる前処理の様子|拡張子がcsvのファイルを集計してみる  by メルペイ DataPlatform チーム Software Engineer #mercari_codecast

メルペイ DataPlatform チーム ソフトウェアエンジニアの syucream です。このブログは、先日おこなった 開発ライブ実況#8 データエンジニアによる前処理の様子|拡張子がcsvのファイルを集計してみる イベントのまとめです。

  • 開発ライブ実況とは、コーディングの様子を、開発者本人と実況者がライブ実況するイベントです。使っている言語、エディタ、ドキュメントの見方、テストの書き方などを、実況を聞きながら見ることができます。 プレイリスト (過去全ての開発ライブ実況動画)

イベント名が示すとおり、当イベントはシリーズ化されていて今回が第 8 回の内容となります。今回は開発というより運用作業の色が出ているような、一風変わった内容になっています。出題は sinmetal , 解説は orfeonjp でお送りしました。

開発環境

使用したもの

使っている理由

Vim, awk は出題にある CSV ファイルをローカル環境で処理するために使用しています。課題のファイルサイズを加味してこれらのツールセットを選択しました。 BigQuery は弊社でデータ分析等のユースケースで非常によく使われるデータウェアハウスサービスです。手軽に利用でき、分析用クエリの結果の返却も高速なため今回の課題を解くのに利用しました。

課題とアウトプット

課題

ここに拡張子がcsvのファイルがあります。

商品名に デラックス と入っているものの Earning の合計を出してください
郵便番号 106-6125 の Earning の合計を出してください
日毎の Earning 合計 の TOP 100 を出してください

課題の CSV ファイルとしては、 300MB 超のサイズ、約 300 万行の商品の売上データらしきものが含まれた内容です。これを上記の通りに分析した結果を提出するのが今回の課題内容になります。

ライブ実況動画

反省点

課題の CSV 内の郵便番号に全角ハイフンなど複数バリエーションがあるのに配慮できなかったのは痛恨のミスです。イベント開催当初、 ケンオール が話題になっていたこともあるのに、もう少し注意すべきだったと感じています。 他にも、課題のファイルのサイズが大きないとはいえ BigQuery にロードするのにある程度時間がかかるのは工夫の余地があったかも知れません。

orfeonコメント

自分はとりあえずBigQueryにデータをつっこんでからどうするか考えるというクラウドどっぷりな手段を取りがちなタイプだったので、BQにアップロードできないとなったらすぐに手元の環境でコマンドラインを使ってデータクリーニングをサクッとこなしたりとスキルが広くてとてもスマートでした! 一つ問題を解決したら、手元で他の既知の問題に対応しつつ投機的にアップロードして別の未知の問題を確認したりするところなども、普段の仕事の手際の良さが垣間見れました。 データクリーニングは罠を見過ごしても処理自体は正常に終わってしまうことが多く、終了条件がはっきりしないストレスフルな課題だったと思います。 普段からこうした状況に対応しているsyucreamさんならではの企画だと思いました!

イベント終了後の Q&A

イベント当日に答えられなかったコメントをいくつかピックアップしてみます。

Python で前処理するとしたらどうしますか?

おそらく今回 Vim, awk で行った処理を Python, pandas で置き換えるかと思います。 pandas を使うならさらに今回 BigQuery で行った集計処理もローカルで完結させてしまうのも良さそうですね。 BigQuery にロードするにも時間がかかるので……。

スプレッドシートでやるよ案

スプレッドシートを使うという発想は無かったので驚きました。件数がそれほど多くなければ、スプレッドシートに一旦読み込ませて中身を精査していくのも良さそうですね。

おわりに

今回はかなり泥臭い仕事感ある課題でしたが、いかがでしたでしょうか?今回のような、運用作業に近い映像を見る機会はそう多くないと感じます。何かの参考になれば幸いです。また私個人としても、他の方の作業風景を見てみたく思います。

メルペイでは現在、 Data&ML というグループでメルカリ・メルペイのデータを広く活用する基盤を構築中です。今回の実況イベントとしてはつらみのある内容になってしまっていますが、実務では勿論そればかりという事もなく、膨大なデータを蓄積して事業に活用していくにあたり様々な挑戦が発生します。もし我々の挑戦にご興味を抱いて頂けるようでしたら、以下の記事も合わせてご参照いただければ幸いです。

https://mercan.mercari.com/articles/26881/

合わせてこの Data&ML グループ配下の 2 チームである DataPlatform, Data Management チーム合同で今月 3/29(月) にトークイベントを予定しています。こちらも合わせてご興味があれば、ぜひ!

https://mercari.connpass.com/event/207191/