Условие SSIS разделено на основе значения столбца
Добрый день всем,
У меня есть запрос на выборку, где я получаю данные из SQL, т.е.
select invno , date_received from sales
То, что я хочу сделать, это разделить файл на несколько файлов с помощью условного разделения. Я не знаю, как установить условие, которое я пробовал, как показано ниже
Но он просто создает один файл, как мне создать несколько файлов на основе значения столбца, если я не знаю, каким будет значение столбца?
Также я хотел бы назначить значение столбца, т.е. INVNO, для имени файла, а также, чтобы предотвратить перезапись файлов
1 ответ
Используя готовые компоненты, лучше всего иметь что-то подобное
Задача "Выполнение SQL" вернет полный набор результатов переменной SSIS типа Object. Ваш запрос будет генерировать отдельный набор INVNO. SELECT DISTINCT T.INVNO FROM dbo.Sales AS T;
Контейнер цикла по каждому элементу затем собирается "уничтожить" этот набор записей в единственном экземпляре нашего INVNO. Это требует, чтобы у вас была переменная, вероятно, типа String, чтобы получить это число.
Задача потока данных будет иметь в качестве исходного запроса параметризованный запрос. Предположим, диспетчер соединений OLE DB, это было бы select INVNO, date_received FROM dbo.Sales AS S WHERE S.INVNO = ?;
и затем вы отображаете текущее значение INVNO (назначенное как часть измельчения из FELC)
Наконец, диспетчер соединений с плоскими файлами будет иметь выражение Expression для свойства ConnectionString, которое учитывает полный путь к выходному файлу. Это может быть что-то простое, как "C:\ssisdata\" + @[User::Invno] + ".csv"
Да, и установите DelayValidation = True для диспетчера соединений с плоскими файлами и задачи потока данных.