LoginSignup
0

posted at

【S3Select】列名がないCSVファイルの調べ方【Tips】

S3 SelectでRawデータを調べる

AWSのストレージサービスS3(Simple Storage Service)https://aws.amazon.com/jp/s3/
コスト面から利用企業の多いサービスであるS3。蓄積されたCSVファイルに対して調査を行えるのが、S3Selectである。
本記事は業務でS3Selectを利用する上でのRawデータ調査のTipsを紹介する。
早急に解決したい方は解決

目次

No ページ内リンク
1 背景
2 課題
3 解決
4 注意

背景

S3にあるファイルはテーブルではなくCSVファイルである。データの中身の確認をするにはダウンロードするしか無いように思われる。
(あるいはRedshiftやAthenaなど別サービスにデータをロードし、確認)
しかし、大きなファイルをダウンロードして確認するのは非効率であるし、ローカルにデータを持つのはセキュリティ上制限される場合もある。
そこでS3Selectを利用して、SQLでファイルのデータを確認する。

課題

S3のCSVファイルをS3Selectで調査するにあたって困ったのが、条件での抽出である。
たとえば、下記のようなデータがCSVファイルとして保存されているとする。

1 2 3
a りんご 100
b みかん 120
c なし 150
d もも 200

DBであれば、id, name, priceなどのように列名をつけてcreate tableすれば

select * from table where name = 'りんご' 

のように簡単に抽出可能だが、列名がないCSVファイルではそうもいかない。
列名がないから列での条件付けが出来ないという問題があったのである。

解決

簡単に上記課題を解決する方法がある。
列番号での指定ができるのだ。
下記のように書けば、先ほどの抽出クエリと同じことができる。

select * from table where _2 = 'りんご'

こうして大きなサイズのCSVファイルをS3にある状態のまま、簡単に調査できる。

注意

S3SelectのクエリはCSVファイルの設定が影響する。
例えば、TSVファイルなのに区切りが,(カンマ)になっているなどでクエリのエラーとなる。
上記でうまくいかない場合は設定を確認されたし。

参考

公式のリファレンス

S3Selectについては下記がわかりやすい

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
What you can do with signing up
0