SQL ELTの最適化 接続を使用したMicrosoft Azure Synapse SQL Microsoft Azure Synapse SQL 接続を含むマッピングに対してSQL ELTの最適化 を設定できます。SQL ELTの最適化 により、マッピングのパフォーマンスが向上します。
マッピングタスクでSQL ELTの最適化 を設定するには、[ SQL ELTの最適化 ] 詳細セッションプロパティを使用します。
Microsoft Azure Data Lake Storage Gen2から読み取りを行い、SQL ELTの最適化 を使用してMicrosoft Azure Synapse SQL に書き込みを行うタスクを実行すると、タスクはトランスフォーメーションロジックをPolyBaseクエリに変換します。
Microsoft Azure Synapse SQL 接続を使用してMicrosoft Azure Synapse SQL に対してデータの読み取りおよび書き込みを行うようにマッピングでSQL ELTの最適化 を設定できる場合は、テーブル、外部テーブル、カスタムクエリ、およびビューからデータの読み取りを行うことができます。
Microsoft Azure Synapse SQLでの関数 SQL ELTの最適化 を使用して、トランスフォーメーション内の関数をMicrosoft Azure Synapse SQLにプッシュできます。
SQL ELTの最適化 を使用した場合、Secure Agentはデータベース内の同等の関数を判断して、トランスフォーメーションの式、フィルタまたはアグリゲータを変換します。
次の表に、Microsoft Azure Synapse SQL 接続を含むマッピングに対してSQL ELTの最適化 を設定する場合に使用できるSQL ELT関数を示します。
機能
機能
機能
ABS()
LAST_DAY()
SIGN()
ADD_TO_DATE()
LENGTH()
SIN()
ASCII()
LN()
SINH()
AVG()
LOG()
SOUNDEX()
CEIL()
LOWER()
SQRT()
CHR()
LPAD()
STDDEV()
CONCAT()
LTRIM()
SUBSTR()
COS()
MAKE_DATE_TIME()
SUM()
COUNT()
MAX()
SYSDATE()
DATE_DIFF()
MD5()
SYSTIMESTAMP()
DECODE()
MIN()
TAN()
EXP()
MOD()
TANH()
FIRST()1
POWER()
TO_BIGINT()
FLOOR()
REG_MATCH()
TO_CHAR(DATE)
GET_DATE_PART()
REPLACECHR()
TO_CHAR(NUMBER)
IIF()
REPLACESTR()
TO_DATE()
IN()
ROUND(DATES)
TO_DECIMAL()
INSTR()
ROUND(NUMBER)
TO_FLOAT()
IS_DATE()
RPAD()
TO_INTEGER()
IS_NUMBER()
RTRIM()
TRUNC(DATE)
IS_SPACES()
SESSSTARTTIME()1
TRUNC(NUMBER)
ISNULL()
SET_DATE_PART()
UPPER()
LAST()1
SHA-256 ()1
VARIANCE()
1 詳細モードのマッピングには適用されません。
次の表に、SQL ELT関数の構文とその説明を示します。
機能
構文
説明
ADD_TO_DATE
ADD_TO_DATE (date, format, amount)
サポートされている形式:
- yyyy - mm - dd - hh - MI - ss - ms - us - ns DATE_DIFF
DATE_DIFF(date1, date2, format)
サポートされている形式:
- yyyy - mm - dd - hh - MI - ss - ms - us - ns DECODE
value , first_search , first_result [, second_search , second_result ]...[, default ]
値には、バイナリを除く任意のデータ型を含めることができます。有効な式を必要に応じて入力できます。trueまたはfalseを値として使用することはできません。
検索引数に条件を追加することはできません。
例:
DECODE ( CONST_NAME, 'Five', 5, 'Pythagoras', 1.414213562, 'Archimedes', 3.141592654, 'Pi', 3.141592654 )
FIRST
FIRST (value)
GET_DATE_PART
GET_DATE_PART (date, format)
サポートされている形式:
- yyyy - mm - dd - hh - MI - ss - ms - us - ns IIF
IIF (condition, value1 [,value2])
IN
- アグリゲータトランスフォーメーションと式トランスフォーメーションIIF(IN(search_value, value1, [value2, ..., valueN,]), 'TRUE', 'FALSE')
- フィルタトランスフォーメーションIN(search_value, value1, [value2, ..., valueN,])
INSTR
INSTR(string, search_value)
INSTR (string, search_value [,start [,occurrence]])
INSTR (string, search_value) 構文を使用する場合は、検索値を%で囲む必要があります。
INSTR (string, search_value [,start [,occurrence]]) 構文を使用する場合、検索値は、検索するシーケンスを含む文字式である必要があります。開始パラメータとオカレンスパラメータにデフォルト値を使用する場合は、検索値を%で囲む必要があります。
開始パラメータとオカレンスパラメータのデフォルト値は1です。
IS_DATE
IS_DATE(value [,format])
- アグリゲータトランスフォーメーションと式トランスフォーメーション- IS_DATE(column name) - IIF(IS_DATE(colname), value1 [,value2]) - IIF(IS_DATE(colname)=0 or 1, value1 [,value2]) - フィルタトランスフォーメーションとルータートランスフォーメーション- IS_DATE(column name)=0 or 1 - IIF ( IS_DATE(colname), 0 or 1, 0 or 1) - IIF(IS_DATE(column name)=0 or 1, 0 or 1, 0 or 1) サポートされている形式:
- dd mon yyyy - hh:mi:ss - mm/dd/yyyy - MM/DD/YYYY HH24:MI:SS - yyyy - yyyy-mm-dd - yyyy-mm-dd hh:mi:ss - yyyy.mm.dd - yyyy/mm/dd - yyyymmdd - mon dd yyyy hh:miAM - Mon dd, yyyy - mon dd yyyy hh:mi:ss:mmmAM - mm-dd-yyyy - dd mon yyyy hh:mi:ss:mmm - yyyy-mm-dd hh:mi:ss.mmm - mm/dd/yy hh:mi:ss AM - yyyy-mm-ddThh:mi:ss.mmm - yyyy-MM-ddThh:mm:ss.fffZ - dd mon yyyy hh:mi:ss:mmmAM 日付範囲: 1753/01/01~9999/12/31
ISNULL
- アグリゲータトランスフォーメーションと式トランスフォーメーション- IIF(ISNULL(colname), value1 [,value2]) - IIF(ISNULL(colname)=0 or 1, value1 [,value2] ) - フィルタトランスフォーメーションとルータートランスフォーメーション- ISNULL(column_name) - IIF(ISNULL(column name), 0 or 1, 0 or 1) IS_NUMBER
- アグリゲータトランスフォーメーションと式トランスフォーメーション- IS_NUMBER(column name) - IIF(IS_NUMBER(colname), value1 [,value2]) - IIF(IS_NUMBER(colname)=0 or 1, value1 [,value2]) - フィルタトランスフォーメーションとルータートランスフォーメーション- IS_NUMBER(column name)=0 or 1 - IIF(IS_NUMBER(column name), 0 or 1, 0 or 1) - IIF(IS_NUMBER(column name)=0 or 1, 0 or 1, 0 or 1) IS_SPACES
- アグリゲータトランスフォーメーションと式トランスフォーメーション- IS_SPACES(column name) - IIF(IS_SPACES(colname), value1 [,value2]) - IIF(IS_SPACES(colname)=0 or 1, value1 [,value2] - フィルタトランスフォーメーションとルータートランスフォーメーション- IS_SPACES(colname) = 0 or 1 - IIF (IS_SPACES(colname), 0 or 1, 0 or 1) - IIF(IS_SPACES(column name)=0 or 1, 0 or 1, 0 or 1) LAST
LAST (value)
LAST_DAY
LAST_DAY (date)
LTRIMおよびRTRIM
LTRIM (string)
RTRIM (string)
LTRIMまたはRTRIM関数には1つの引数のみを渡すことができます。
REG_MATCH
REG_MATCH( subject, pattern )
パターンで使用されるサポートされている正規表現構文:
- . - [^a-z] - [a-zA-Z0-9] - \d - \s - \w ROUND(DATES)
ROUND( date [, format ] )
サポートされている形式:
TANH
EXP() 関数を次の式で使用して、TANH を計算します。
TANH(x) = (EXP(2 * x) - 1) / (EXP(2 * x) + 1)
xの最大値: 354
xの最小値: -354
xの値が354を上回るか、-354を下回る場合は、次の式を使用します。
CASE WHEN X > 354 THEN 1 WHEN X < -354 THEN -1 ELSE TANH(X) END
TO_BIGINT
TO_BIGINT (numeric expression [, flag ])
TO_INTEGERは、フラグがTRUEまたは非ゼロの数字の場合に小数点以下を切り捨てます。
フラグがFALSEまたはゼロの場合、あるいはこの引数が省略された場合、TO_INTEGERは値を近似値の整数に丸めます。
関数には1つの引数のみを渡すことができます。
TO_CHAR(Date)
TO_CHAR (date [,format])
サポートされている形式を指定してください。format は戻り値の形式を定義するもので、date引数の値の形式を定義するものではありません。
サポートされている形式:
- mm.yyyy - dd/mm/yyyy - dd.mm.yyyy - dd-mm-yyyy - dd mon yyyy - mm/dd/yyyy - hh:mi:ss - yyyy.mm.dd - yyyy/mm/dd - yyyymmdd - yyyy-mm-dd hh:mi:ss - MM/DD/YYYY HH24:MI:SS TO_DATE
TO_DATE (string [,format])
format は、string 引数の各部分と一致している必要があります。
サポートされている形式:
- dd/mm/yyyy - dd.mm.yyyy - dd-mm-yyyy - dd mon yyyy - mm/dd/yyyy - hh:mi:ss - yyyy - yyyymm - yyyymmdd - yyyy-mm-dd - yyyy.mm.dd - yyyy/mm/dd - yyyy-mm-dd hh:mi:ss SUBSTR
SUBSTR (string, start [,length ])
start 引数は正の数である必要があります。
lengthは0より大きい整数である必要があります。
Microsoft Azure Synapse SQLでの演算子 SQL ELTの最適化 を使用した場合、Secure Agentはデータベース内の同等の演算子を特定することで、トランスフォーメーション内の式を変換します。同等の演算子がない場合、Secure Agentはトランスフォーメーションロジックを処理します。
次の表に、Microsoft Azure Synapse SQL 接続を含むマッピングに対してSQL ELTの最適化 を設定する場合に使用できるSQL ELT演算子を示します。
演算子
+ - * /
%
= > < >= <= <>
! =
NOT AND OR
Microsoft Azure Synapse SQLでのトランスフォーメーション SQL ELTの最適化 を設定すると、データ統合は、設定されたトランスフォーメーションをMicrosoft Azure Synapse SQLにプッシュしようとします。
次のトランスフォーメーションをMicrosoft Azure Synapse SQLにプッシュできます。
• アグリゲータ• 式• フィルタ• ジョイナ• ルックアップ* • ノーマライザ* • ランク* • ルータ• SQL* • 共有体*詳細モードのマッピングには適用されません。
アグリゲータトランスフォーメーション 完全なSQL ELTの最適化 を設定し、アグリゲータトランスフォーメーションをプッシュしてMicrosoft Azure Synapse SQLで処理することができます。
集計計算 次の集計計算を実行できます。
• AVG• COUNT• MAX• MEDIAN• MIN• SUM• STDDEV• VARIANCE受信ポート アグリゲータトランスフォーメーションを設定し、集計関数または詳細モードのマッピングのグループ化フィールドで受信ポートが使用されていない場合は、ダミーのMAX()関数がクエリ内に生成され、マッピングは完全なSQL ELTの最適化 で実行されます。
式トランスフォーメーション 完全なSQL ELTの最適化 を設定し、式トランスフォーメーションをプッシュしてMicrosoft Azure Synapse SQLで処理することができます。
マッピング内の各ソースに式トランスフォーメーションを追加してから、マッピング内のダウンストリームに結合することができます。さらに、トランスフォーメーションから分岐してから、マッピングのダウンストリームのトランスフォーメーションに分岐する複数の式トランスフォーメーションを追加できます。
式トランスフォーメーションを設定するときは、次のルールを考慮して、変数を式に含めてください。
• 前の行の処理中に割り当てられた値を現在の行の計算に使用している場合、変数を使用することはできません。この場合、マッピングはSQL ELTの最適化 を使用せずに実行されます。• 変数はネストできますが、式で定義する前に変数を参照することはできません。変数がこの順序で定義されていない場合、マッピングはSQL ELTの最適化 を使用せずに実行されます。
例:
var: AGEPLUS2 = AGEPLUS1 + 1 var: AGEPLUS1 = AGE + 1 out: NEXTAGE = AGEPLUS2 + 1
ここで、AGE +1は後で定義されます。最初の変数のAGEPLUS2はAGEPLUS1を参照しており、未解決のままです。
これを解決するには、次の順序で変数を指定します。
var: AGEPLUS1 = AGE + 1 var: AGEPLUS2 = AGEPLUS1 + 1 out: NEXTAGE = AGEPLUS2 + 1
• 変数は、循環型の式またはそれ自体を参照する式を持つことはできません。例:
var: AGEPLUS1 = AGEPLUS2 + 1 var: AGEPLUS2 = AGEPLUS1 + 1 out: NEXTAGE= AGEPLUS2
ここで、AGEPLUS1はAGEPLUS2を参照し、未解決のままです。
ルックアップトランスフォーメーション 完全なSQL ELTの最適化 を設定し、ルックアップトランスフォーメーションをプッシュしてMicrosoft Azure Synapse SQLで処理することができます。接続済みのルックアップおよび未接続のルックアップをプッシュできます。
ルックアップを設定するときは、次のルールを考慮してください。
• データをルックアップし、ルックアップ条件によって複数の一致が見つかった場合、ルックアップからはすべての行が返されます。Microsoft Azure Synapse SQLをターゲットとして使用したマッピングで、ルックアップオブジェクトの[複数一致] オプションを[すべての行を返す] に設定します。[複数一致] を[すべての行を返す] 以外のオプションにすると、エージェントはこれを無視します。 • Microsoft Azure Synapse SQLソースでNULL値のデータをルックアップしてターゲットに書き込みを行うと、SQL ELTの最適化 を使用した場合と使用しない場合では、異なるレコード数でターゲット内のマッピングが実行されます。 • Microsoft Azure Synapse SQLに対して読み取りおよび書き込みを行う場合、ルックアップトランスフォーメーションでフィルタを使用することはできません。 SQLトランスフォーメーション SQL ELTの最適化 が有効なMicrosoft Azure Synapse SQLマッピングでSQLクエリを処理するように、SQLトランスフォーメーションを設定できます。
関数を使用したクエリの実行 入力したクエリの関数をSQLトランスフォーメーションに含めて、Microsoft Synapse SQLターゲットエンドポイントでクエリを実行できます。関数をプッシュするには、SELECT句のSQL文のみを使用する必要があります。選択クエリまたは関数でカラム名を指定します。
SQL文ではFROM句またはWHERE句を使用しないでください。例えば、「SELECT*FROM TABLE」などの文を使用して関数をプッシュしないでください。
入力したクエリでは、次のような関数を使用できます。
• CURRENT_USER• HAS_DBACCESS• RAND• SESSION_USER• SIGN• SUSER_NAME• SUSER_SNAME• SYSTEM_USER• USER• USER_NAMEサポートされている関数の詳細については、Microsoft Azure Synapse SQLのドキュメントを参照してください。
ユーザー定義関数 SQLトランスフォーメーションでカスタムクエリを設定して、Microsoft Azure Synapse SQLのSQLユーザー定義関数(UDF)から読み取ることができます。UDF名に改行文字が含まれるUDFを読み取ることはできません。
ルールおよびガイドライン SQLトランスフォーメーションを設定する際は、次のルールとガイドラインを考慮してください。
• 接続されていないSQLトランスフォーメーションは使用できません。• 静的なクエリを使用できます。動的なクエリは適用されません。• 複数の行を返す関数は使用できません。• 出力フィールドに[このクエリの影響を受ける行数を追跡します] オプションは使用できません。• マッピングが失敗しても、SQLエラーはログに記録されません。• 詳細プロパティの[最大出力行数] オプションと[列内でのSQLエラー時に続行] オプションは使用できません。Microsoft Azure Synapse SQL マッピングでサポートされている機能SQL ELTの最適化 を設定すると、マッピングでは、ソーストランスフォーメーション、ルックアップトランスフォーメーション、およびターゲットトランスフォーメーションで次のMicrosoft Azure Synapse SQL プロパティがサポートされます。
サポートされていないプロパティを設定すると、マッピングはSQL ELTの最適化 を使用して実行されますが、プロパティは無視されます。SQL ELTクエリの生成に失敗した場合、マッピングはSQL ELTの最適化 を使用せずに実行されます。
ソース SQL ELTの最適化 を設定する場合、マッピングではMicrosoft Azure Synapse SQL ソースに対する次のプロパティがサポートされます。- ソースタイプ - 単一オブジェクト、複数オブジェクト、クエリ、およびパラメータ。- パラメータ - 実行時にソースオブジェクトのオーバーライドを許可する- クエリオプション - フィルタ。単純なフィルタ条件と高度なフィルタ条件を両方ともサポートします。- スキーマ名のオーバーライド- テーブル名のオーバーライド- Pre-SQL- Post-SQL- SQLオーバーライド- 実行前/実行後SQLのエラー- メタデータの編集ターゲット SQL ELTの最適化 を設定する場合、マッピングではMicrosoft Azure Synapse SQL ターゲットに対する次のプロパティがサポートされます。- ターゲットタイプ - 単一オブジェクトおよびパラメータ。- ターゲットオブジェクト - 既存のターゲット、実行時に新規作成。- 操作 - 挿入、更新、更新/挿入、削除、データドリブン- Azure Governmentエンドポイント- スキーマ名のオーバーライド- テーブル名のオーバーライド- テーブルの切り詰め- Pre-SQL- Post-SQL- 実行前/実行後SQLのエラー- ソース行の扱い- 拒否しきい値。Microsoft Azure Data Lake Storage Gen2ソースから読み取る場合にのみ適用されます。- 実行時にターゲットを作成するときにメタデータを編集する- 更新オーバーライドLookup SQL ELTの最適化 を設定する場合、マッピングではMicrosoft Azure Synapse SQLの接続済みのルックアップと未接続のルックアップに対する次のプロパティがサポートされます。- ソースタイプ▪ 単一オブジェクト - テーブル、ビュー、外部テーブル▪ カスタムクエリ▪ Parameter(パラメータ)- 複数一致▪ 接続済みのルックアップ - すべての行を返す▪ 未接続のルックアップ - エラーを報告- パラメータ - 実行時にソースオブジェクトのオーバーライドを許可する- スキーマ名のオーバーライド- テーブル名のオーバーライド- Pre-SQL- Post-SQL- SQLオーバーライド- On Pre-Post SQL Error- メタデータの編集- 接続済みのルックアップ用の動的ルックアップキャッシュ- 接続済みのルックアップ用の更新時に古い値を出力- 接続済みのルックアップ用の挿入または更新- ルックアップキャッシュの事前作成 - 自動、値注: マッピングがSQL ELTの最適化 を使用せずに実行されている場合、[Azure BLOBコンテナ名]または[ADLS FileSystem名]は必須フィールドです。ソースのSQL ELTの最適化 を使用してマッピングを実行している場合、[Azure BLOBコンテナ名]は必須フィールドです。
Microsoft Azure Data Lake Storage Gen2ソースでサポートされている機能 SQL ELTの最適化 を設定する場合、マッピングではMicrosoft Azure Data Lake Storage Gen2ソースに対する次のプロパティがサポートされます。
ソース - Azure Governmentエンドポイント- ソースタイプ- 入力形式- 形式オプション▪ 区切り文字▪ Qualifier▪ 最初のデータ行▪ スキーマファイルからインポートする- ファイルシステム名のオーバーライド- ディレクトリのオーバーライド- ファイル名のオーバーライド- 圧縮形式- メタデータの編集注: 大文字と小文字が区別されるMicrosoft Azure Data Lake Storage Gen2のデータベースからデータを読み込むこともできます。
Lookup SQL ELTの最適化 を設定する場合、マッピングではMicrosoft Azure Data Lake Storage Gen2の接続済みのルックアップと未接続のルックアップに対する次のプロパティがサポートされます。• Azure Governmentエンドポイント• ソースタイプ- 単一オブジェクト- Parameter(パラメータ)• 複数一致- 接続済みのルックアップ - すべての行を返す- 未接続のルックアップ - エラーを報告• 入力形式• 形式オプション- 区切り文字- Qualifier- 最初のデータ行- スキーマファイルからインポートする• ファイルシステム名のオーバーライド• ディレクトリのオーバーライド• ファイル名のオーバーライド• 圧縮形式• メタデータの編集Microsoft Azure Synapse SQLソースオブジェクトに対するカスタムクエリの設定 カスタムクエリをMicrosoft Azure Synapse SQLにプッシュダウンできます。
ソースオブジェクトとしてカスタムクエリを含むタスクを実行する前に、マッピングタスクのプロパティで[一時的なビューの作成] セッションのプロパティを設定できます。
プロパティを設定するには次のタスクを実行します。
1 マッピングタスクで、[ランタイムオプション] タブの[SQL ELTの最適化 ]セクションに移動します。2 要件に応じて、[一時的なビューの作成] オプションを設定します。- [一時的なビューの作成] オプションが無効になっている場合は、このタスクによってカスタムクエリがサブクエリとしてSQL ELTクエリに組み込まれます。- [一時的なビューの作成] オプションが有効になっている場合は、このタスクによって、指定したカスタムクエリに基づいて一時ビューが作成され、この一時的なビューを使用してSQL ELTクエリが生成されます。3 [完了] をクリックします。SQL ELTの最適化 のルールとガイドラインMicrosoft Azure Synapse SQLデータベースに対するSQL ELTの最適化 には、特定のルールとガイドラインが適用されます。
一般的なルールとガイドライン マッピングに対してSQL ELTの最適化 を有効にする場合は、次のルールとガイドラインを考慮してください。
- ランクトランスフォーメーションを使用する場合、データはデータベース内のRankindexの順には格納されません。 - varcharフィールドまたはnvarcharフィールドを読み取り、ランクトランスフォーメーションを使用する場合、ターゲットデータはデータベースの照合に従ってソートされます。 - ランクトランスフォーメーションを使用する場合、詳細セッションプロパティで指定したセッションのソート順は、Microsoft Azure Synapse SQL マッピングでは考慮されません。 - ソースタイプとして複数のオブジェクトを選択した場合、2つを超えるオブジェクトを読み取ることはできません。 - カスタムクエリをソースタイプとして使用する場合、テーブル名のエイリアスの最初の3文字は常にINF です。 - 実行時に作成されたMicrosoft Azure Synapse SQLターゲットに日時フィールドを書き込むには、ターゲットフィールドのメタデータを編集し、すべての日時フィールドのネイティブデータ型をdatetime2に変更します。そうしないと、マッピングが失敗します。 - ソースタイプとしてカスタムクエリを使用する場合は、クエリで指定するテーブル名またはカラム名にUnicode文字が含まれていないことを確認してください。そうしないと、マッピングが失敗します。 - フィルタトランスフォーメーションを使用するときは、フィルタ値に特殊文字が含まれていないことを確認してください。含まれていると、マッピングはターゲットに行を書き込みません。 - 更新および削除操作は、既存のターゲットに対してのみ使用できます。 - 区切りファイル、ORCファイル、Parquetファイルなどのファイルからデータを書き込むためにMicrosoft Azure Synapse SQL ターゲットで[実行時に新規作成] オプションを有効にしている場合は、[ファイル名] フィールドを削除します。- Microsoft Azure Synapse SQL ターゲットの拒否しきい値は、データのバッチではなく、データセット全体において考慮されます。- 更新操作ではアグリゲータトランスフォーメーションを使用しないでください。- アグリゲータトランスフォーメーションでネストした集計関数を設定しないでください。- マッピングでは並行トランスフォーメーションを設定しないでください。- 式トランスフォーメーションに変数フィールドが含まれないことを確認してください。- アグリゲータトランスフォーメーションおよび式トランスフォーメーションのIIF句内でISNULL関数を使用します。- フィルタトランスフォーメーションで、またはアグリゲータトランスフォーメーションおよび式トランスフォーメーションのIIF句内で、IN関数を使用します。- アグリゲータトランスフォーメーションでSTDDEV、VARIANCE、およびTRUNC関数を使用する場合、テーブルに28を超える精度で定義された少数カラムがあっても、テーブルに28未満の精度のデータが含まれていると、データが破損する可能性があります。 - 完全なSQL ELTの最適化 の式トランスフォーメーションでlastruntime 変数を使用する場合は、yyyy-mm-dd hh:mi:ss 日付形式を使用する必要があります。例: to_char($lastruntime,'yyyy-mm-dd hh:mi:ss')
- ISNULL(column name1)<>ISNULL(column name2) 構文を使用することはできません。フィルタトランスフォーメーションおよびルータートランスフォーメーションには、次の構文を使用します。
(ISNULL(column name1) AND ISNULL(column name2)) OR ( NOT ISNULL(column name1) AND NOT ISNULL(column name2))
式トランスフォーメーションおよびアグリゲータトランスフォーメーションには、次の構文を使用します。
IIF((NOT ISNULL(column name1) AND ISNULL(column name 2)) OR (ISNULL(column name1) AND NOT ISNULL(column name 2)), 1, 0)
- フィルタトランスフォーメーションまたはルータートランスフォーメーションを使用し、フィルタ条件で文字列値を指定すると、マッピングによって条件の前に文字Nが追加されます。例:
Select*from [Azure].[employee] where (10125 <= "INF1"."EMPLOYEE_ID_NEW") AND ("INF1"."JOB_ID_NEW" = N 'FI_ACCOUNT');
- ノーマライザトランスフォーメーションでNULL値を持つカラムを渡した場合、NULL値がターゲットに書き込まれません。 - TO_DATE()関数をプッシュしてMicrosoft Azure Synapse SQLで処理する場合は、値がサポートされている形式と一致していることを確認してください。値に1桁の数字が含まれている場合は、先頭に0を加えます。 - TO_DATE()関数をMicrosoft Azure Synapse SQLデータベースにプッシュし、引数にNULLデータが含まれている場合、マッピングはSQL ELTの最適化 を使用せずに実行されます。 - MD5()関数をプッシュしてMicrosoft Azure Synapse SQLで処理する場合は、Stringデータ型の値を指定する必要があります。Stringデータ型の値が指定されていない場合、マッピングはSQL ELTの最適化 を使用せずに実行されます。 - MD5()関数をプッシュしてMicrosoft Azure Synapse SQLで処理すると、この関数はマッピング内およびSQL ELTの最適化 が有効になっているマッピング内の英字以外の文字に対して異なる値を返します。 - テーブル名またはカラム名にUnicodeまたは特殊文字が含まれている場合、MD5()関数をMicrosoft Azure Synapse SQLにプッシュすることはできません。 - REG_MATCH()関数をプッシュしてMicrosoft Azure Synapse SQLで処理する場合、大文字と小文字を区別するデータベースの正規表現では、文字の範囲ではなくすべての文字を指定することをお勧めします。例えば、[A-F] の代わりに[ABCDEF] を使用します。 - TO_BIGINT()関数をプッシュしてMicrosoft Azure Synapse SQLでVarcharデータをBigintに変換する場合は、正しい値を返すように、関数でTO_BIGINT (numeric expression [, 1])形式を使用します。Varcharカラムに格納されている値を丸めるには、値を任意の数値形式に変換してからBigintに変換します。 - SQL ELTの最適化 が有効になっているマッピングを実行し、関数をプッシュしてMicrosoft Azure Synapse SQLで処理する場合、関数ではデータベースに設定された照合規則が考慮されます。これにより、この関数は、SQL ELTの最適化 が有効になっているマッピングとは異なるマッピングの値を返します。 - Microsoft Azure Synapse SQLソースから読み取りを行って、単一パイプラインでSQL ELT最適化が有効になっているマッピングから複数のターゲットに書き込みを行った場合、ソーストランスフォーメーションにPre-SQLクエリとPost-SQLクエリが含まれていると、マッピングでは、それぞれのターゲットに対してこれらのクエリが実行されます。これにより、データの不一致が発生する可能性があります。これを回避するには、ターゲットトランスフォーメーションでのみPre-SQLクエリとPost-SQLクエリを定義します。 Microsoft Azure Synapse SQL ソースとターゲットを使用したマッピングMicrosoft Azure Synapse SQL に対してデータの読み取りと書き込みを行うマッピングでSQL ELTの最適化 を設定する場合は、次のルールとガイドラインを使用してください。
- ソーステーブルとターゲットテーブルは同じデータベースに存在している必要があります。- ソーストランスフォーメーションでフィルタを設定する場合は、次のガイドラインを考慮してください。▪ マッピングにフィルタトランスフォーメーションがあり、ソーストランスフォーメーションにフィルタがある場合、マッピングは、これらのトランスフォーメーションのフィルタ条件を統合してレコードをフィルタリングします。ただし、マッピングで一度に使用するフィルタは1つのみにすることをお勧めします。 ▪ フィルタ条件のカラム名にUnicode文字を含めることはできません。 ▪ フィルタでシステム変数を使用することはできません。 ▪ ソースオブジェクトタイプがクエリの場合、フィルタを使用することはできません。 - 更新操作の各キーカラムがマッピングされていることを確認してください。マッピングされていない場合、クエリの生成は失敗し、マッピングはSQL ELTの最適化 を使用せずに実行されます。 - ソースタイプとしてカスタムクエリを使用する場合は、クエリの先頭またはクエリ内にセミコロンがないことを確認してください。 - ソースタイプとしてカスタムクエリを使用する場合は、クエリで指定するテーブル名またはカラム名に特殊文字が含まれていないことを確認してください。 - パラメータファイルを使用して、複数行のカスタムクエリを完全にパラメータ化することはできません。 - カスタムクエリがWITH句で始まる場合、SQL ELTの最適化 を使用してマッピングを実行するには、[一時的なビューの作成] オプションを有効にする必要があります。 - クエリでTOP、OFFSET、またはFOR XML句を指定していない場合、ソースカスタムクエリでORDER BY句を使用することはできません。 - カスタムクエリまたはSQLオーバーライドでOPTION句を使用することはできません。 - マッピングを実行して実行時に作成された新しいターゲットにデータを書き込み、クリーンストップを使用してジョブを停止した場合、作成されたターゲットテーブルは削除されません。 - ソースのSQL ELTの最適化 ▪ SQL ELTの最適化 を使用してマッピングを実行するには、マッピングでソースとターゲットの間に少なくとも1つのトランスフォーメーションが必要です。 ▪ ソースのSQL ELTの最適化 を選択すると、タスクは、サポートされているすべてのトランスフォーメーションのトランスフォーメーションロジックをマッピングのダウンストリームにプッシュします。▪ トランスフォーメーション内の関数がサポートされていない場合、クエリの生成は失敗し、マッピングはSQL ELTの最適化 を使用せずに実行されます。 ▪ ソーストランスフォーメーションは、単一のダウンストリームトランスフォーメーションにのみ接続できます。 Microsoft Azure Data Lake Storage Gen2ソースを使用したマッピングと、Microsoft Azure Synapse SQL ターゲットへの書き込み Microsoft Azure Data Lake Storage Gen2ソースから読み取りを行い、Microsoft Azure Synapse SQL ターゲットに書き込みを行うマッピングでSQL ELTの最適化 を設定する場合は、次のルールとガイドラインを使用してください。
- Microsoft Azure Data Lake Storage Gen2アカウントとMicrosoft Azure Synapse SQL アカウントが、同じAzure Active Directoryテナントに関連付けられている必要があります。- ソースとターゲットのAzure Governmentエンドポイントが、同じAzure Active Directoryテナントに関連付けられている必要があります。- Microsoft Azure Data Lake Storage Gen2に接続するようにプライベートエンドポイントまたは仮想ネットワークを構成することはできません。代わりに、マネージドID認証を使用して、Microsoft Azure Data Lake Storage Gen2に安全に接続することができます。 - Microsoft Azure Data Lake Storage Gen2のサブディレクトリに格納されているオブジェクトを読み取ることはできません。 - Microsoft Azure Data Lake Storage Gen2ソースオブジェクトがパラメータ化されていないことを確認します。 - Microsoft Azure Data Lake Storage Gen2からデータを読み取るときは、エスケープ文字を使用しないでください。そうしないと、正しくない結果になる可能性があります。 - Microsoft Azure Data Lake Storage Gen2ソースから読み取り、Microsoft Azure Synapse SQLターゲットに書き込むマッピングをプッシュダウンした場合、タスクの設定が次のすべてに当てはまると、マッピングタスクでプッシュダウンクエリの生成に失敗します。▪ Microsoft Azure Synapseのターゲット接続がパラメータ化されている。▪ マッピングのターゲット操作と[ソース行の扱い]プロパティが[挿入]に設定されている。▪ マッピングタスクの[ソース行の扱い]プロパティが[更新]に変更されている。詳細モードのマッピング 詳細モードのマッピングでSQL ELTの最適化 を設定する場合は、次のルールとガイドラインを使用してください。
- トランスフォーメーションロジックをMicrosoft Azure Synapse SQLにプッシュするようにSQL ELTの最適化 を設定すると、詳細モードのマッピングには、マッピングに対して生成されるクエリとは異なるクエリが生成されます。 - Microsoft Azure Synapse SQLで処理する関数をプッシュする場合は、関数に有効なパラメータと戻り値の型を指定していることを確認してください。このような操作を行わない場合、マッピングが失敗します。 - SQL ELTの最適化 を設定する場合は、トランスフォーメーションに変数ポートが含まれていないことを確認してください。 - 実行時に新しいターゲットを作成してMicrosoft Azure Synapse SQLにデータを書き込む場合は、すべての受信フィールドをターゲットフィールドにマッピングします。- SQL ELTの最適化 が有効になっているマッピングが特定のトランスフォーメーションをMicrosoft Azure Synapse SQLにプッシュできない場合、マッピングはSQL ELTの最適化 を使用せずに実行され、セッションログにエラーは記録されません。