Athena - 有没有办法为特定的文件名格式创建表格?

时间:2017-10-28 07:10:56

标签: amazon-s3 amazon-athena

我使用Athena查询S3上分区的多个文件中的数据。我创建了一个

CREATE EXTERNAL TABLE IF NOT EXISTS testing_table (
     EventTime string,
     IpAddress string,
     Publisher string,
     Segmentname string,
     PlayDuration double,
     cost double ) PARTITIONED BY (
     year string,
     month string,
     day string ) ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n' LOCATION 's3://campaigns/testing/'; 

在我的位置,可能有多个文件名不同的文件,例如:" campaign_au_click.csv"," campaign_au_impression.csv"。这些文件可能有不同的结构。

上表中的任何方式只能从点击文件中获取数据。

由于

2 个答案:

答案 0 :(得分:2)

最好的办法是将它们分成不同的文件夹。像Hive一样,Athena在文件夹级别上工作 - 文件夹中的任何和所有文件都将被视为相同的模式。

答案 1 :(得分:1)

第一个选项应该是将这些文件放在不同的文件夹中。但考虑到我们现在有这种情况,我们想查询表格中的特定文件。有一个工作。

您只能使用根文件夹创建表。但是在查询时你可以在文件名上有一个WHERE子句。文件名的列名由" $ path"访问。 (包括引号)。

例如,您可以查询

SELECT .....
From .....
WHERE
.....
AND
"$path" like "%_click.csv"

注意:提供的where子句只是一个例子。你可以探索regexp_like而不是像。