3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS-Athenaでファイル名をカラムに追加する方法

Posted at

#この記事の内容
AWS-Athenaで、ファイル名をカラムに追加するやり方をご紹介します。

もう少し具体的に述べると、
以下のファイル名のデータがS3の同じ場所に格納されていて、
YYYYMMの部分をクエリで利用したいケースを想定しました。
・「test_file_202001.csv」
・「test_file_202002.csv」
・「test_file_202003.csv」

#クエリ例
Athenaでファイル名をカラムとして取得するには、「"$path"」を利用します。

SELECT "$path" FROM テーブル名

#やってみた(環境構築)
バケット名「test-bucket」の配下に、以下3つのデータが格納されています。

・「test_file_202001.csv」

name
satoshi
kasumi

・「test_file_202002.csv」

name
takeshi

・「test_file_202003.csv」

name
musashi
kojiro
sakaki

#やってみた(クエリ実行)
クエリを早速実行してみます。

SELECT
  *
  , "$path" 
FROM 
  バケット名

S3のバケット名とファイル名の両方が取得できました。

name $path
satoshi s3://test-bucket/test_file_202001.csv
kasumi s3://test-bucket/test_file_202001.csv
takeshi s3://test-bucket/test_file_202002.csv
musashi s3://test-bucket/test_file_202003.csv
kojiro s3://test-bucket/test_file_202003.csv
sakaki s3://test-bucket/test_file_202003.csv

#応用例
今回のように「YYYYMM」部分のみを取得したい場合は、正規表現を用いて置換して取得しました。

SELECT
  *
  , REGEXP_REPLACE(REGEXP_REPLACE("$path", '^s3://test-bucket/test_file_', ''), '.csv$', '') AS yyyymm
FROM 
  バケット名

意図した通りの結果が取得できました!

name yyyymm
satoshi 202001
kasumi 202001
takeshi 202002
musashi 202003
kojiro 202003
sakaki 202003

#最後に
簡単にカラムを追加できるので非常に便利ですね!

#参考文献
Amazon Athena ユーザーガイド

3
0
0

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
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?