web-dev-qa-db-ja.com

AWS Athena外部テーブルの列として入力ファイル名を取得する方法

AWS AthenaでS3データをクエリするために作成された外部テーブルがありますが、場所のパスには1000以上のファイルがあります。したがって、レコードの対応するファイル名をテーブルの列として表示する必要があります。

select file_name , col1 from table where file_name = "test20170516"

要するに、AWS Athena Prestoで同等のINPUT__FILE__NAME(Hive)または同じことを達成するための他の方法を知る必要があります。

24
Rajeev

これを行うには、$ path疑似列を使用します。

select "$path" from table
55
jens walter

ファイル名だけが必要な場合は、regeexp_extract()で抽出できます。

"$path"のAthenaで使用するには、次のようなことができます。

SELECT regexp_extract("$path", '[^/]+$') AS filename from table;

拡張子のないファイル名が必要な場合は、次を実行できます。

SELECT regexp_extract("$path", '[ \w-]+?(?=\.)') AS filename_without_extension from table;

Presto Regular Expression Functions に関するドキュメントはこちら

15
campeterson