Amazon Redshiftコネクタ > 部 II: Amazon Redshift V2コネクタを使用したデータ統合 > Amazon Redshift V2コネクタでのSQL ELT > マッピングタスクのSQL ELTの最適化
  

マッピングタスクのSQL ELTの最適化

マッピングタスクからSQL ELTの最適化を設定して、マッピングのパフォーマンスを向上させることができます。
マッピングを作成した後に、マッピングをマッピングタスクに追加して、マッピングタスクでSQL ELTの最適化を設定します。データ統合によるSQL ELTの最適化の処理方法は、[ランタイムオプション]タブの[SQL ELTの最適化のフォールバックオプション]メニューで選択できます。
このタスクにより、トランスフォーメーションロジックがAmazon Redshiftクエリに変換され、クエリがAmazon Redshiftに送信されて、マッピングロジックがAmazon Redshiftデータベースで処理されます。
マッピングに複数のパイプラインが含まれている場合は、フローの実行順序を定義して、パイプラインからターゲットを特定の順序でロードすることができます。
詳細モードのマッピングを実行した場合、SQL ELTの最適化は使用できません。

SQL ELTの最適化のタイプ

SQL ELTの最適化を適用すると、タスクのプロパティで指定した最適化のタイプに基づいて、タスクは、トランスフォーメーションロジックをソースデータベースまたはターゲットデータベースにプッシュします。データ統合は、トランスフォーメーションロジックをSQLクエリに変換するか、Amazon RedshiftコマンドをAmazon Redshiftデータベースに変換します。データベースでは、そのSQLクエリまたはAmazon Redshiftコマンドを実行してトランスフォーメーションを処理します。
マッピングでは、次のタイプのSQL ELTの最適化を設定することができます。
なし
このタスクは、トランスフォーメーションロジックをAmazon Redshiftデータベースにプッシュダウンしません。
Full
このタスクは、ターゲットデータベースで処理するために可能な限り多くのトランスフォーメーションロジックをプッシュします。トランスフォーメーションがマッピングでサポートされていない場合、タスクは、SQL ELTの最適化でトランスフォーメーションがサポートされるポイントまでマッピングロジックを部分的にプッシュダウンします。
ソース
このタスクは、ソースデータベースで処理するために可能な限り多くのトランスフォーメーションロジックをプッシュダウンします。SQL ELTの最適化を選択すると、タスクは、ターゲットトランスフォーメーションに到達するまで、設定されたすべてのトランスフォーメーションのトランスフォーメーションロジックをマッピングのダウンストリームにプッシュします。また、ターゲットトランスフォーメーションロジックを省略し、残りのマッピングロジックをソースデータベースにプッシュダウンします。

ソースSQL ELTの最適化と完全なSQL ELTの最適化を使用したデータ統合の動作

Amazon Redshiftに対して読み取りと書き込みを行うマッピングに対して完全なSQL ELTの最適化またはソースSQL ELTの最適化を選択すると、データ統合はソースからターゲットへのマッピング、またはダウンストリームトランスフォーメーションに到達するまでマッピングを分析して、処理用にマッピングロジックの一部のみまたは全体をプッシュダウンするかを決定します。
マッピング内のすべてのトランスフォーメーションがSQL ELTの最適化でサポートされている場合、タスクはマッピングロジック全体をデータベースにプッシュダウンします。
トランスフォーメーションがマッピングでサポートされていない場合、タスクは、SQL ELTの最適化でトランスフォーメーションがサポートされるポイントまでマッピングロジックを部分的にプッシュダウンします。データ統合は、プッシュダウンする必要のあるトランスフォーメーションロジックのSELECTステートメントを生成して実行します。次に、データ統合サービスはこのSQLクエリの結果が読み込み、マッピングの残りのトランスフォーメーションを処理します。

SQL ELTの最適化のシナリオ

マッピングでAmazon Redshift V2コネクタまたはAmazon Redshift ODBCコネクタを使用してSQL ELTの最適化を設定できます。
マッピングでAmazon Redshift V2コネクタを使用する場合は、次のようなシナリオでSQL ELTの最適化の設定を使用できます。
注: 詳細モードのマッピングに基づくマッピングタスクに対してSQL ELTの最適化を設定することはできません。
ソースエンドポイントとターゲットエンドポイント
マッピングでサポートされるSQL ELTの最適化のシナリオ
SQL ELTの最適化のタイプ
Amazon S3ソース
Amazon Redshiftターゲット
Amazon S3から読み取り、Amazon Redshift V2接続を使用してAmazon Redshiftに書き込みます。
データをソースからターゲットに読み取るときに、この接続はAWSコマンドを使用します。
完全
Amazon Redshiftソース
Amazon Redshiftターゲット
Amazon Redshift V2接続を使用して、Amazon Redshiftから読み取り、Amazon Redshiftに書き込みます。
ソースとターゲットは、同じクラスタ領域または異なるクラスタ領域に存在することができます。
ソース、完全
注: Secure Agentは、処理用のマッピングロジック全体、または必要に応じて部分的なマッピングロジックのみをAmazon Redshiftにプッシュします。
Amazon Redshiftソース
Amazon Redshift V2接続を使用してAmazon Redshiftから読み取り、他のターゲットに書き込みます。
ソース
注: Secure AgentまたはHosted Agentを使用して、SQL ELTの最適化が設定されたマッピングを実行できます。
注: Amazon Redshift ODBC接続を使用してAmazon Redshiftに対してデータの読み取りおよび書き込みを行うマッピングに対してSQL ELTを設定できます。マッピングでAmazon Redshift V2接続を使用して、SQL ELTの最適化を設定することをお勧めします。Amazon Redshift V2接続を使用して特定のトランスフォーメーションロジックをプッシュダウンできない場合は、Amazon Redshift ODBC接続を使用したSQL ELTの最適化の設定を試すことができます。
Amazon Redshift ODBC接続では、WindowsおよびLinuxシステムのAmazon ODBCの64ビットドライバが使用されます。詳細については、How-Toライブラリの記事、Configuring SQL ELT optimization for Amazon Redshift using the ODBC Connectorを参照してください。

SQL ELTの互換性

トランスフォーメーション、関数、および演算子をデータベースにプッシュするようにタスクを設定できます。
SQL ELTの最適化を使用した場合、Secure Agentはデータベース内の同等の演算子、関数を特定することで、トランスフォーメーションの式を変換します。対応する演算子および関数が存在しない場合、Secure Agentはトランスフォーメーションロジックを処理します。

Amazon Redshift V2での関数

SQL ELTの最適化を使用した場合、Secure Agentはデータベース内の同等の関数を特定することで、トランスフォーメーションの式を変換します。同等の関数がない場合、Secure Agentはトランスフォーメーションロジックを処理します。
次の表に、Amazon Redshiftデータベースで使用できるSQL ELT関数を示します。Xの付いたカラムは、関数をAmazon Redshiftデータベースにプッシュできることを示します。ダッシュ(-)記号の付いたカラムは、関数をデータベースにプッシュできないことを示しています。
機能
SQL ELT
機能
SQL ELT
機能
SQL ELT
ABORT()
-
INITCAP()
X
REG_MATCH()
X
ABS()
X
INSTR()
X
REG_REPLACE
X
ADD_TO_DATE()
X
IS_DATE()
-
REPLACECHR()
X
AES_DECRYPT()
-
IS_NUMBER()
X
REPLACESTR()
X
AES_ENCRYPT()
-
IS_SPACES()
X
REVERSE()
-
ASCII()
X
ISNULL()
X
ROUND(DATE)
-
AVG()
X
LAST()
-
ROUND(NUMBER)
X
CEIL()
X
LAST_DAY()
X
RPAD()
X
CHOOSE()
-
LEAST()
-
RTRIM()
X
CHR()
X
LENGTH()
X
SET_DATE_PART()
-
CHRCODE()
-
LN()
X
SIGN()
X
COMPRESS()
-
LOG()
X
SIN()
X
CONCAT()
X
LOOKUP()
X
SINH()
-
COS()
X
LOWER()
X
SOUNDEX()
-
COSH()
-
LPAD()
X
SQRT()
X
COUNT()
X
LTRIM()
X
STDDEV()
X
CRC32()
-
MAKE_DATE_TIME()
-
SUBSTR()
X
CUME()
-
MAX()
X
SUM()
X
DATE_COMPARE()
X
MD5()
X
SYSTIMESTAMP()
X
DATE_DIFF()
X
MEDIAN()
X
TAN()
X
DECODE()
X
METAPHONE()
-
TANH()
-
DECODE_BASE64()
-
MIN()
X
TO_BIGINT
X
DECOMPRESS()
-
MOD()
X
TO_CHAR(DATE)
X
ENCODE_BASE64()
-
MOVINGAVG()
-
TO_CHAR(NUMBER)
X
EXP()
X
MOVINGSUM()
-
TO_DATE()
X
FIRST()
-
NPER()
-
TO_DECIMAL()
X
FLOOR()
X
PERCENTILE()
-
TO_FLOAT()
X
FV()
-
PMT()
-
TO_INTEGER()
X
GET_DATE_PART()
X
POWER()
X
TRUNC(DATE)
X
GREATEST()
-
PV()
-
TRUNC(NUMBER)
X
IIF()
X
RAND()
-
UPPER()
X
IN()
X
RATE()
-
VARIANCE()
X
INDEXOF()
-
REG_EXTRACT()
-

Amazon Redshift V2での演算子

SQL ELTの最適化を使用した場合、データ統合はデータベース内で同等の演算子を特定することで、トランスフォーメーションの式を変換します。対応する演算子が存在しない場合は、データ統合がトランスフォーメーションロジックを処理します。
完全なSQL ELTの最適化を使用して、これらの演算子をAmazon Redshiftデータベースにプッシュすることができます。
次の表に、Amazon Redshiftデータベースにプッシュできる演算子を示します。
演算子
演算子
+
=
-
>=
*
<=
/
! =
%
AND
||
OR
>
NOT
<

Amazon Redshift V2を使用した変数

完全なSQL ELTを使用して、式トランスフォーメーションでSYSDATE変数をAmazon Redshiftデータベースにプッシュできます。
注: 完全なSQL ELTの最適化を使用してSYSDATE変数をプッシュする場合、この変数はAmazon Redshiftクラスタのdate/timeデータ型に対応しますが、プッシュダウンの最適化を行わないマッピングの場合、SYSDATE変数はエージェントのdate/timeデータ型に対応します。

SQL ELTの最適化の設定

マッピングを最適化するには、マッピングをタスクに追加してから、マッピングタスクでSQL ELTの最適化を設定します。
    1マッピングタスクを作成します。
    2[ランタイムオプション]タブのSQL ELTの最適化セクションで、SQL ELTの最適化の値を[完全]または[ソース]に設定します。
    SQL ELTの最適化は、Amazon Redshiftソースから読み取りを行う場合にのみ使用します。
    注: 最適化コンテキストタイプオプションは、Amazon Redshift V2マッピングタスクには適用されません。
    3完全なSQL ELTの最適化が使用できない場合は、SQL ELTの最適化のフォールバックオプション]メニューで、データ統合によるSQL ELTの最適化の処理方法を選択します。
    注: フォールバックオプションは、詳細モードのマッピングには適用されません。
マッピングタスクの実行時に、トランスフォーメーションロジックがAmazon Redshiftデータベースにプッシュされます。SQL ELTの最適化の実行を確認するには、ジョブのセッションログをチェックします。[マイジョブ]ページで、開始したジョブを監視することができます。

Amazon Redshift V2マッピングのトランスフォーメーション

SQL ELTの最適化を設定すると、Secure Agentは、Amazon Redshiftに対する設定済みのトランスフォーメーションのプッシュを試行します。
次のリストに、Amazon Redshiftにプッシュダウンできるトランスフォーメーションの利用可否を示します。

アグリゲータトランスフォーメーション

完全なSQL ELTの最適化を設定し、アグリゲータトランスフォーメーションをプッシュしてAmazon Redshiftで処理することができます。

集計計算

次の集計計算を実行できます。

受信フィールド

アグリゲータトランスフォーメーションを設定し、入力フィールドが集計関数またはグループ化フィールドで使用されていない場合、ANY_VALUE()関数はフィールドからの値を返すため、出力は確定的ではありません。

式トランスフォーメーション

完全なSQL ELTの最適化を設定し、式トランスフォーメーションをプッシュしてAmazon Redshiftで処理することができます。
マッピング内の各ソースに式トランスフォーメーションを追加してから、マッピング内のダウンストリームに結合することができます。さらに、トランスフォーメーションから分岐してから、マッピングのダウンストリームのトランスフォーメーションに分岐する複数の式トランスフォーメーションを追加できます。
式トランスフォーメーションを設定するときは、次のルールを考慮して、変数を式に含めてください。

ジョイナトランスフォーメーション

2つのAmazon S3ソースまたは2つのAmazon Redshiftソース間でジョイナトランスフォーメーションを設定できます。

ルックアップトランスフォーメーション

完全なSQL ELTの最適化を設定し、ルックアップトランスフォーメーションをプッシュしてAmazon Redshiftで処理することができます。接続済みのルックアップおよび未接続のルックアップをプッシュできます。
マッピングでルックアップを設定する場合は、次のルールを考慮してください。
接続されていないルックアップ関数を他の式関数と入れ子にすることができます。ルックアップの特定のルールの詳細については、ルックアップトランスフォーメーションのルールとガイドラインを参照してください。

ソータートランスフォーメーション

完全なSQL ELTの最適化を設定し、ソータートランスフォーメーションをプッシュしてAmazon Redshiftで処理することができます。
ソータートランスフォーメーションを選択する際に、適用できるのは次のようなソータの詳細プロパティのみです。

SQLトランスフォーメーション

SQLトランスフォーメーションを使用して、Redshiftがサポートするスカラ関数をAmazon Redshiftにプッシュできます。
マッピングに対してSQL ELTの最適化を設定する場合は、SQLトランスフォーメーションでSQLユーザー定義関数(UDF)を使用し、Amazon Redshiftターゲットエンドポイントでクエリを実行できます。
関数をプッシュダウンする場合に使用できるのは、SELECT句のSQL文のみです。次のスニペットは、単純なSELECT SQLクエリの構文を示しています。
SELECT <function_name1>(~Arg~), <function_name2> (~Arg~)...
対応するクエリを次の形式で指定する必要があります。
select <Redshift_supported_scalar_function1> (~Arg~), <Redshift_supported_scalar_function2> (~Arg~)
次のような制限付きで、SQLトランスフォーメーションをプッシュできます。

ルータートランスフォーメーション

ルータートランスフォーメーションを設定する場合は、1つの出力グループのみをターゲットトランスフォーメーションに接続またはマッピングする必要があります。

機能

次のソースから読み取りを行い、Amazon Redshiftターゲットに書き込みを行うマッピングにSQL ELTの最適化を設定できます。
マッピングを設定する場合、SQL ELTの最適化が有効になっているマッピングについては、一部のパラメータがサポートされません。各ソースがサポートするパラメータのリストを参照してください。

Amazon Redshift V2のソース、ターゲット、ルックアップ

基本的なIAMとロールの引き受け認証を使用して、ソーストランスフォーメーションでAmazon Redshift V2接続を設定し、マッピングタスクでSQL ELTの最適化を有効にすることができます。

接続プロパティ

SQL ELTの最適化を設定する際に、Amazon Redshift V2接続のAmazon Redshift V2ソースに対して次のような詳細プロパティを使用できます。

ソースのプロパティ

SQL ELTの最適化を設定する際に、ソーストランスフォーメーションのAmazon Redshift V2ソースに対して次のようなプロパティを使用できます。

ターゲットプロパティ

SQL ELTの最適化を設定する際に、Amazon Redshift V2ターゲットに対して次のようなプロパティを使用できます。
注: 使用できないソースおよびターゲットの詳細プロパティを設定すると、マッピングはInformaticaランタイム環境で実行されます。

ルックアップのプロパティ

SQL ELTの最適化を設定する際に、Amazon Redshift V2ルックアップに対して次のようなプロパティを使用できます。
注: マッピングタスクでパラメータファイルを指定して、マッピング内のAmazon Redshift V2のソース、ルックアップ、およびターゲットの接続とオブジェクトをオーバーライドできます。

Amazon S3 V2ソース

マッピングタスクでSQL ELTの最適化を有効にした場合は、基本的なロールの引き受け、およびIAM認証を使用してAmazon S3 V2接続を設定する必要があります。

ソースのプロパティ

SQL ELTの最適化を設定する際に、マッピングでAmazon S3 V2ソースに対して次のようなプロパティを使用できます。

複数のターゲットに対するSQL ELTの最適化

マッピングに複数のAmazon Redshift V2ターゲットを追加できます。
複数のAmazon Redshift V2ターゲットに書き込みを行うようにマッピングを設定した場合、完全なSQL ELTの最適化を設定すると、書き込み操作をさらに最適化することができます。
最適化を行うためには、複数のターゲットに対して個別に挿入、更新、更新/挿入、削除、またはデータ依存操作を設定するという選択ができます。
複数のターゲットトランスフォーメーションで同じまたは異なるAmazon Redshift V2ターゲットテーブルを選択し、ターゲットトランスフォーメーションごとに異なる操作を実行して、互いに依存しない状態で実行することができます。
マッピングに複数のパイプラインが含まれている場合は、フローの実行順序を定義して、パイプラインからターゲットを特定の順序でロードすることができます。
複数のパイプラインのフロー実行順序を定義し、1つのパイプラインに対して-DEnableSingleCommit=trueを設定した場合は、-DEnableSingleCommit=trueプロパティが優先されます。

ルールおよびガイドライン

複数のターゲットに対して完全なSQL ELTの最適化を行う場合は、次のルールとガイドラインを考慮してください。

複数のターゲットの処理順序の決定

1つのパイプラインで複数のターゲットに書き込みを行うようにマッピングを設定し、それぞれのターゲットを任意の書き込み操作用に設定すると、ターゲット操作は、削除、更新、更新/挿入および挿入に対して事前定義された順序で処理されます。
事前定義された順序でターゲット操作を処理するには、Secure Agentとタスクプロパティで特定のプロパティを設定する必要があります。

Secure Agentのプロパティで-DEnableSingleCommit=trueを設定

次のタスクを実行して、Secure Agentのプロパティを設定します。
  1. 1[管理]を開いて[ランタイム環境]を選択します。
  2. 2このプロパティを設定するSecure Agentを選択します。
  3. 3ページの右上隅にある[編集]をクリックします。
  4. 4[システム構成の詳細]セクションで、データ統合サービスの[タイプ][DTM]を選択します。
  5. 5JVMオプションを編集し、プロパティを-DEnableSingleCommit=trueに設定します。

タスクのプロパティでEnableSingleCommitプロパティを設定

次のタスクを実行して、タスクのプロパティを設定します。
  1. 1マッピングタスクプロパティの[ランタイムオプション]タブで、[詳細セッションプロパティ]セクションに移動します。
  2. 2[セッションプロパティ名]リストから、[カスタムプロパティ]を選択し、[セッションプロパティ値][はい]に設定します。
ターゲット操作を事前定義された順序で処理する場合は、次のガイドラインを考慮してください。

SQL ELTの最適化ジョブのクリーンな停止

SQL ELTの最適化が有効になっているタスクが実行されている場合は、ジョブにクリーンな停止を使用して、ジョブによって生成されたすべての発行済みの文とプロセスを終了できます。
データ統合の[マイジョブ]ページと[監視]の[すべてのジョブと実行中のジョブ]ページの[クリーンな停止]オプションを使用します。
SQL ELTの最適化タスクに対してクリーンな停止を実行する前に、次の例外を確認してください。

SQL ELTの最適化のルールとガイドライン

Amazon Redshiftデータベースに対してSQL ELTの最適化を設定する場合は、次のルールとガイドラインを使用してください。

Amazon Redshiftとの間で読み取りおよび書き込みを行うマッピングでの完全なSQL ELTの最適化に対するルール

Amazon Redshiftとの間で読み取りまたは書き込みを行うマッピングに完全なSQL ELTの最適化を設定する場合は、次のガイドラインを考慮してください。

Amazon Redshiftから読み取りを行うマッピングでのソースSQL ELTの最適化のルール

Amazon Redshiftから読み取りを行うマッピングに対してソースSQL ELTの最適化を設定する場合は、次のガイドラインを考慮してください。

複数のソースオブジェクトの追加のルールおよびガイドライン

複数のソースオブジェクトを追加するときは、次のルールとガイドラインを考慮してください。

関数のルールおよびガイドライン

Amazon Redshiftデータベースに関数をプッシュする際には、以下のルールおよびガイドラインを使用します。

集計関数のルールとガイドライン

Amazon Redshiftデータベースに集計関数をプッシュする際には、以下のルールおよびガイドラインを使用します。

ルータートランスフォーメーションのルールとガイドライン

ルータートランスフォーメーションについては、次のルールとガイドラインを考慮してください。

ルックアップトランスフォーメーションのルールとガイドライン

ルックアップトランスフォーメーションを設定する場合は、次のガイドラインに従ってください。

接続されたルックアップ

接続されたルックアップトランスフォーメーションについては、次のルールとガイドラインを考慮してください。

接続されていないルックアップ

接続されていないルックアップトランスフォーメーションについては、次のルールとガイドラインを考慮してください。

SQLトランスフォーメーションのルールとガイドライン

SQLトランスフォーメーションについては、次のルールとガイドラインを考慮してください。