雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

Athenaで各レコードのソースファイルを特定する

これはなに?

Athenaでのクエリ結果のソースファイルを特定する方法。Athenaのトラブルシューティングをする際のソースファイルがおかしいのか、テーブルがおかしいのか切り分けする必要があるので、その際に利用できます。

やること

以下のAthenaの検索結果の各レコードのソースファイルを特定します。 f:id:ykoomaru:20210306083001p:plain

S3に配置されているソースファイルの情報は以下のような感じです。 f:id:ykoomaru:20210306083511p:plain

ソースファイルの特定

SELECT句に、 $path を指定すると、ソースファイル名を取得することでできます。

①ファイル一覧取得

テーブルの元となっているソースファイル一覧を取得します。

SELECT distinct("$path") FROM <table_name>;

f:id:ykoomaru:20210306083310p:plain

②各レコードのソースファイル名を取得

通常のSELECT句と”path”を同時に指定すると、各レコードのソースファイルを取得することができます。

SELECT *,"$path" FROM <table_name>;

f:id:ykoomaru:20210306084649p:plain

③特定のソースファイルのレコードのみ取得する

WHERE句でファイル名を指定することで特定のソースファイルのレコードのみ取得できます。

SELECT *,"$path" FROM <table_name> WHERE "$path" like '<ファイル名>';

f:id:ykoomaru:20210306085332p:plain

参考

Athena テーブル行のソースファイルを見つける