Amazon Redshiftターゲット
Amazon Redshiftオブジェクトを、同期タスク、マッピング、またはマッピングタスクでの単一ターゲットとして使用できます。入力ソースに基づいてAmazon Redshiftターゲットを作成することもできます。Amazon Redshiftターゲットオブジェクトを使用する場合は、標準オブジェクトをプライマリソースとして選択できます。
Amazon Redshiftターゲットからデータを挿入、更新、更新/挿入、および削除することができます。バッチ内にエラーが発生しない場合、更新または挿入タスクによってバッチ全体がAmazon Redshiftターゲットに書き込まれます。バッチ内にエラーが発生した場合は、Secure Agentによってバッチ全体がエラー行ファイルに書き込まれます。
詳細ターゲットプロパティを設定するとき、Amazon Redshift固有のプロパティを設定します。データを暗号化したり、クエリ効率向上のためにデータベーステーブルの統計メタデータを更新したり、Amazon S3バケットのフラットファイルからAmazon Redshiftにデータをロードしたり、ディスク領域の回復とテーブル内の行のソートのためにテーブルのクリーンアップを使用したりできます。
マッピングにフラットファイルまたはAmazon Redshiftターゲットが含まれる場合、既存のターゲットを使用するか、実行時に新しいターゲットを作成するかを選択できます。Amazon Redshiftターゲットオブジェクト名は小文字で指定する必要があります。
注: ターゲットテーブルの配布キーカラムにNULL値が含まれていて、同じターゲットテーブルの更新/挿入操作を使用してタスクを設定すると、タスクにより重複する行が作成される場合があります。重複する行の作成を防ぐには、次のいずれかのタスクを実行する必要があります。
- •データをロードするときに、NULL値をNULL以外の値に置き換えます。
- •配布キーカラム内にNULL値を想定する場合は、カラムを配布キーとして設定しないようにします。
- •データをロードするときに、ターゲットテーブルから配布キーカラムを一時的に削除します。Pre-SQLとPost-SQLのプロパティを使用して、ターゲットテーブルの配布キーカラムを削除してから、追加することができます。
Amazon RedshiftターゲットのAmazon Redshiftステージングディレクトリ
エージェントは、ターゲットプロパティで指定したディレクトリにステージングファイルを作成します。同期タスク、マッピング、および、マッピングタスクは、Amazon Redshiftにデータを書き込む前にステージングディレクトリにデータをステージングします。ステージングファイルを保持または削除するタスクを設定できます。
Hosted Agentのディレクトリは設定できません。Hosted Agentは、一時的な場所にデータをステージングするディレクトリを作成し、タスクが完了するときにその一時的な場所からそのステージングファイルを削除します。
タスクパフォーマンスを向上させるには、ステージングファイルの圧縮を有効にします。処理するデータのボリュームに最適なディスク領域を使用して、ステージングディレクトリを指定します。各Secure Agentマシンのランタイム環境で使用可能なディレクトリパスを指定します。
アプリケーションは、タスクが実行している時間を基に、ステージングディレクトリにサブディレクトリを作成します。サブディレクトリは次の命名規則を使用します。
<staging directory>/infaRedShiftStaging<MMddHHmmssSSS+xyz>
ターゲットテーブルの分析
クエリのパフォーマンスを最適化するには、ターゲットテーブルを分析するためのタスクを設定できます。ターゲットテーブル分析は、データベーステーブルの統計メタデータを更新します。
[ターゲットテーブルの分析]オプションを使用すると、テーブルからサンプル行を抽出し、サンプルを分析して、列の統計情報を保存できます。Amazon Redshiftは、統計メタデータを使用してクエリプランナーを更新します。クエリプランナーは、統計メタデータを使用して、クエリ効率の向上に最適な計画を作成して選択します。
Copyコマンドを使用して既存のテーブルにデータをロードしたら、[ターゲットテーブルの分析]オプションを実行できます。新しいテーブルにデータをロードした場合、Copyコマンドはデフォルトで分析を実行します。
Amazon Redshiftターゲットのデータ暗号化
データを保護するために、サーバーサイド暗号化またはクライアントサイド暗号化を有効にして、Amazon Redshiftに挿入するデータを暗号化できます。
Amazon Redshiftターゲットでサーバーサイドとクライアントサイドの両方の暗号化を有効にすると、クライアントサイド暗号化がデータのロードに使用されます。
Amazon Redshiftターゲットのサーバーサイド暗号化
.csvファイルをAmazon RedshiftにアップロードするときにAmazon Redshiftでデータを暗号化する場合は、サーバーサイド暗号化を有効にする必要があります。サーバーサイド暗号化を有効にするには、[スケジュール]ページの詳細ターゲットプロパティで、暗号化タイプとしてサーバーサイド暗号化を選択します。
サーバーサイド暗号化用に接続プロパティでAWS Key Management Service(AWS KMS)によって生成された顧客マスタキーIDを設定できます。IAM認証と、顧客マスタキーを使用したサーバーサイド暗号化を使用する場合は、IAM EC2ロールとIAM Redshiftロールを顧客マスタキーに追加する必要があります。詳細ターゲットプロパティでサーバーサイド暗号化を選択し、接続プロパティで顧客マスタキーIDを指定しない場合、データの暗号化にはAmazon S3が管理する暗号化キーが使用されます。
Amazon Redshiftターゲットのクライアントサイド暗号化
クライアントサイド暗号化は、データをAmazon Redshiftサーバーに送信する前にデータを暗号化する方法です。
Amazon Redshiftターゲットに対してクライアントサイド暗号化を有効にすると、Secure Agentはソースからデータを取得し、そのデータをステージングディレクトリに書き込み、そのデータを暗号化してからAmazon S3バケットに書き込みます。次に、Amazon S3バケットはAmazon Redshiftにデータを書き込みます。
クライアントサイド暗号化を有効にするには、接続プロパティでマスタ対称キーを指定し、詳細ターゲットプロパティで[S3クライアントサイドの暗号化の有効化]オプションを選択する必要があります。
Secure Agentは、マスタ対称キーを使用してデータを暗号化します。マスタ対称キーはBase64形式の256ビットAES暗号化キーです。Amazon Redshiftコネクタはマスタ対称キーを使用してAmazon S3サーバーにデータをアップロードし、[暗号化]オプションを設定したcopyコマンドと追加のセキュリティ用のプライベート暗号化キーを使用して、Amazon Redshiftにデータをロードします。クライアントサイド暗号化を有効にするには、次のタスクを実行します。
ステージングファイルの保持
がターゲットにデータを書き込むと、Amazon S3でステージングファイルを保持できます。ファイルを保持すると、Amazon S3で組織データのデータレイクを作成できます。保存したファイルはデータのバックアップとしても使用できます。
ターゲット接続を作成する場合、ステージングファイルの保存用にファイルプレフィックスまたはディレクトリプレフィックスを設定できます。プレフィックスを指定すると、は、ターゲット接続で指定したAmazon S3の場所にあるディレクトリ内でファイルを作成します。[S3でステージングファイルを保持するためのプレフィックス]プロパティに次のいずれかのオプションを設定します。
- •ディレクトリプレフィックスおよびファイルプレフィックスを指定します。例えば、backup_dir/backup_fileです。は次のディレクトリとファイルを作成します。
- - backup_dir_<year>_<month>_<date>_<timestamp_inLong>
- - backup_file.batch_<batch_number>.csv.<file_number>.<encryption_if_applicable>
- •ファイルプレフィックスを指定します。例えば、backup_fileです。は次のディレクトリとファイルを作成します。
- •<year>_<month>_<date>_<timestamp_inLong><3 digit of random number>00<ProcessID><PartitionId>
- - backup_file.batch_<batch_number>.csv.<file_number>.<encryption_if_applicable>
- •プレフィックスを指定しないでください。はステージングファイルを保存しません。
Copyコマンド
Copyコマンドを使用すると、テーブルにデータを追加できます。Copyコマンドはセキュアな接続を使用して、ソースからAmazon Redshiftにデータをロードします。
Copyコマンドオプションを[CopyOptionsプロパティファイル]フィールドで直接指定できます。オプションを大文字で入力し、オプションの区切りには、を使用します。Copyコマンドには次のオプションと既定値があります。
プロパティファイルにはCopyコマンドオプションが含まれます。[CopyOptionsプロパティファイル]フィールドにプロパティファイルパスを追加します。以下に例を示します。
C:\Temp\Redshift\copyoptions.txt
印刷できない文字の8進数の表現をDELIMITERおよびQUOTEとして使用することを推奨します。
Copyコマンドのオプション
Copyコマンドオプションは、Amazon S3からデータを読み取り、特定の形式でAmazon Redshiftにデータを書き込みます。テーブル内のデータに圧縮を適用したり、特定の文字でデータを区切ることができます。
Copyコマンドにオプションを追加するには、[CopyOptionsプロパティファイル]オプションを使用します。以下のオプションを設定できます。
- DELIMITER
- 入力ファイル内のフィールドを区切るための単一のASCII文字。パイプ(|)、チルダ(~)、タブ(\t)などの文字を使用できます。区切り文字をデータに含めることはできません。デフォルトは\036で、印刷できない8進数のレコード区切り文字です。
- ACCEPTINVCHARS
- データに無効なUTF-8文字が含まれていても、VARCHAR列にデータをロードします。ACCEPTINCHARSを指定すると、は、無効なUTF-8文字をACCEPTINVCHARSで指定された文字からなる同じ長さの文字に置き換えます。ACCEPTINVCHARSで'|'を指定した場合、は3バイトのUTF-8文字を'|||'に置き換えます。
ACCEPTINVCHARSを指定しない場合、COPYコマンドは、無効なUTF-8文字が検出されるとエラーを返します。VARCHAR列でACCEPTINVCHARSオプションを使用できます。デフォルト疑問符(?)です。
- QUOTE
- カンマ区切り値で使用する引用符文字を指定します。デフォルトは\037で、印刷できない8進数のユニット区切り文字です。
- COMPUPDATE
- 現在の圧縮エンコーディングをオーバーライドし、空のテーブルに圧縮を適用します。テーブル内の行が10万を超える場合は挿入操作でCOMPUPDATEオプションを使用します。COMPUPDATEの動作は設定方法に応じて異なります。
- - COMPUPDATEを指定しない場合、ターゲットテーブルが空で、テーブル内のすべての列でRAWまたはエンコーディングが指定されないと、COPYコマンドは圧縮を適用します。
- - COMPUPDATEを[オン]に指定した場合、ターゲットテーブルが空で、テーブル内の列でRAW以外のエンコーディングが指定されると、COPYコマンドは既存のエンコーディングを置き換えます。
- - COMPUPDATEを[オフ]に指定した場合、COPYコマンドは圧縮を適用しません。
デフォルトはOFFです。
- AWS_IAM_ROLE
- Amazon EC2システムにインストールされたでを実行するAmazon Redshiftロールリソース名(ARN)を次の形式で指定します。AWS_IAM_ROLE=arn:aws:iam::<account ID>:role/<role-name>
例: arn:aws:iam::123123456789:role/redshift_write
- STATUPDATE
オプション。成功したCOPYコマンドの終了時のオプティマイザ統計の計算とリフレッシュを制御します。
STATUPDATEの動作は設定方法に応じて異なります。
- - STATUPDATEにONを指定すると、テーブルが空かどうかにかかわらず、COPYコマンドによって統計が更新されます。COPYコマンドが機能するようにするには、現在のユーザーがテーブル所有者またはスーパーユーザーであることを確認してください。
- - STATUPDATEにOFFを指定すると、COPYコマンドによって統計が更新されません。
- - STATUPDATEを指定しない場合、COPYコマンドには挿入権限が必要です。
デフォルトはOFFです。
フィールドマッピング
フィールドマッピングページにプライマリキーフィールドのキーアイコンが表示されます。フィールドマッピングを設定するときに、すべてのキーフィールドと[非NULL]フィールドをマッピングして、データをAmazon Redshiftターゲットに正常に挿入または更新/挿入します。Amazon Redshiftは、[非NULL]フィールドを適用しても、キー制約を適用しません。
フィールドマッピングページにプライマリキーフィールドのキーアイコンが表示されます。その他のAmazon Redshiftキータイプはマークされません。更新操作にキーのないフィールドをマッピングする必要があります。フィールドマッピングにAmazon RedshiftのIDフィールドを使用する場合、使用可能なIDをすべてマッピングするか、何もマッピングしません。IDフィールドには、Amazon Redshiftで自動的に生成されるデータが含まれます。
IDカラムがキーに含まれない場合は、フィールドマップにIDカラムをマッピングできません。IDカラムがキーに含まれる場合は、フィールドマップにIDカラムをマッピングする必要があります。ただし、IDカラムの値をソースから設定することはできません。
テーブルのクリーンアップ
テーブルのクリーンアップを使用してディスク領域を回復し、指定したテーブルまたはデータベース内のすべてのテーブルの行をソートします。
削除やロードなどの一括操作を実行した後、または差分更新を実行した後、データベーステーブルをクリーンアップしてディスク領域を回復し、Amazon Redshiftのクエリパフォーマンスを向上する必要があります。行の削除や更新を実行しても、Amazon Redshiftは空き領域を再利用しません。
データベースまたはテーブルをクリーンアップすると、多くの場合、クエリパフォーマンスの一貫性を維持できます。データベース全体またはデータベース内の個々のテーブルのディスク領域を回復できます。データベースまたは指定されたデータベース管理スケジュールで最小限の操作を求める場合は、クリーンアップを実行する必要があります。クリーンアップを長く実行すると、データベース操作に影響を与える場合があります。大規模な未ソートの領域では、クリーンアップが長くなることが多いため、クリーンアップを実行します。
詳細ターゲットプロパティを設定する場合、テーブルのクリーンアップオプションを有効にできます。次のリカバリオプションを選択できます。
- なし
- 行のソートまたはディスク領域の回復は行わないでください。
- フル
- 指定したテーブルまたはデータベース内のすべてのテーブルをソートし、前回の更新操作や削除操作で削除のマークが付けられた行によって使用されたディスク領域を回復します。
- ソートのみ
- 削除行から解放された領域を回復せずに、指定したテーブルまたはデータベース内のすべてのテーブルをソートします。
- 削除のみ
- 前回の更新操作や削除操作で削除のマークが付けられた行によって使用されたディスク領域を回復し、テーブルを圧縮して使用領域を解放します。
- 再インデックス
インターリーブソートキーカラムで値の分布を分析し、テーブルのクリーンアップ操作全体を設定してパフォーマンスを改善します。