ALTER PIPE¶
既存のパイプオブジェクトに対するプロパティの制限されたセットを変更します。次の操作もサポートします。
パイプの一時停止。
パイプの更新(つまり、ターゲットテーブルにロードするために、指定されたステージングデータファイルをSnowpipeのインジェストキューにコピー)。
パイプのコメントの追加/上書き/削除。
パイプのタグの設定/設定解除。
- こちらもご参照ください。
構文¶
ALTER PIPE [ IF EXISTS ] <name> SET { [ objectProperties ]
[ COMMENT = '<string_literal>' ] }
ALTER PIPE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER PIPE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER PIPE [ IF EXISTS ] <name> UNSET { <property_name> | COMMENT } [ , ... ]
ALTER PIPE [ IF EXISTS ] <name> REFRESH { [ PREFIX = '<path>' ] [ MODIFIED_AFTER = <start_time> ] }
条件:
objectProperties ::= PIPE_EXECUTION_PAUSED = TRUE | FALSE
パラメーター¶
name
変更するパイプの識別子を指定します。識別子にスペースまたは特殊文字が含まれる場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
SET ...
パイプに設定する1つ(または複数)のプロパティを指定します(空白、カンマ、または改行で区切られます):
ERROR_INTEGRATION = 'integration_name'
エラー通知をクラウドメッセージングサービスに送信するようにSnowpipeを設定する場合にのみ必要です。 メッセージングサービスとの通信に使用される通知統合の名前を指定します。詳細については、 Snowpipeのエラー通知 をご参照ください。
PIPE_EXECUTION_PAUSED = TRUE | FALSE
一般的にパイプの所有権を譲渡する準備として、実行中のパイプを一時停止するかどうかを指定します。
TRUE
は、パイプを一時停止します。 SYSTEM$PIPE_STATUS によって報告されたexecutionState
は、PAUSED
です。パイプの所有者は、一時停止したパイプに引き続きファイルを送信できます。ただし、パイプが再開されるまでファイルは処理されません。FALSE
により、パイプを再開します。 SYSTEM$PIPE_STATUS によって報告されたexecutionState
は、RUNNING
です。注釈
次のシナリオのいずれかにおいては、 SYSTEM$PIPE_FORCE_RESUME 関数を呼び出してパイプを 強制的に 再開する必要があります。
パイプの所有権を別のロールに譲渡する。この要件により、新しい所有者は SYSTEM$PIPE_STATUS 関数を呼び出してパイプステータスを評価し、ロードを待機しているファイルの数を判断できます。
データロードをトリガーするためにクラウドメッセージングを利用するパイプオブジェクト(つまり、パイプ定義が
AUTO_INGEST = TRUE
のもの)が古くなることを許可している。パイプで受信されたイベントメッセージの保持期間制限(デフォルトでは14日)より長く一時停止された場合、パイプは古くなっていると見なされます。
デフォルト:
FALSE
(デフォルトではパイプが実行されています)
TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]
タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 オブジェクトおよび列のタグクォータ をご参照ください。
COMMENT = 'string'
パイプのコメントを追加するか、既存のコメントを上書きします。
UNSET ...
パイプの設定を解除する1つ(または複数)のプロパティを指定します。これにより、デフォルトにリセットされます。
PIPE_EXECUTION_PAUSED
TAG tag_name [ , tag_name ... ]
COMMENT
単一の ALTER ステートメントで複数のプロパティをリセットできます。ただし、各プロパティはカンマで区切る 必要があります。プロパティをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。
REFRESH
ステージングされたデータファイルのセットをSnowpipeの取り込みキューにコピーして、ターゲットテーブルにロードします。この句はオプションのパスを受け入れ、指定された開始時間に基づいてロードするファイルのリストをさらにフィルタリングできます。
注釈
この SQL コマンドでは、過去7日以内にステージングされたデータファイルのみをロードできます。
この SQL コマンドは、パイプとターゲットテーブルの両方のロード履歴をチェックします。その結果、コマンドは、次のいずれかを使用してロードされて いない ファイルのみをキューに入れます。
ファイルがロードされた後にパイプ所有者がパイプを再作成しなかった場合は、同じパイプ。
COPY INTO <テーブル> ステートメント。
重要
REFRESH 機能は、Snowpipeがファイルのサブセットのロードに失敗した場合の特定の問題を解決するための短期使用を目的としており、通常の使用を目的とするものではありません。
PREFIX = 'path'
パイプ定義のステージ参照に追加されるパス(または プレフィックス)。パスは、ロードするファイルのセットを制限します。指定されたパスで始まるファイルのみがデータロードに含まれます。
たとえば、パイプ定義が
@mystage/path1/
を参照するとします。path
の値がd1/
の場合、 ALTER PIPE ステートメントは、/path1/d1/
パスをともなう@mystage
ステージにあるファイルへのロードを制限します。詳細については、例をご参照ください。パスは一重引用符で囲む必要があることに注意してください。
MODIFIED_AFTER = 'start_time'
LAST_MODIFIED 日付(つまり、ファイルがステージングされた日付)に基づいてSnowpipe取り込みキューにコピーする、最も古いデータファイルのタイムスタンプ(ISO-8601形式)。
デフォルトの最大許容値は7日間です。
使用上の注意¶
パイプのプロパティを設定または設定解除できるのは、パイプの所有者(つまり、パイプの OWNERSHIP 権限を持つロール)のみです。
次の最小権限を持つ非所有者のロールは、パイプを更新できます(ALTER PIPE ... REFRESH ...を使用)。
権限
オブジェクト
メモ
OPERATE
パイプ
USAGE
パイプ定義のステージ
外部ステージのみ
READ
パイプ定義のステージ
内部ステージのみ
SELECT, INSERT
パイプ定義にあるテーブル
パイプに対する OPERATE 権限を持つ非所有者のロールは、パイプを一時停止または再開できます(ALTER PIPE ... SET PIPE_EXECUTION_PAUSED = TRUE | FALSE を使用)。
スキーマオブジェクトでの SQL 操作には、オブジェクトを含むデータベースとスキーマに対する USAGE 権限も必要です。
現在、ALTER PIPE ステートメントを使用して、次のパイププロパティを変更することはできません。
COPY INTO <テーブル> ステートメント
AWS_SNS_TOPIC
パラメーターINTEGRATION
パラメーター
代わりに、 CREATE OR REPLACE PIPE ステートメントを使用して、パイプを再作成してください。
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
mypipe
パイプを一時停止します。
alter pipe mypipe SET PIPE_EXECUTION_PAUSED = true;
パイプ mypipe
のコメントを追加または変更します。
alter pipe mypipe SET COMMENT = "Pipe for North American sales data";
パイプのリフレッシュ¶
例のセットアップ:
CREATE PIPE mypipe AS COPY INTO mytable FROM @mystage/path1/;
mypipe
パイプで定義されているように、データファイルを @mystage/path1/
ステージおよびパスから mytable
テーブルにロードします。
ALTER PIPE mypipe REFRESH;
前の例と同様、パスに d1
を追加して、ロードするファイルのリストをさらに制限します。現在の例では、ステートメントは @mystage/path1/d1/
ステージおよびパスからファイルをロードします。
ALTER PIPE mypipe REFRESH PREFIX='d1/';
前の例と同様、指定されたタイムスタンプの後にステージングされたファイルのみをロードします。
ALTER PIPE mypipe REFRESH PREFIX='d1/' MODIFIED_AFTER='2018-07-30T13:56:46-07:00';