web-dev-qa-db-ja.com

Athenaからデータ(テーブルの行)を削除できますか?

S3に保存されているデータをAthenaクエリで削除することはできますか?いくつかのテーブルから削除する必要のある行がいくつかあります(それらはS3の個別のバケットを指しています)。

Athenaユーザーガイドでそれを行う方法を見つけることができませんでした: https://docs.aws.Amazon.com/athena/latest/ug/athena-ug.pdf およびDELETE FROMはサポートされていませんが、S3でファイルを見つけて削除するよりも簡単な方法があるかどうか疑問に思っています。

6

Athenaを利用して、削除するすべてのファイルを見つけ、それらを個別に削除できます。特別な変数「$ path」があります。

Select "$path" from <table> where <condition to get row of files to delete>

これを自動化するには、Athenaの結果にイテレーターを設定し、ファイル名を取得してS3から削除します。

13
Dhaval

ダヴァルの答えに付け加えたいと思います。

削除したい行を含むファイルのパスを見つけることができ、ファイル全体を削除する代わりに、Json形式であると想定しているS3ファイルから行を削除することができます。

プロセスは、それらの行を持つ特定のファイルをダウンロードし、そのファイルから行を削除して、同じファイルをS3にアップロードすることです。

これは、元のファイルを変更されたデータで置き換えます(あなたの場合、削除された行はありません)。アップロード後、Athenaはデータを再度変換し、削除された行は表示されません。

1
the_minimalist

また、更新するファイルが見つかったら、削除する行をフィルター処理し、CTASを使用して新しいファイルを作成できることを追加します。 https://docs.aws.Amazon.com/athena/ latest/ug/ctas.html

後で、古いファイルをCTASで作成された新しいファイルに置き換えることができます。それが最も簡単な方法だと思います

1
Ori N