2017-10-28 76 views
0

我正在使用Athena从S3上分区的多个文件中查询数据。我创建了一个Athena - 有什么办法可以为特定的文件名格式创建表格指向吗?

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

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

0

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

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

例如,查询可以

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

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

相关问题