Проблема с производным преобразованием столбца - PullRequest
0 голосов
/ 01 мая 2020

У меня есть столбец, который является int, и я хочу загрузить данные на основе условия, например, сказать:

  • , если значение равно 1, тогда загрузить столбец со вставленным значением
  • 2 затем загрузить столбец с DELETED
  • значение равно 3, затем загрузить столбец с UPDATED

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

Error at Data Flow Task [Derived Column [1666]]: Attempt to parse the expression "[Copy of operation]== "1" ? "INSERTED"" failed. The expression might contain an invalid token, an incomplete token, or an invalid element. It might not be well-formed, or might be missing part of a required element such as a parenthesis.    
Error at Data Flow Task [Derived Column [1666]]: Cannot parse the expression "[Copy of operation]== "1" ? "INSERTED"". The expression was not valid, or there is an out-of-memory error.    
Error at Data Flow Task [Derived Column [1666]]: The expression "[Copy of operation]== "1" ? "INSERTED"" on "Derived Column.Outputs[Derived Column Output].Columns[Derived Column 1]" is not valid.    
Error at Data Flow Task [Derived Column [1666]]: Failed to set property "Expression" on "Derived Column.Outputs[Derived Column Output].Columns[Derived Column 1]".

 (Microsoft Visual Studio)

===================================

Exception from HRESULT: 0xC0204006 (Microsoft.SqlServer.DTSPipelineWrap)

------------------------------
Program Location:

1 Ответ

1 голос
/ 01 мая 2020

Полагаю, проблема в том, что у вас неполное выражение. Тернарный оператор ? : состоит из трех частей: (boolean expression) ? True bits : False bits

[Copy of operation]== "1" ? "INSERTED" : [Copy of operation]== "2" ? "DELETED" : [Copy of operation]== "3"? "UPDATED" : "UNKNOWN"

Это выражение будет иметь вид

  • Если значение операции копирования столбца равно 1, тогда вернуть INSERTED
    • else Если значение столбца копирования операции равно 2, вернуть DELETED
      • else Если значение столбца копирования операции равно 3, вернуть UPDATED
        • else return UNKNOWN

Предполагается, что тип данных столбца Copy of operation является строкой. Если это целое число, вы удалили бы двойные кавычки вокруг значений 1,2,3.

В комментариях вы указали, что операция __ $ указывает на значение операции как * 1045. *

Перейдите к вышеуказанному шаблону и измените различия (1 удаляется в комментарии, а 1 вставляется в вопросе) для генерации значений.

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

SELECT
    OperationId
,   OperationName
FROM
(
    VALUES ('1', 'INSERTED')
    , ('2', 'DELETED')
   -- etc
)D(OperationId, OperationName);

Опять же, убедитесь, что у вас выровнены типы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...