5
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?

【裏ワザ】Amazon Athenaの隠しカラムを使ってクエリで抽出したレコードのある場所を調べよう

Last updated at Posted at 2025-12-04

はじめに

Athenaのクエリを実行してデータを抽出した際に「このデータはどこのファイルから来たの?」みたいなことを知りたい時があると思います!よね

そんな時に便利な小ネタを紹介します。

結論

SELECT文の中に"$path"を入れよう!

Athenaには隠しカラムというものがあります。
その中の一つに、データが入っているファイルが分かる$pathというカラムがあります。
SELECT文に下記のように$pathを含めれば、そのデータを含むファイルの位置を知ることが出来ます。

sample.sql
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 データのあるファイルの最終更新日時を確認できます

おわりに

裏ワザってワクワクしますね!

5
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
5
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?