SQL ELTモードのマッピングfor Amazon Redshift
Amazon RedshiftまたはAmazon S3からデータを読み取るSQL ELTモードのマッピングを作成して、Amazon Redshiftにロードし、Amazon Redshift内のすべてのデータトランスフォーメーションを実行できます。
SQL ELTモードでマッピングを作成するには、マッピングを作成し、マッピングタイプとして[マッピング] - [SQL ELT]を選択します。次に、クラウドエコシステムとしてAmazon Redshiftを選択し、Amazon Redshift V2ターゲット接続を選択するように求められます。組織にAmazon Redshift V2接続がない場合は、接続を作成するように求められます。
ターゲット接続を選択すると、Mapping Designerが開きます。マッピングを作成するときには、設定するソーストランスフォーメーションとターゲットトランスフォーメーションが事前にキャンバス上に存在しています。
SQL ELTモードのマッピングのソース
ソーストランスフォーメーションでソース接続を設定する場合、Amazon Redshift V2またはAmazon S3 V2接続を選択できます。
Amazon Redshift V2ソースのプロパティ
Amazon Redshiftソースに対しては、次のプロパティを設定できます。
- •ソース接続 - パラメータ
- •ソースタイプ - 単一、クエリ、パラメータ
- •スキーマ名
- •ソーステーブル名
- •Pre-SQL
- •Post-SQL
- •SQLクエリ
- •個別選択
Amazon S3 V2ソースのプロパティ
Amazon S3 V2ソースに対しては、次のようなプロパティを設定できます。
サポートされているプロパティを設定する方法については、Amazon S3 V2コネクタのヘルプを参照してください。
SQL ELTモードのマッピングのターゲット
SQL ELTモードのマッピングでターゲットトランスフォーメーションを設定する場合は、Amazon Redshift V2接続のみを使用する必要があります。
SQL ELTモードのマッピングのAmazon Redshift V2ターゲットトランスフォーメーションでは、次のプロパティを設定できます。
SQL ELTモードのマッピングのターゲットの動作が他のタイプのマッピングのターゲットとどのように異なるかについては、データ統合ヘルプの「マッピング」にある「SQL ELTモードのマッピングのターゲット」を参照してください。
SQL ELTモードのマッピングのトランスフォーメーション
SQL ELTモードのマッピングには、Amazon Redshiftが処理できるトランスフォーメーションが含まれます。
SQL ELTモードのマッピングでは、次のようなトランスフォーメーションを使用することができます。
SQL ELTモードのマッピング内の関数
SQL ELTモードのマッピング内で式を作成する場合は、Informatica関数および式構文ではなく、Amazon Redshiftのネイティブ関数および式構文を使用する必要があります。
次のようなネイティブ関数をSQL ELTモードのマッピングで使用することができます。
集計関数とビット単位の集計関数
ANY_VALUE() | COUNT() | STDDEV_SAMP() |
AVG() | LISTAGG() | SUM() |
BIT_AND() | MAX() | VAR_POP() |
BIT_OR() | MEDIAN() | VAR_SAMP() |
BOOL_AND() | MIN() | - |
BOOL_OR() | STDDEV_POP() | - |
条件付き関数
COALESCE() | LEAST() | NVL2() |
DECODE() | NULLIF() | - |
GREATEST() | NVL() | - |
データ型に対する書式設定関数
TEXT_TO_INT_ALT() | TO_CHAR() | TO_NUMBER() |
TEXT_TO_NUMERIC_ALT() | TO_DATE() | - |
日時関数
ADD_MONTHS() | DATE_PART_YEAR() | TIMEOFDAY() |
CONVERT_TIMEZONE() | DATE_TRUNC() | TIMESTAMP_CMP() |
DATE_CMP() | GETDATE() | TIMESTAMP_CMP_DATE() |
DATE_CMP_TIMESTAMP() | INTERVAL_CMP() | TIMEZONE() |
DATEADD() | LAST_DAY() | TRUNC() |
DATEDIFF() | MONTHS_BETWEEN() | - |
DATE_PART() | NEXT_DAY() | - |
ハッシュ関数
CHECKSUM() | FNV_HASH() | SHA1() |
farmFingerprint64() | MD5() | SHA2() |
FUNC_SHA1() | SHA() | MURMUR3_32_HASH() |
算術関数
ABS() | DEGREES() | POW() |
ACOS() | DEXP() | POWER() |
ASIN() | DLOG1() | RADIANS() |
ATAN() | DLOG10() | RANDOM() |
ATAN2() | EXP() | ROUND() |
CBRT() | FLOOR() | SIGN() |
CEIL() | LN() | SIN() |
CEILING() | LOG() | SQRT() |
COS() | MOD() | TAN() |
COT() | PI() | TRUNC() |
文字列関数
ASCII() | LENGTH() | REVERSE() |
BPCHARCMP() | LOWER() | RIGHT() |
BTRIM() | LPAD() | RPAD() |
BTTEXT_PATTERN_CMP() | LTRIM() | RTRIM() |
CHAR_LENGTH() | OCTETINDEX() | SOUNDEX() |
CHARACTER_LENGTH() | OCTET_LENGTH() | SPLIT_PART() |
CHARINDEX() | QUOTE_IDENT() | STRPOS() |
CHR() | QUOTE_LITERAL() | STRTOL() |
COLLATE() | REGEXP_COUNT() | SUBSTRING() |
CONCAT() | REGEXP_INSTR() | TEXTLEN() |
CRC32() | REGEXP_REPLACE() | TRANSLATE() |
DIFFERENCE() | REGEXP_SUBSTR() | TRIM() |
INITCAP() | REPEAT() | UPPER() |
LEFT() | REPLACE() | - |
LEN() | REPLICATE() | - |
ウィンドウ関数
AVG() | MAX() | STDDEV_SAMP() |
COUNT() | MEDIAN() | STDDEV() |
CUME_DIST() | MIN() | STDDEV_POP() |
DENSE_RANK() | NTH_VALUE() | SUM() |
FIRST_VALUE() | NTILE() | VAR_SAMP() |
LAG() | PERCENT_RANK() | VARIANCE() |
LAST_VALUE() | RANK() | VAR_POP() |
LEAD() | RATIO_TO_REPORT() | - |
LISTAGG() | ROW_NUMBER() | - |
Amazon Redshiftのネイティブ関数と式構文の詳細については、Amazon Redshiftのドキュメントの「
SQL functions reference」を参照してください。
SQL ELTモードのマッピング内の演算子
SQL ELTモードのマッピングを使用する場合、データ統合はデータベース内の同等の演算子を特定することで、トランスフォーメーションの式を変換します。対応する演算子が存在しない場合は、データ統合がトランスフォーメーションロジックを処理します。
次の表に、Amazon Redshiftにプッシュできる演算子を示します。
SQL ELTモードでのマッピングのルールとガイドライン
SQL ELTモードでマッピングを実行する場合は、次のルールとガイドラインを考慮してください。
一般的なガイドライン
- •複数のソースから読み取りを行い、ジョイナトランスフォーメーションまたはユニオントランスフォーメーションを使用する場合は、すべてのソースで同じ接続を使用していることを確認してください。
- •Greatest()関数またはLeast()関数で5つ以上の引数を指定すると、次のエラーメッセージが表示されます。
関数[LEAST]に必要な数の引数が含まれていません。必要な引数の数は[1]、提供された引数の数は[5]です。
このエラーメッセージは誤解を招くものです。Greatest()関数とLeast()関数では、最大4つの引数を指定できます。
- •キーワードや関数名をカラム名や出力ポート名として使用しないようにしてください。
- •更新、更新/挿入、または削除操作を実行する場合は、ターゲットテーブルの更新カラムフィールドにプライマリキーまたはカラム名を指定してください。
- •ネストされた集計関数を使用することはできません。例えば、集計関数にSUM(AVG(col1))を指定することはできません。
マッピングに複数のアグリゲータトランスフォーメーションを追加して、ネストされた集計を使用します。
- •接続されたルックアップを設定する場合は、[すべての行を返す]および[任意の行を返す]複数一致ポリシーのみを使用できます。接続されていないルックアップを設定する場合は、[任意の行を返す複数一致ポリシーのみを使用できます。
- •接続済みのルックアップトランスフォーメーションまたは未接続のルックアップトランスフォーメーションを使用しており、[複数一致ポリシー]オプションが[任意の行を返す]に設定されている場合は、ルックアップ条件に等しい(=)以外の演算子が含まれていないことを確認してください。そうしないと、マッピングが失敗します。
- • TEXT_TO_NUMERIC_ALT()関数を使用する場合は、次のいずれかの構文を使用できます。
- - TEXT_TO_NUMERIC_ALT(式)
- - TEXT_TO_NUMERIC_ALT(式、書式)
- - TEXT_TO_NUMERIC_ALT(式、精度、スケール)
- - TEXT_TO_NUMERIC_ALT(式、書式、精度、スケール)
format引数が文字列で、精度パラメータが整数であることを確認してください。また、精度を指定する場合は、精度とともにスケールを指定する必要があります。
- •関数を別の関数内の引数として渡す場合は、引数が返す値のデータ型が親関数でサポートされていることを確認してください。
Amazon Redshiftのソースとターゲット
- •Amazon Redshiftに対して読み取りと書き込みを行うときは、ソーストランスフォーメーションとターゲットトランスフォーメーションで同じ接続を使用していることを確認してください。
- •ソースデータにBoolean、Time、TIMESTAMPTZ、およびSuperデータ型が含まれていないことを確認してください。
- •ソースタイプとして[クエリ]を選択した場合は、クエリに重複するカラムがないことを確認してください。
- •[複数一致ポリシー]オプションを[任意の行を返す]に設定してルックアップトランスフォーメーションを設定し、実行時にSQLクエリを使用してルックアップオブジェクトをオーバーライドする場合は、SQLクエリによって返されるカラムの数がルックアップオブジェクトの数と同じであることを確認してください。
- •接続されていないルックアップトランスフォーメーションを使用し、[複数一致ポリシー]オプションを[任意の行を返す]に設定すると、ルックアップ条件で定義されたカラムがクエリのSELECT句に重複して追加されます。
- •カスタムクエリをソースとして使用する場合は、詳細ソースプロパティで[個別選択]オプションを有効にしないようにしてください。カスタムクエリをソースとして使用しない場合は、[個別選択]クエリによってカスタムクエリがオーバーライドされ、重複する行が排除されます。
Amazon S3ソースとAmazon Redshiftターゲット
- •Amazon S3ソースから暗号化されたファイルを読み取ることはできません。
- •ソースデータに階層データ型が含まれていないことを確認してください。
- •AvroファイルからDate、Decimal、およびTimestampデータ型を読み取ることはできません。
- •区切り文字で区切られたファイルから読み取ることができるのはStringデータ型のみです。
- •マッピングフローの途中で構成されたトランスフォーメーションのデータをプレビューすることはできません。
- •Avroファイルから読み取りを行う場合は、カラム名にUnicode文字が含まれていないことを確認してください。
- •AvroファイルまたはJSONファイルからデータの読み取りを行う場合は、カラム名が小文字であることを確認してください。
- •ORCまたはParquetファイルからデータの読み取みを行う場合は、COPYコマンドでAWS_IAM_ROLEを指定してください。
- •区切り文字で区切られたファイル、Avro、またはJSONファイルからデータの読み取りを行って、値の精度がデフォルトの精度より大きい場合は、COPYコマンドで属性TRUNCATECOLUMNS=ONを指定してください。
- •区切りファイル、Avroファイル、またはJSONファイルからデータの読み取りを行って、Amazon S3バケットとAmazon Redshiftクラスタが異なるリージョンに配置されている場合は、COPYコマンドのREGION属性でAmazon S3バケットのリージョンを指定してください。