web-dev-qa-db-ja.com

AmazonAthenaで注文したパーティションを表示する

私はこのクエリを持っています:

SHOW PARTITIONS tablename;

結果は次のとおりです。

dt=2018-01-12
dt=2018-01-20
dt=2018-05-21
dt=2018-04-07
dt=2018-01-03

これにより、テーブルごとのパーティションのリストが表示されます。このテーブルのパーティションフィールドは、日付列であるdtです。注文されたパーティションを見たいのですが。

ドキュメントにはその方法が説明されていません: https://docs.aws.Amazon.com/athena/latest/ug/show-partitions.html

私は次の方法で注文を追加しようとしました:

SHOW PARTITIONS tablename order by dt;

しかし、それは与えます:

AmazonAthena;ステータスコード:400;エラーコード:InvalidRequestException;

6
jack

同じ問題に直面し、information_schemaデータベースで解決策を見つけました。テーブルにパーティション列が1つしかない場合は、次のクエリを使用して順序付きリストを取得します。

SELECT partition_value
FROM information_schema.__internal_partitions__
WHERE table_schema = '<DB_NAME>'
        AND table_name = '<TABLE_NAME>'
ORDER BY partition_value
5
Mariusz

From あなたのコメント 特定のパーティションが存在するかどうかを判断する方法として、パーティションを並べ替えようとしているようです。この目的のために、Athenaにクエリを実行する代わりにGlueAPIを使用することをお勧めします。 aws glue get-partition helpを実行するか、お好みのSDKのドキュメントでその動作を確認してください。

テーブルのすべてのパーティションを一覧表示するバリアントもあります。aws glue get-partitions helpを実行して詳細を確認してください。アルファベット順にパーティションを返すとは思いませんが、フィルタリング用の演算子があります。

2
Theo