2017-05-16 4 views
6

AWS Athenaで外部データテーブルを作成してS3データをクエリしますが、ロケーションパスに1000以上のファイルがあるため、レコードの対応するファイル名がテーブルの列。AWS Athena外部テーブルの列として入力ファイル名を取得する方法

選択file_nameに、私はAWSアテナプレストまたはこれを達成するために、他の方法で同等のINPUT__FILE__NAME(ハイブ)を知っておく必要がありfile_nameは=「test20170516」要するに

をテーブルからCOL1。

答えて

13

これは$ path疑似列で実行できます。

select "$path" from table 
+0

多くのありがとうございました。私がしばらく検索していたので、これに関連するリンクを教えてください。何も見つかりませんでした。 – Rajeev

+1

私は次のgithubの問題でそれがしばらく前に見つかった。 https://github.com/prestodb/presto/issues/5486 –

+2

ありがとう。あなたが気づいているような他の擬似列はありますか? – Rajeev

5

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

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

あなたは拡張子のないファイル名が必要な場合は、あなたが行うことができます:ここで

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

がドキュメントであるあなたは、このような何かを行うことができ"$path"にアテナにそれを使用する

on Presto Regular Expression Functions

+0

split_part( "$ PATH"、 '/'、7)を使用してファイル名を取得していましたが、もっと一般的です。ありがとうございます。 – Rajeev

+0

これは素晴らしいです。ありがとうございました! – PubNub

関連する問題