Excelシートから情報を抽出してデータベースにロードしています。データベースにロードする前に、Excelシートのすべての"-"
をNULL
値に変換する必要があります。
私は現在、データフローオブジェクトの派生列変換でこれを実行しようとしています。データ型がUnicode文字列[DT_WSTR]
の場合は機能しますが、倍精度浮動小数点[DT_R8]
は機能しません。
Unicode文字列で機能する式は次のとおりです。
[EquipmentID] == "-" ? (DT_WSTR,50)NULL(DT_WSTR,50) : [EquipmentID]
倍精度浮動小数点数で機能しない式は次のとおりです。
[SideDoorType] == "-" ? (DT_R8)NULL(DT_R8) : [SideDoorType]
まず、NULL()
関数(DT_R8)NULL(DT_R8)
をキャストする必要はありません。キャストせずに使用できます。 DT_STR
を使用する場合は、キャストする必要があるのはあなただけです。続きを読む:
問題は、2つのデータ型を返すCaseステートメントを使用していることです。
[SideDoorType] == "-" ? NULL(DT_R8) : [SideDoorType]
[SideDoorType]
列を文字列値"-"
と比較しています。等しい場合は、倍精度浮動小数点数NULL
を返します。それ以外の場合は[SideDoorType]
を返します。カラム。
あなたはそれが働いているかもしれない次の表現を使って試すことができます
[SideDoorType]
タイプがDT_WSTR
またはDT_STR
の場合、偽の部分式で列をキャストする必要があります
[SideDoorType] == "-" ? NULL(DT_R8) : (DT_R8)[SideDoorType]
[SideDoorType]
タイプがDT_R8
の場合、比較式で列をキャストする必要があります
(DT_WSTR,50,1256)[SideDoorType] == "-" ? NULL(DT_R8) : [SideDoorType]
また、これらの2つの式が機能しない場合、列にDT_R8
に変換できない値が含まれているか、またはScript Component
Derived Column
の代わりに、フロートにキャストする前にデータをクリーンアップするスクリプトを記述します