0
0

Amazon Redshiftにおいて外部テーブルのカラムにコメントを付与したい

Posted at

背景

Amazon Redshift において、テーブルやカラムにコメントを設定することが可能です。

案件で Glue Data Catalog を利用するのですが、こちらにもカラムごとにコメントを設定する機能がありますね。
そこで、Redshiftでテーブル登録する際にDDLでまとめてコメント登録できるといいなと思っての検証です (まぁできないんですけどね)。

Redshiftにおけるコメント可否まとめ

そもそもテーブルやViewの種類によってコメントできるものとできないものがあります。
結果としては下記のようになりました。

テーブルに対するコメント 列に対するコメント
実テーブル
実テーブルのView
外部テーブル × ×
外部テーブルのView ×

Glue Data Catalog に登録されるテーブルはRedshiftにとって外部テーブルとなるわけですが、どうやらRedshiftから直接外部テーブルにコメントを付与することはできないようです。

例外として、外部テーブルのViewに対してはコメントを付けることが可能です。
外部テーブルのViewを作成する際にはwith no schema binding オプションが必要となります。

ただし、実テーブルでは列ごとにもコメントできるのに対して、外部テーブルのViewでは不可となります。

一応、AWSサポートにも問い合わせてみましたが、

大変恐縮ではございますが、現時点では、Redshift で外部テーブルを参照したビューの列に対してコメントを作成することはできかねます。なお、外部テーブルを参照したビューの列のみならず、外部テーブルに対してもコメントが作成できないことも確認いたしました。

とのことでした (2023年11月時点)。

外部テーブルにコメント付与した際の挙動

外部テーブルの場合

COMMENT ON TABLE ext_test.test IS 'コメントのテスト';

→ ERROR: Operation not supported on external tables

外部テーブルの列の場合

COMMENT ON COLUMN ext_test.test.test_id IS 'コメントのテスト';

→ ERROR: Operation not supported on external tables

外部テーブルのViewの場合

create or replace view comment_test as select * from ext_test.test
with no schema binding;
COMMENT ON VIEW comment_test IS 'コメントのテスト';

→ COMMENT executed successfully

外部テーブルのViewの列の場合

COMMENT ON COLUMN comment_test.test_id IS 'コメントのテスト';

→ ERROR: column "test_id" of relation "comment_test" does not exist

外部テーブルのViewの列の時だけエラー内容が異なるのは少々気になりますが、できないことに変わりはないようですね (省略していますが実テーブルに対するViewの場合は同じクエリで成功します)。
Data Catalog と Redshift のコメントが紐づいたら、少し作業が楽になる、かも?

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