Обрабатывают как приведение типов, так и условие для значения по умолчанию в производном столбце

#ssis

#ssis

Вопрос:

Я создал пакет SSIS, в котором два столбца типа varchar(1) должны быть сопоставлены со столбцами Integer . Я работаю с использованием производного столбца и присваиваю обоим полям приведение типа (DT_I4). Однако я обнаружил, что в полном наборе данных есть записи без значений в этих двух полях, и поэтому я должен ввести приведение и добавить условие в выражение, чтобы по умолчанию было «0», если null .

До сих пор я пробовал следующее, но они недействительны

 (IsNull[Notes Taken])?(DT_I4)"0":[Notes Taken]
(DT_I4)(IsNull[Notes Taken])?"0":[Notes Taken]
 

Как мне правильно создать это выражение

Ответ №1:

Самое простое решение — использовать REPLACENULL функцию типа:

 REPLACENULL([Notes Taken], "0")  
 

А затем — приведите его к DT_I4 . Эта функция заменяет логику, которую вы разрабатываете, условным оператором.
В обеих ваших формулах есть ошибки. Наиболее заметный — ISNULL это функция, для которой нужны круглые скобки вокруг ее аргументов, ISNULL([Notes Taken]) , скобки определяют только столбец потока данных. Смотрите Документы MS.
Затем ваше первое выражение

 (IsNull[Notes Taken])?(DT_I4)"0":[Notes Taken]
 

Возможно, поле [Notes Taken] не соответствует типу данных DT_I4 , который является типом данных первого аргумента ? : operator .
Ваше второе выражение

 (DT_I4)(IsNull[Notes Taken])?"0":[Notes Taken]  
 

Применяет приведение данных к логической функции ISNULL , а не к полному выражению. Вы должны поместить круглые скобки вокруг полного ? : оператора, например:

 (DT_I4)(IsNull([Notes Taken])?"0":[Notes Taken])