Amazon Redshiftコネクタ > 部 II: Amazon Redshift V2コネクタを使用したデータ統合 > Amazon Redshiftソースとターゲット > Amazon Redshift V2ソース
  

Amazon Redshift V2ソース

マッピングのソースとしてAmazon Redshift V2オブジェクトを使用できます。テーブル、ビュー、またはマテリアライズビューをAmazon Redshift V2ソースとして使用できます。
詳細ソースプロパティを設定するとき、Amazon Redshift V2固有のプロパティを設定します。データを暗号化し、Amazon S3にステージングファイルを保持して、Amazon Redshiftでファイルにクエリの結果を安全にアンロードできます。

ステージングの有無にかかわらない、Amazon Redshiftからの読み取り

読み取り操作を設定する場合、S3バケットにステージングデータがあるかどうかに関係なく、Amazon Redshiftソースからデータを読み取るというオプションがあります。
ソーストランスフォーメーションとルックアップトランスフォーメーションで読み取りモードを直接またはステージングに設定できます。詳細モードのマッピングでは直接モードを設定できません。

ステージング読み取りモード

読み取りモードをステージングに設定した場合、エージェントはマッピングプロパティで指定したディレクトリにステージングファイルを作成します。処理するデータの量に対応する十分なディスク領域を持つSecure Agentマシン上のステージングディレクトリを指定する必要があります。
マッピングを実行すると、UNLOADコマンドによってAmazon RedshiftテーブルからAmazon S3バケットにデータがロードされ、その後エージェントがS3からエージェントマシン上のステージングディレクトリにデータをロードします。エージェントが読み取り操作を完了すると、ステージングファイルは削除されます。

直接読み取りモード

読み取りモードを直接に設定すると、データ統合はデータをステージングせずにAmazon Redshiftに直接アクセスしてデータを取得します。
直接読み取りモードを設定する場合、取得サイズを指定して、Redshiftソースから一度に取得するデータの行数を決定することもできます。マッピングプロパティのS3ステージングに適用できる詳細ソース属性と、エージェントプロパティのステージング最適化プロパティは、直接モードには必要ありません。
直接読み取りモードとステージング読み取りモードに適用される詳細ソース属性のリストについては、マッピングのAmazon Redshift V2ソースを参照してください。

Amazon Redshift V2ソースのデータ暗号化

データを保護するために、ソースからデータを読み取るときにデータを暗号化することができます。
[ランタイムオプション]ページのAmazon Redshift V2の詳細ソースプロパティにある[暗号化タイプ]フィールドで、暗号化のタイプを選択します。Unloadコマンドは、AWSが管理する暗号化キーとAWS Key Management Serviceキーを使用して、サーバーサイド暗号化用にAmazon S3に一時ファイルを作成します。
サーバーサイド暗号化用にUnloadコマンドでAWS Key Management Serviceによって生成された顧客マスタキーIDを使用します。
以下のタイプの暗号化を選択できます。
なし
データは暗号化されません。
SSE-S3
[SSE-S3]暗号化タイプを選択した場合、UnloadコマンドはAmazon S3バケットに一時ファイルを作成し、Amazon S3はサーバーサイド暗号化用のAWSが管理する暗号化キーを使用してファイルを暗号化します。
SSE-KMS
[SSE-KMS]暗号化タイプを選択した場合、UnloadコマンドはAmazon S3バケットにステージングファイルを作成し、Amazon S3はサーバーサイド暗号化用のAWS KMSが管理する顧客マスタキーまたはAmazonリソースネーム(ARN)を使用してファイルを暗号化します。
接続プロパティで指定したAWS KMSが管理する顧客マスタキーまたはARNは、Amazon S3をホストする地域と同じ地域に属する必要があります。
例えば、Amazon S3が[米国西部(オレゴン)]地域でホストされている場合、[SSE-KMS]暗号化タイプを選択すると、同じ地域で有効にされたAWS KMSが管理する顧客マスタキーを使用する必要があります。
CSE-SMK
[CSE-SMK]暗号化タイプを選択した場合、Amazon Redshiftはマスタ対称キーを使用してAmazon S3サーバーにデータをアップロードし、[暗号化]オプションを設定したcopyコマンドおよび追加のセキュリティ用のプライベート暗号化キーを使用して、データをロードします。
[CSE-SMK]暗号化タイプを有効にするには、接続プロパティでマスタ対称キーIDを指定する必要があります。

Unloadコマンド

Unloadコマンドを使用すると、Amazon Redshiftからデータを抽出し、Amazon S3でステージングファイルを作成できます。Unloadコマンドはセキュアな接続を使用して、Amazon S3上の1つ以上のファイルにデータをロードします。
[アンロードオプション]フィールドでUnloadコマンドオプションを直接指定するか、またはすべてのコマンドオプションを含むテキストファイルへのパスを指定できます。
オプションは大文字で入力し、オプションの区切りにはセミコロンを使用します。
例: DELIMITER = \036;ESCAPE = OFF;NULL=text;PARALLEL = ON;AWS_IAM_ROLE=arn;aws;iam;;<account ID>;role/<role-name>
注: 詳細モードのマッピングでUnloadコマンドオプションを含むテキストファイルへのパスを指定することはできません。
pre-SQLコマンドまたはpost-SQLコマンドとしてUnloadコマンドを実行する場合は、ALLOWOVERWRITEオプションを指定して既存のオブジェクトを上書きします。
デフォルトでは、UNLOADプロパティフィールドは空です。

Unloadコマンドのオプション

UnloadコマンドのオプションはAmazon Redshiftからデータを抽出し、Amazon S3のステージングファイルに特定の形式でデータをロードします。特定の文字を使用してデータを区切ったり、複数のファイルにデータを並行して読み込んだりできます。
Unloadコマンドにオプションを追加するには、[Unloadオプション]オプションを使用します。
以下のオプションを設定できます。
DELIMITER
入力ファイル内のフィールドを区切るための単一のASCII文字。パイプ(|)、チルダ(~)、タブ(\t)などの文字を使用できます。指定した区切り文字をデータに含めることはできません。区切り文字がデータに含まれる場合、ESCAPEを使用すると、区切り文字が通常の文字として読み取られます。
デフォルト値は\036で、レコードセパレータと呼ばれる印字不可能な文字の8進数の表現を表します。
印刷できない文字の8進数の表現をDELIMITERとして使用することを推奨します。
ESCAPE
アンロードされたデータの区切り文字が指定される前に、区切りアンロードファイルにCHARカラムとVARCHARカラムのエスケープ文字を追加できます。デフォルトでは、このESCAPEオプションはONになっています。ESCAPEオプションを無効にするには、ESCAPEオプションの値としてOFFを指定します。例えば、ESCAPE=OFFと指定します。
注: ステージングデータに設定した最適化プロパティを有効にする場合は、Unloadコマンドのオプションで、ESCAPE=OFFを使用する必要があります。ESCAPE=OFFを指定しない場合は、ステージングのパフォーマンスを最適化せずにマッピングが実行されます。
REGION
Amazon S3ステージングバケットがクラスタ領域と同じ領域にない場合は、REGION属性を使用できます。Amazon Redshiftが米国東部(バージニア北部)にある場合は、アジアパシフィック(ムンバイ)領域にあるAmazon S3バケットを使用してステージングファイルを作成することができます。例: REGION = ap-south-1
PARALLEL
Unloadコマンドは、クラスタ内のスライス数に従ってデータを複数のファイルに並行して書き込みます。デフォルトはオンです。並行オプションをオフにすると、Unloadコマンドはデータを順番に書き込みます。データファイルの最大サイズは6.5 GBです。
NULL
NULL Unloadコマンドオプションを使用することによって、Amazon RedshiftソーステーブルのNULL値を、NULL Unloadコマンドオプションを使用して指定した文字列と置き換えることができます。
NULL Unloadコマンドオプションの値を次の形式で入力します: NULL=text文字列値の入力時に、スペースを追加しないでください。
注: NULL Unloadコマンドオプションは、詳細モードのマッピングには適用されません。
NULL Unloadコマンドの詳細については、AWSのマニュアルを参照してください。
AWS_IAM_ROLE
Amazon EC2システムにインストールされたSecure Agentでマッピングを実行するAmazon Redshiftロールリソース名(ARN)を次の形式で指定します。AWS_IAM_ROLE=arn:aws:iam::<account ID>:role/<role-name>
例: arn:aws:iam::123123456789:role/redshift_read
ADDQUOTES
ADDQUOTESは、デフォルトではUNLOADコマンドで実行されます。Unloadコマンドは各データフィールドに引用符を追加します。引用符を追加すると、UNLOADコマンドは区切り文字を含むデータ値を読み取ることができます。二重引用符(")がデータに含まれる場合、ESCAPEを使用すると、区切り文字が通常の文字として読み取られます。

ソースパーティション

Amazon Redshiftからデータを読み取る際には、パーティション化を設定して実行時のマッピングのパフォーマンスを最適化できます。パーティションタイプによって、Secure Agentがパーティションポイントでパーティションにデータを分散する方法を制御します。詳細モードでマッピングを実行する場合、ソースのパーティショニングを設定することはできません。
キー範囲パーティション化などのパーティションタイプを定義できます。1つまたは複数のフィールドの値に基づいてAmazon Redshiftデータをパーティション化するようにキー範囲パーティション化を設定します。キー範囲パーティション化により、Secure Agentはパーティションキーとして定義したフィールドに基づいてソースデータ行を分散します。Secure Agentは、フィールド値を各パーティションの範囲値と比較して、適切なパーティションに行を送信します。
データ値が均等に分散されているカラムには、キー範囲パーティション化を使用します。そうしないと、パーティションのサイズが等しくなくなる可能性があります。例えば、あるカラムのキー値1から1000の間には10行あり、キー値1001から2000の間には999行があるというようになります。
キー範囲パーティション化では、あるパーティションのクエリが別のパーティションよりも先に行を返す場合があります。または、あるパーティションは行を返し、他のパーティションは行を返さない場合もあります。テーブル内の行がキー範囲と同じ順序である場合にこのようなことが起こります。あるクエリは行を読み取って行を返し、他のクエリは同じ行を読み取ってフィルタすることもあります。
注: データ型がIntegerやStringのパーティションキーのみを設定できます。
マッピングで複数のパーティションを設定する場合、Secure Agentは、最初のパーティションの開始範囲および最後のパーティションの終了範囲で指定した値を無視します。Secure Agentは、最初のパーティションの開始範囲で10未満の値、および最後のパーティションの終了範囲で最後のパーティションに指定した値を超える値を使用します。
例えば、マッピングで3つのパーティションを設定し、最初のパーティションの開始範囲の値に5、最後のパーティションの終了範囲の値に90を指定した場合、マッピングは正常に実行されます。ただし、Secure Agentは指定した値を無視し、最初のパーティションの開始範囲の値で10未満の値、および最後のパーティションの終了範囲の値で90を超える値を使用します。
注: ソースのキー範囲パーティション化を設定してターゲットを作成すると、マッピングタスクは失敗します。
ソースのパーティション化を使用する場合、フィルタを設定することはできません。