Arhn - архитектура программирования

Условное выражение SSIS не обрабатывает условное приведение к NULL DT_STR

У меня небольшая проблема с выражением SSIS, где в задаче потока данных преобразования производного столбца я пытаюсь захватить 6-символьную подстроку из строкового ввода, приведя значение производных столбцов к NULL, если оно не существует. Это код, который я использую, с добавлением разрывов строк и отступов для удобства чтения:

KeyValueLength == -2 ?
    NULL(DT_STR,6,65001) :
    (
        KeyValueLength == -1 ?
        (DT_STR,6,65001)RTRIM(SUBSTRING(StringInput,KeyValueStart,999)) :
        (DT_STR,6,65001)SUBSTRING(StringInput,KeyValueStart,KeyValueLength)
    )

(Для справки, когда KeyValueLength равно -2, значение ключа не найдено, когда оно -1, то оно находится в конце StringInput, любого другого числа и находится в середине StringInput. Этот код работает для других ключевые значения, которые я получаю, которые преобразуются в DT_I4 и DT_DECIMAL)

По отдельности следующие три выражения не вызывают ошибки:

NULL(DT_STR,6,65001)

(DT_STR,6,65001)RTRIM(SUBSTRING(StringInput,KeyValueStart,999))

(DT_STR,6,65001)SUBSTRING(StringInput,KeyValueStart,KeyValueLength)

Но когда я объединяю это вложенное условие выше, я получаю следующую ошибку при попытке сохранить окно:

Для операндов условного оператора тип данных DT_STR поддерживается только для входных столбцов и операций приведения. Выражение KeyValueLength == -2? NULL (DT_STR, 6,65001): (KeyValueLength == -1? (DT_STR, 6,65001) RTRIM (SUBSTRING (StringInput, KeyValueStart, 999)): (DT_STR, 6,65001) SUBSTRING (StringInput, KeyValueStart, KeyValueLength) ) имеет операнд DT_STR, который не является входным столбцом или результатом преобразования, и его нельзя использовать с условной операцией. Чтобы выполнить эту операцию, операнд должен быть явно приведен с помощью оператора приведения.

У меня небольшие проблемы с тем, чтобы понять, в чем именно заключается проблема. Это сообщение об ошибке предполагает, что это связано с использованием условных выражений, но я не вижу проблемы.


Ответы:


1

Итак, по безграничной мудрости Microsoft, это null как DT_STR и вполне допустимо как прямое присвоение значения:

NULL(DT_STR,6,65001)

Но если вы хотите присвоить это значение в условном выражении, где все возможные условия должны быть одного типа, вы должны сделать это:

(DT_STR,6,65001)NULL(DT_STR,6,65001)

То же самое не относится к другим типам, где что-то вроде NULL(DT_I4) действительно независимо от того, назначено оно напрямую или назначено через условие. SMH

03.11.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..