[アップデート] Amazon Redshift の COPY コマンド用の再利用可能なテンプレートを試してみました
クラウド事業本部の石川です。Amazon Redshift で、COPY コマンドのパラメータを再利用可能なテンプレートとして保存・参照できる機能がリリースされました。頻繁に使う COPY 操作のパラメータをテンプレートとして一元管理できるようになり、データ取り込み運用の標準化と保守性の向上が期待できます。
COPY コマンド用の再利用可能なテンプレートとは
Amazon Redshift が COPY コマンド用のテンプレート機能をサポートしました。よく使う COPY パラメータを「テンプレート」というデータベースオブジェクトとして保存しておき、COPY 実行時にそのテンプレートを参照することで、毎回同じパラメータを書き並べる必要がなくなります。
- COPY コマンド用の再利用可能なテンプレートを作成できる
- ファイルタイプやデータソースごとに標準化された設定をテンプレートとしてチーム間で共有できる
- テンプレートを更新すれば、それを参照する以降の COPY 操作に自動的に反映される
- COPY コマンド側でテンプレートと同じパラメータを指定した場合は、コマンド側の値が優先される(オーバーライド可能)
- マニフェストファイルの指定はテンプレートには含められない
COPY コマンド用のテンプレートを試す
テンプレートの作成
CREATE TEMPLATE ステートメントで COPY コマンド用のテンプレートを作成します。テンプレートには、データフォーマット、ファイル圧縮、データ変換、データロード操作に関するパラメータを定義できます。
下記のテンプレート例は、TSV(タブ区切りファイル)のテンプレートの例です。
CREATE TEMPLATE public.tsv_template
FOR COPY
AS
FORMAT AS CSV
DELIMITER '\t'
IGNOREHEADER 1
ENCODING UTF8
TIMEFORMAT 'auto'
DATEFORMAT 'auto'
EMPTYASNULL
BLANKSASNULL
MAXERROR 0;

テンプレートを用いてデータをロードする
USING TEMPLATE 句でテンプレートを参照します。テンプレート内のパラメータが COPY コマンドに適用されます。指定するのは以下の通りです。
- ロード先テーブル: "public"."orders_jp"
- データフォルダ: 's3://<my_bucket>/orders_jp/'
- IAMロール: default
- テンプレート名: public.tsv_template
COPY "public"."orders_jp"
FROM 's3://<my_bucket>/orders_jp/'
IAM_ROLE default
USING TEMPLATE public.tsv_template;

テンプレートのパラメータのオーバーライド
テンプレートを一部だけ変更することも可能です。その場合は、値を追加 もしくは 上書きします。先ほど作成したテンプレートは、TSV(タブ区切りファイル)のテンプレートですが、CSV(カンマ区切りファイル)に変更したい場合は、DELIMITERを変更するだけで済みます。
COPY "public"."orders_jp"
FROM 's3://<my_bucket>/orders_jp/'
DELIMITER ','
IAM_ROLE default
USING TEMPLATE public.tsv_template;
上の例では、COPY コマンドで指定した DELIMITER ',' が使用されます。

テンプレートの更新と削除
テンプレートの更新には ALTER TEMPLATEを使用します。
ALTER TEMPLATE public.tsv_template SET DELIMITER TO ',';
削除には DROP TEMPLATE を使用します。
DROP TEMPLATE public.tsv_template;
必要な権限
COPY コマンドでテンプレートを利用するには、COPY 実行に必要な権限に加えて、以下のいずれかが必要です。
- テンプレートに対する
USAGE権限と、テンプレートが格納されているスキーマに対するUSAGE権限 - スーパーユーザー権限
ベストプラクティス
- 目的が分かるテンプレート命名規則を採用する
GRANT USAGE FOR TEMPLATESで最小権限の原則に基づいたアクセス制御を行うsys_redshift_templateシステムビューでテンプレートの使用状況を追跡する- テンプレートの所有者や変更履歴をドキュメント化する
- 開発環境では寛容なエラー閾値(例:
MAXERROR 1000)、本番環境では厳格な値(例:MAXERROR 0)といった、環境別のテンプレートを用意する
最後に
Amazon Redshift で COPY コマンド用の再利用可能なテンプレートが利用できるようになりました。COPY パラメータをテンプレートとして一元管理することで、データ取り込み操作の標準化、保守性の向上、入力ミスの低減が見込めます。
複数チームで繰り返し COPY 操作を実行している環境で、運用負荷の軽減やパラメータの一貫性確保に課題を感じている方は、テンプレート機能の導入を検討してみてはいかがでしょうか。
合わせて読みたい







