2017-10-28 11 views
0

私はAthenaを使用して、S3でパーティション化された複数のファイルからデータを照会しています。 「campaign_au_click.csv」、「campaign_au_impression.csv」:私は私の場所ではアテナ - 特定のファイル名形式を指すテーブルを作成する方法はありますか?

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/'; 

を作成するなど、別のファイル名を持つ複数のファイルを有していてもよいです。これらのファイルは異なる構造を持つことがあります。

私の上記テーブルがデータを取得する方法は、からのファイルをクリックするだけです。

ありがとうございました

答えて

2

あなたの最善の策は、それらを別のフォルダに分割することです。 HiveのようなAthenaは、フォルダレベルで動作します。フォルダ内のすべてのファイルは、同じスキーマとして取り込まれます。

0

最初のオプションは、これらのファイルを別のフォルダに入れることです。しかし、今の状況を考えれば、特定のファイルのテーブルを照会する必要があります。回避策があります。

テーブルはルートフォルダのみで作成します。しかし、クエリを実行すると、filenameにWHERE句を付けることができます。 filenameの列名は "$ path"(引用符を含む)によってアクセスされます。

たとえば、クエリ

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

注意することができます:句が提供するザ・は一例です。あなたはlikeの代わりにregexp_likeを探索することができます。

関連する問題