SSIS - модульные «дочерние» пакеты - область видимости переменных и передача переменных в пакет - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь задуматься над некоторыми из этих проектов / пакетов служб SSIS, знакомясь с ETL в Pentaho Data Integration.

Я запускаю несколько пользовательских журналов (для повторного использования).

Другим распространенным «компонентом» в сценариях ETL является старый «найти диапазон данных для извлечения».

Полагаю, некоторые люди просто говорят: «Возьми X месяцев назад и работай над этим» - это быстро, но, возможно, несколько лениво. Я предпочитаю некоторые распространенные инкрементные шаблоны, такие как «запрос последней введенной даты, извлечение оттуда».

В любом случае, поэтому в этих сценариях ETL я создаю модульные «дочерние пакеты» для повторного использования. Будь то ведение журнала, поиск диапазона дат, сценарии расчета и т. Д. Для использования в 20-30 пакетах.

Мне просто интересно --- эти дочерние пакеты - если я повторно использую "искатель диапазона дат" и передаю его переменным "start_range" и "end_range" в дочернем пакете, эти пакеты - может вызываться разными родителями несколько раз - он может передавать свои уникальные результаты каждому родителю, который его вызвал, верно? Надеюсь, что это имеет смысл - я полагаю, что я могу проверить это здесь. Я обеспокоен, если в конце концов это скажут два родителя одновременно - я думаю, что произойдут два отдельных / независимых казни, но кто знает.

1 Ответ

1 голос
/ 26 марта 2019

Схема «Родитель-ребенок» возможна и вполне используется в SSIS.

  • Родитель, один или несколько, может вызывать один и тот же дочерний пакет в своем собственном процессе выполнения. Поскольку это делается в родительском процессе выполнения или порождается из него, дочерние выполнения независимы при вызове одного и того же пакета. Родительский пакет может передавать параметры дочернему элементу.
  • Дочерний пакет не может возвращать никаких значений, кроме состояния ошибки и описания ошибки, которые могут быть обработаны на родительской стороне. Существует неофициальный способ установить переменную родительского пакета из дочернего элемента.
  • Родительский пакет может выполнять дочерний процесс либо в своем собственном процессе (называемом exec-inec-exec ), либо в отдельном процессе (называемом exec-process-exec ).

Я использую эту схему пакета Parent-Child для сложных задач ETL / ELT. Дочерние пакеты делают ETL; Родительский - организуйте и запустите дочерние пакеты, но не выполняйте задачи ETL самостоятельно.

В SSIS 2016+ вы можете использовать так называемые части пакета служб SSIS, которые представляют собой фрагменты кода, включенные в основной пакет. Опять же, существует хакерский способ изменить переменные основного пакета из части пакета - создать переменную в части с тем же именем, что и в основном пакете, а затем - вручную установить область действия переменной для основного пакета. См. больше вариантов использования деталей пакета.

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