如何将输入文件名作为 AWS Athena 外部表中的列

How to get input file name as column in AWS Athena external tables

我在 AWS Athena 中创建了外部 tables 来查询 S3 数据,但是,位置路径有 1000 多个文件。所以我需要将记录的相应文件名显示为 table.

中的一列
select file_name , col1 from table where file_name = "test20170516"

简而言之,我需要知道 AWS Athena Presto 中的 INPUT__FILE__NAME(hive) 等效项或任何其他实现相同目标的方法。

您可以使用 $path 伪列执行此操作。

select "$path" from table

如果您只需要文件名,可以使用 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

上的文档