Redshift - 新規/更新行トリガー
新規/更新行
このトリガーは、選択したテーブルまたはビューに挿入/更新された行を取得します。 各行は個別のジョブとして処理されます。 新規/更新された行がないか、ポーリング間隔ごとに1回チェックします。
新規/更新行トリガー
| 入力フィールド | 説明 |
|---|---|
| テーブル | 行を処理するテーブル/ビューを選択します。 |
| 一意キー | 行を一意に識別する一意キー列を選択します。 この列のリストは、選択したテーブル/ビューから生成されます。 |
| ソート列 | 更新された行を識別する列を選択します。 この列リストは、指定されたカスタムSQLから生成されます。 |
| WHERE条件 | 行をフィルターするための任意のWHERE条件を指定します。 |
新規/更新行のバッチ
このトリガーは、選択したテーブルまたはビューに挿入/更新された行を取得します。 これらの行は、各ジョブで行のバッチとして処理されます。 このバッチサイズは、トリガー入力で設定できます。 新規/更新された行がないか、ポーリング間隔ごとに1回チェックします。
新規/更新行バッチトリガー
| 入力フィールド | 説明 |
|---|---|
| テーブル | まず、行の処理元となるテーブル/ビューを選択します。 |
| 一意キー | 行を一意に識別する一意キー列を選択します。 この列のリストは、選択したテーブル/ビューから生成されます。 |
| ソート列 | 更新された行を識別する列を選択します。 この列リストは、指定されたカスタムSQLから生成されます。 |
| バッチサイズ | このレシピの個別のジョブごとに処理するバッチサイズを設定します。 |
| WHERE条件 | 行をフィルターするための任意のWHERE条件を指定します。 |
カスタムSQL経由の新規/更新行バッチ
このトリガーは、カスタムSQLに一致する行が挿入/更新された場合にその行を取得します。 これらの行は、各ジョブで行のバッチとして処理されます。 このバッチサイズは、トリガー入力で設定できます。 各ポーリング間隔で新しい行をチェックします。
カスタムSQL経由の新規/更新行バッチトリガー
| 入力フィールド | 説明 |
|---|---|
| SQL | 新しい行を取得するために各ポーリング間隔で実行されるカスタムSQLクエリ。 |
| 一意キー | 行を一意に識別する一意キー列を選択します。 この列リストは、指定されたカスタムSQLから生成されます。 |
| ソート列 | 更新された行を識別する列を選択します。 この列リストは、指定されたカスタムSQLから生成されます。 |
| バッチサイズ | このレシピの個々のジョブで処理するバッチサイズを設定します。 デフォルトは100です。 |
入力
テーブル
行の処理元となるテーブル/ビューを選択します。 これは、選択リストからテーブルを選択するか、入力フィールドをテキストモードに切り替えて完全なテーブル名を入力することで実行できます。
一意キー
この選択した列の値は、選択したテーブル内の行の重複を排除するために使用されます。
そのため、選択した列の値がテーブル内で重複しないようにしてください。 通常、この列はテーブルの主キーです(例:ID)。 増分可能で、ソート可能である必要があります。 パフォーマンスを向上させるために、この列にインデックスを付けることもできます。
キー列の利用状況が定義されている列のみ使用できます。 この要件を満たす列を確認するには、このSQLクエリを実行します。
SELECT kc.column_name
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kc
ON kc.table_name = tc.table_name AND
kc.table_schema = tc.table_schema AND
kc.constraint_name = tc.constraint_name
WHERE tc.table_schema = 'schema_name' AND tc.table_name = 'table_name'ソート列
ソート列は、テーブル内の行が更新されるたびに更新される列です。 通常、これはtimestamp列です。
行が更新されると、一意キーの値は同じままです。 ただし、最終更新時刻を反映するようにタイムスタンプが更新されている必要があります。 このロジックに従い、Workatoは、この列の値を、選択した一意キー列の値とともに追跡します。 Sort column値の変更が検出されると、更新行イベントが記録され、トリガーによって処理されます。
timestampおよびtimestamptz列タイプのみ使用できます。 この要件を満たす列を確認するには、このSQLクエリを実行します。
SELECT column_name
FROM svv_columns
WHERE
table_schema = 'schema_name' AND
table_name = 'table_name' AND
date_type like 'timestamp%'バッチサイズ
各ジョブで返す行のバッチサイズ。 これは1から最大バッチサイズまでの任意の数値にできます。 最大バッチサイズは100で、デフォルトは100です。
任意のポーリングで、行数が設定されたバッチサイズより少ない場合、このトリガーはすべての行をより小さいバッチとして配信します。
WHERE条件
この条件は、1つ以上の列の値に基づいて行をフィルタリングするために使用されます。
status = 'closed' and priority > 3選択したテーブルのすべての行を処理するには、空白のままにします。
サブクエリを含む複雑なWHERE条件も使用できます。 詳細については、WHERE条件ガイドを参照してください。
SQL
行を選択するために実行するSQLを指定します。 ここで指定したSQLは、出力データツリーの生成に使用されます。 これを行うために、SQLは指定時に1回実行されます。 ここでデータピルをマッピングして、動的に変化するSQLステートメントを実行できます。 データピルは引用符('')で囲むことを忘れないでください。
SQLでTOPのような制限句を使用しないでください。 これは、クエリで返される行数の制限が、バッチサイズ入力フィールドで定義された値に基づいているためです。 独自のlimit句を追加すると、アクションは失敗します。
Last updated: