SSIS Control Flow vs Data Flow

Я не совсем понимаю цель потока управления в пакете SSIS. Во всех пакетах, которые я создал, я просто добавляю компонент потока данных для управления потоком, а затем остальная часть логики находится в потоке данных.

Я видел примеры более сложных потоков управления (контейнер EX: foreach loop, который выполняет итерацию по строкам в файле Excel.), но я ищу пример, где он также не может быть реализован в потоке данных. Я мог бы так же легко создать соединение с файлом excel в потоке данных.

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

Что побудило меня начать изучать поток управления, и цель состоит в том, что я хотел бы реорганизовать потоки данных SSIS, а также разбивать пакеты на более мелкие пакеты, чтобы упростить поддержку параллельной разработки.

Я пытаюсь обдумать, как я могу использовать поток управления для этих целей.

Ответ 1

Поток данных определяет поток данных от источника до адресата. Вы не запускаете одну задачу потока данных и переходите к следующему. Потоки данных между выбранными вами объектами (источники, преобразования, адресаты).

Кроме того, в рамках задачи потока данных вы не можете выполнять такие задачи, как итерация, выполнение компонентов и т.д.

Управляющий поток определяет рабочий процесс выполняемых задач, часто определенный порядок (при условии, что ваши включенные ограничения приоритета). Пример цикла - хороший пример требования к потоку управления, но вы также можете выполнять автономные SQL-скрипты, вызывать COM-интерфейсы, выполнять компоненты .NET или отправлять электронную почту. Сама задача потока управления может фактически не иметь ничего общего с базой данных или файлом.

Задача управления потоком ничего не делает сама по себе для данных. Он выполняет некоторые, которые сами могут (или не могут) воздействовать на данные где-то. Задача потока данных делает что-то с данными. Он определяет его движение и трансформацию.

Это должно быть очевидно, когда выполнять логику потока управления и логику потока данных, поскольку это будет единственный способ сделать это. В вашем примере вы указываете контейнер foreach и указываете, что вы можете подключиться к электронной таблице в потоке данных. Конечно, для одной таблицы, но как бы вы сделали это для нескольких в папке? В логике потока данных вы просто не можете!

Надеюсь, что это поможет.

Ответ 2

Поток данных - это просто перемещение данных из одного источника в другой.

Поток управления - предоставьте логику, когда компоненты потока данных запускаются и как они работают. Также поток управления может: выполнять циклы, вызывать хранимые процедуры, перемещать файлы, управлять обработкой ошибок, проверять состояние и вызывать различные задачи (в том числе потоки данных) в зависимости от результата, обрабатывать куб, запускать другой процесс и т.д.

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

Ответ 3

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

Ответ 4

Попытка дать основной ответ - Control Flow выполняет операции; например, выполнение инструкции SQL или отправка электронной почты. Когда поток управления завершен, он либо провалился, либо преуспел. С другой стороны, поток данных обнаруживается в элементах потока контейнеров и обеспечивает возможность перемещения, изменения и манипулирования данными.