0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Athena】Managed Query Results 有効時に CTAS が失敗する理由と回避策

Posted at

突然のエラー

Athena でテーブルを作成しようとした際、次のエラーが発生しました。

This query is not supported for workgroups with Managed Query Results enabled.

「Managed Query Results?何それ...?」
となってしまったので、このエラーの解決方法について調査しました。

エラーが出た時の状況

エラー発生時の状況は、次のような CTAS ( CREATE TABLE AS SELECT ) クエリを実行した時でした。

CREATE TABLE sample_parquet
WITH (
  format = 'PARQUET'
) AS
SELECT * FROM db.sample_raw;

解決方法

Managed Query Results が有効なワークグループでは、自分で管理しているS3バケットをテーブルの出力先として明示的に指定する必要があります。これだけでエラーは解消します!

CREATE TABLE sample_parquet
WITH (
  format = 'PARQUET',
  external_location = 's3://your-bucket/athena/sample_parquet/'
) AS
SELECT * FROM db.sample_raw;

「Managed Query Results が有効どうか」ですが、Query editor にある Settings のタブから有効になっているかを確認することが可能です。
Management of query results の設定値が Athena managed storage となっていれば有効化されています。

Query_editor___Athena___ap-northeast-1.png

なぜこのエラーが起きるのか

Managed Query Results」(以下 MQR )とは、2025年6月に発表された Athena の新機能です。
参考 : Amazon Athena が、分析ワークフローを合理化するマネージドクエリ結果をリリース

公式説明によると、MQR は次のような特徴をそなえています。

  • クエリ結果の出力先は AWS が提供する一時ストレージ になる
  • ユーザーは結果出力用のS3バケットを個別に管理する必要がなくなる
  • 不要なデータのクリーンアップが AWS 側で行われるため、管理負荷が軽減される

ここからは推測

MQR で使用されている一時ストレージは、ユーザーのクエリからの直接書き込み権限が付与されていない構造になっていると思われます。

CTAS は、クエリ結果をS3に書き出す操作のため、MQR の一時ストレージに書き込もうとする操作に他なりません。
したがって、This query is not supported for workgroups with Managed Query Results enabled. のエラーが出てしまったと推測されます。

まとめ

  • Managed Query Results はクエリ結果を AWS が管理する一時ストレージに出力する
  • この一時ストレージには CTAS による書き込みの権限は与えられていない
  • CTAS クエリを実行する時は、external_location を明示的に指定する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?