はじめに
Athenaのクエリを実行してデータを抽出した際に「このデータはどこのファイルから来たの?」みたいなことを知りたい時があると思います!よね
そんな時に便利な小ネタを紹介します。
結論
SELECT文の中に"$path"を入れよう!
Athenaには隠しカラムというものがあります。
その中の一つに、データが入っているファイルが分かる$pathというカラムがあります。
SELECT文に下記のように$pathを含めれば、そのデータを含むファイルの位置を知ることが出来ます。
SELECT
"$path",
*
FROM "test"."data_path_202512"
これを実行すれば、取得したいデータに加えてs3://data-path/tmp/2025/12/data-path.csvのようにデータのある場所を知ることが出来ます。
シチュエーション
AthenaではS3に配置したファイルを元にテーブルを作成することが出来ます。
S3に配置したAとBのファイルから、テーブルAとテーブルBを作成するとします。
また、このときファイルの中身が間違っていて、ファイルBに入っているべきデータがファイルAに混じっていたとします。
この場合にテーブルAの中身を全件検索すると、テーブルAの中身 + テーブルAに混じって含まれているファイルBの中身が表示されてしまいます。
テーブルに含まれているデータの内容にもよりますが、SQLの実行者は通常テーブルAの中にまさかファイルBの中身が含まれていることには気づけません。
そんなときに"$path"をクエリに入れて実行すれば、検索結果に含まれるレコードの出所を知ることが出来ます!(嬉しいなあ)
その他の隠しカラム
その他の隠しカラムとして下記があります。
使い所は難しいですね。
| 隠しカラム | 内容 |
|---|---|
| $file_size | データのあるファイルのサイズを確認できます |
| $file_modified_time | データのあるファイルの最終更新日時を確認できます |
おわりに
裏ワザってワクワクしますね!