2017-02-09 2 views
0

バケットへのパスは、s3のようなものになるように、一般にs3バケットにはいくつかのサブディレクトリがあります。トップレベル関数グループ/より特定のフォルダ/組織テナント会社ID /エンティティID /実際のデータは、s3バケットサブディレクトリに対してアテナテーブルを作成できますか?

私たちは、その/実際のデータレベルのデータに対して、org-tenant-company-id内のデータに対してクエリを行うことができるようにAthenaを探しているので、何らかのものとして渡す必要がありますパラメータ。

または、org-tenant-company-idはパーティションですか?

この構造に対してクエリを行うathenaテーブルを作成することは可能ですか?そしてs3の場所は、テーブル作成ウィザードでは何ですか?私はs3:トップレベルの機能グループ/より特定のフォルダ/でそれを試してみましたが、それが実行されたとき、私はそれが '0 Kbデータの読み取り'のようなものを言ったと思う。

+0

あなたの計画は私にとって実行可能と聞こえます。動作しなかったcreate table文を共有できますか? – James

+0

最初のcreate tableステートメントが機能しているようです。少なくともそれは誤りではなかった。いずれのデータもロードされませんでした。私はもう一度試してみましたが、問題は存在しなかったコラムだったと思います。今はorg-tenant-company-idサブディレクトリに沿って分割したいと思っていますが、それは別の質問でしょう。 – user26270

答えて

1

次のように、パーティションテーブルを作成することができ、パーティション・キーのみ句ではなく、テーブルのフィールドのリストの中で仕切らに定義されている。ここで、テーブルを作成した後

CREATE EXTERNAL TABLE mydb.mytable (
    id int, 
    stuff string, 
    ... 
) 
PARTITIONED BY (
    orgtenantcompanyid string 
) 
LOCATION 's3://mybucket/top-level-function-group/more-specific-folder/'; 

、あなたがして読み込むことができます個々のパーティション:

ALTER TABLE mydb.mytable ADD PARTITION (orgtenantcompanyid='org1') 
LOCATION 's3://mybucket/top-level-function-group/more-specific-folder/org1'; 

結果行がorgtenantcompanyidのようなパーティションのフィールドが含まれています。

+0

ありがとうございます。私はパーティション分割が自動的に行われる必要があると思います。手動でパーティションを維持する必要はありません。それは私たちのサブディレクトリを自動的にパーティションとして認識されるように 'key = value'形式に変更しなければならないと思われます。 – user26270

+0

'MSCK REPAIR TABLE mydb.mytable'を呼び出す必要はありませんか? [シナリオ1:既にデータを分割してハイブ形式でS3に格納しているデータ](http://docs.aws.amazon.com/athena/latest/ug/partitions.html#scenario-1-data-already-partitioned-and- s3-in-hive-format) – James

+0

私は分かりませんが、それ以上のパーティションが作成されたり、それが一度限りのものかどうかを確認しておく必要はありません。 – user26270

関連する問題