Поток данных определяет поток данных от источника к месту назначения. Вы не запускаете одну задачу потока данных и переходите к следующей. Потоки данных между выбранными вами объектами (источники, преобразования, места назначения).
Более того, в рамках задачи потока данных вы не можете выполнять такие задачи, как итерация, выполнение компонента и т. Д.
Поток управления определяет рабочий процесс для выполнения задач, часто определенного порядка (при условии, что вы включили ограничения приоритета). Пример зацикливания является хорошим примером требования к потоку управления, но вы также можете выполнять отдельные сценарии SQL, вызывать интерфейсы COM, выполнять компоненты .NET или отправлять электронную почту. Сама задача потока управления может фактически не иметь ничего общего с базой данных или файлом.
Задача потока управления сама по себе ничего не делает для данных. Он выполняет то, что само по себе может (или не может) воздействовать на данные где-то. Задача потока данных делает что-то с данными. Это определяет его движение и преобразование.
Должно быть очевидно, когда следует выполнять логику потока управления и логику потока данных, поскольку это будет единственный способ сделать это. В вашем примере вы цитируете контейнер foreach и заявляете, что можете подключиться к электронной таблице в потоке данных. Конечно, для одной таблицы, но как бы вы сделали это для нескольких таблиц в папке? В логике потока данных вы просто не можете!
Надеюсь, это поможет.