#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])