SQL ELTモードでのマッピングのルールとガイドライン
SQL ELTモードでマッピングを実行する場合は、次のルールとガイドラインを考慮してください。
- 一般的なガイドライン
- マッピングを実行する場合は、次の一般的なガイドラインを考慮してください。
- - カスタムクエリの入力パラメータを使用してSnowflakeテーブルから読み取りを行うマッピングは失敗します。
- - 式トランスフォーメーションで使用されるデータ型を処理するには、データ型の精度がSnowflakeによって返されるデータ型の精度と一致するようにします。このような操作を行わない場合、マッピングが失敗します。
- データ型
- 特定のデータ型の読み取りと書き込みを行う場合は、次のルールとガイドラインを考慮してください。
- - Snowflakeに対して読み取りと書き込みを行う場合は、ソースデータに時刻データ型とTIMESTAMPTZデータ型が含まれていないことを確認してください。
- - ソースフィルタの入力パラメータを使用する場合は、フィルタ式で文字列データ型のみを使用してください。
- - Amazon S3またはMicrosoft Azure Data Lake Storage Gen2ソースからArray、Map、またはStructデータ型を読み取ることはできません。
- - Snowflakeソースから配列またはオブジェクトのデータ型を読み取りを行い、実行時に作成されたSnowflakeターゲットに書き込みを行うマッピングは失敗します。
- - 実行時に作成されたSnowflakeターゲットにDATEまたはTIMESTAMPLTZデータ型のデータの書き込みを行うマッピングを実行すると、マッピングは日付/時刻データ型をTIMESTAMPNTZデータ型に変換し、デフォルトの精度9でTIMESTAMPNTZデータ型の書き込みを行います。
- 関数
- 式トランスフォーメーションで特定の関数を使用する場合は、次のルールとガイドラインを考慮してください。
- - 日付関数または時刻関数で日付または時刻の値を渡すと、マッピングは失敗します。マッピングを正常に実行するには、日付と時刻の関数リストから必要なフィールドを選択してフィールド式を定義し、マッピングを実行します。
- - 日付関数または時刻関数でdate_or_time_part引数を渡す場合は、date_or_time_part引数を一重引用符で囲んでください。
例えば、DATEADD関数を使用する場合は、次の形式を使用します:
DATEADD('Year', <値>, <フィールド名>)
- - TO_NUMERIC関数またはTO_NUMBER関数を使用してブールデータ型を処理する場合は、ブールデータ型を含むフィールドを関数の引数として設定する必要があります。
例えば、TO_NUMBER関数を使用する場合は、式トランスフォーメーションで次の構文を使用します:
TO_NUMBER(TO_BOOLEAN(bool_field))
- - UUID_STRING関数のuuid引数とname引数を必ず渡すようにしてください。
例えば、UUID_STRING関数を使用する場合は、次の形式を使用します:
UUID_STRING(uuid,name)
引数なしでUUID_STRING関数を渡すと、SnowflakeはランダムなUUIDを返します。
- - 式トランスフォーメーションでウィンドウ関数を設定するには、[ウィンドウ]タブの[ウィンドウプロパティの有効化]チェックボックスをオンにする必要があります。
- - 式トランスフォーメーションでは、関数に4つを超える引数を渡すことはできません。
- - APPROX_TOP_K、APPROX_TOP_K_ACCUMULATE、またはMINHASH関数の整数引数を渡すには、整数引数の引数に整数定数を追加します。
整数引数を渡す方法の詳細については、Snowflakeのマニュアルを参照してください。
- - APPROX_PERCENTILE関数のパーセンタイル引数を渡すには、引数に0から1の範囲の数値定数を追加します。
パーセンタイル引数を渡す方法の詳細については、Snowflakeのマニュアルを参照してください。
- - ANYデータ型の複数の引数を含む関数を設定するには、引数のデータ型が同種であることを確認してください。
例えば、NVL関数のANYデータ型でexpr1引数とexpr2引数を渡し、expr1引数に整数データ型が含まれている場合は、expr2引数も同様に整数データ型である必要があります。
- - NVLまたはNVL2関数で設定されたマッピングは、次の動作を示します。
- ▪ 次の条件をすべて満たす場合は、正しくない結果を返します。
- ▪ 関数の最初の引数がNULLである。
- ▪ Snowflakeターゲットフィールドのデータ型がDatetimeである。
- ▪ 関数で設定された引数が検証されますが、次の条件をすべて満たす場合、マッピングは実行時に失敗します。
- ▪ 関数の最初の引数がNULLである。
- ▪ Snowflakeターゲットフィールドのデータ型がBinaryである。
- ターゲット操作
- Snowflakeターゲットオブジェクトを設定する場合は、次のルールとガイドラインを考慮してください。
- - ターゲットトランスフォーメーションでユーザーに割り当てられたウェアハウス名とロールを定義する場合、マッピングには[ウェアハウス]と[ロール]のターゲットプロパティで指定した値は適用されません。Snowflake Data Cloud接続でウェアハウス名とロールを指定する必要があります。
- - ターゲットで更新/挿入操作を実行するには、Snowflakeターゲットトランスフォーメーションでターゲット操作を[更新]として選択し、更新モードを[更新しない場合は挿入]として選択する必要があります。
- 式の検証
- アグリゲータトランスフォーメーションまたは式トランスフォーメーションで使用する式の検証エラーに関しては、次のルールとガイドラインを考慮してください。
- - 引数に次の設定が含まれている場合、引数の式の検証は失敗します。
- ▪ UNIFORM関数の式に、キャスト演算子(::)が含まれている。
- ▪ 関数の式にDISTINCTキーワードまたはアスタリスク(*)ワイルドカードが含まれている。
- ▪ ビット式関数の数値を含む文字列引数。
- - 式によって関数の引数が検証されますが、マッピングに次の設定が含まれている場合、マッピングは実行時に失敗します。
- ▪ SEQ1、SEQ2、SEQ4、またはSEQ8関数のオプション引数が、0または1以外の任意の値を使用している。
- ▪ Date関数またはTime関数の文字列引数が無効である。
- ▪ アグリゲータトランスフォーメーションで、関数リストにリストされていないウィンドウ関数が使用されている。
使用できる機能の一覧の詳細については、
SQL ELTモードのマッピング内の関数を参照してください。
- ▪ 関数の式がStringデータ型を返し、出力ポートがInteger、Bigint、Text、Decimal、またはDoubleデータ型である。
- ▪ 関数の式で、引数に二項比較が含まれている。
- ▪ 関数の式にブールデータ型のカラムが含まれています。
- ▪ 関数の引数で、指定した範囲にない値が使用されている。
例えば、NTH_VALUE関数の2番目の引数を渡すには、引数に1~1000の範囲の数値定数を追加します。
関数の引数として追加できる範囲の詳細については、Snowflakeのマニュアルを参照してください。
- ▪ 式に、ネストされたWindow関数が含まれている。
例えば、式によって引数が検証されますが、次の形式のCONDITIONAL_CHANGE_EVENTウィンドウ関数内でAVGウィンドウ関数を設定すると、実行時にマッピングが失敗します(ここで、引数はAVG関数のSALARYです):
CONDITIONAL_CHANGE_EVENT(AVG(SALARY))