Использование пользовательской переменной в условном разделении служб SSIS

Я использую DFT, который извлекает записи из БД, где ErrorInd равен 1. Я хочу, чтобы записи об ошибках были помещены в плоский файл, и если ошибок нет, я не хочу создавать какой-либо файл.

Для этого сначала я создал переменную @RecordCount, и эта переменная назначается с помощью Execute Sql Task прямо перед DFT, затем в DFT создается источник oledb и используется запрос для извлечения записей. Однажды я использую условное разделение. В условном разделении я задаю условие, например @RecordCount > 0, а затем сопоставляю case1 с назначением плоского файла.

Почему-то дело не работает, даже если переменная @RecordCount равна 0, создается плоский файл, а я не хочу этого делать.

Я понял, что в любом случае условие работает, но плоский файл будет сгенерирован? Как мне с этим справиться? будет ли какая-нибудь работа вокруг?

PS: плоский файл генерируется динамически


person Harsha    schedule 04.12.2015    source источник


Ответы (1)


Я бы добавил выражение, чтобы установить свойство Disable в потоке данных, например.

@[User::RecordCount] == 0

Я бы удалил преобразование «Условное разделение» — когда поток данных запущен, уже слишком поздно избегать создания выходного плоского файла.

person Mike Honey    schedule 07.12.2015
comment
Возможно, это неправильный способ отключить ДПФ, поскольку он находится внутри цикла for. В любом случае, я обрабатываю эти сценарии в Script Task, читая файл и, если он пуст, удаляю его из папки. Спасибо за ваш ответ - person Harsha; 07.12.2015