機能の違い
ループおよび部分文字列ファンクション内のインデックス
標準マップでは、LoopIndexファンクションを使ってループインデックスを参照できます。この場合、最初の出現のインデックスは1です。詳細は、LoopIndexをご覧ください。
DSQLマップでは、FROM句でINDEXキーワードを使ってループインデックスを参照できます。この場合、最初の出現のインデックスは0です。詳細は、FROM句を使うをご覧ください。
部分文字列ファンクションにも同じ違いが当てはまります。標準のSubstringファンクションでは最初の文字のインデックスは1ですが、DSQLのsubStringファンクションでは最初の文字のインデックスは0です。
グルーピング
標準マップでは、SimpleLoopファンクションのDistinctファンクションを使ってエレメントをグルーピングできます。この機能によって、グループピングエレメントの値が入力データで見つかった順序でグループが返されます。詳細は、SimpleLoopをご覧ください。
DSQLマップでは、エレメントはGROUP BY句でグルーピングできます。グループは未定義の順序で返されます。詳細は、GROUP BY句を使うをご覧ください。
ループの展開と分割
- 変数を定義するLET句とSET句
- 条件式
これらの機能は引き続き元のループで使用できます。
文字列の書式設定
入力エレメントにNULL値があり、出力エレメントがNULLableでないとマークされた文字列である場合、標準マップは空の文字列を返します。DSQLマップでは、Nullable属性は無視され、NULL値が返されます。
数字の書式設定
- 入力データが数値制約に一致しない場合、標準マップでは警告を表示して処理を続行しますが、DSQLマップでは例外を表示して処理を停止します。
- 出力で数値が固定サイズの文字列として書式設定されている場合、標準マップではその値はスペースで右詰めにされますが、DSQLマップではゼロで左詰めにされます。
- DSQLマップでは、分数を含む数値表現はFloatデータ型を使って処理されます。出力エレメントが明示的なスケールを持たないDecimalとして定義されている場合、結果はFloatのスケールを保持します。これは標準マップの場合とは異なります。たとえば式の結果が0.20000000298023224であれば、DSQLマップはこの値を返しますが、標準マップは0.2を返します。DSQLマップでformatNumberファンクションを使えば、出力を書式設定できます。
ネスト化された空の配列
ネスト化された配列での反復処理中に空の配列に遭遇した場合、標準マップとDSQLマップでは動作が異なります。
[
{
"lastname" : "Cruise",
"firstnames" : [ "Tom", "Robert" ]
},
{
"lastname" : "Ford",
"firstnames" : [ ]
}
]
[
{
"lastname": "Cruise",
"firstname": "Tom"
},
{
"lastname": "Cruise",
"firstname": "Robert"
},
{
"lastname": "Ford",
"firstname": ""
}
]
[
{
"lastname": "Cruise",
"firstname": "Tom"
},
{
"lastname": "Cruise",
"firstname": "Robert"
}
]
DSQLマップの場合、対応するfirstnames配列が空である(つまり反復処理するものがなかった)ため、Fordというラストネームは無視されます。