Oracle データ ソースからテーブルを読み取るパッケージがあります。テーブル (ID 列) の代理キーには、SSIS によって数値 (6,0) データ型が割り当てられました。
その列を派生列コンポーネントに取り込んで (DT_STR,100,1252) としてキャストし、下流のルックアップ テーブルに格納すると、文字列列は正しくない出力を生成しますが、非常に奇妙な方法です。
出力例を次に示します。
ID ID_AS_STRING 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 0 11 11 12 12 . . 20 0 21 21 22 22 . . . 30 0 . . 40 0
基本的に、ID が 10 で割り切れる場合は、ID の先頭の桁を削除します (これは数百、数千の数になります。つまり、740 は 40 になり、9920 は 920 になります)。
言うまでもなく、これは 2 重に間違っています。ルックアップで一部の ID が欠落し、他の ID の重複が作成されるからです。
最初の列のデータ型を 4 ビット整数に変更すると問題なく動作するため、ある意味でこの質問は学術的なものにすぎません。しかし、SSIS で mod-10 番号の先頭の桁を削除するために何が行われているのか、誰か説明できますか?