Есть ли способ игнорировать ошибки отображения в SSIS? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть поток данных в SSIS, который использует ODB C Source для условного разделения.

Источник возвращает динамический c набор столбцов в зависимости от доступности данных в источнике - количество столбцов изменяется от 1 до 13.

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

Пример:

Условие 1 -> Сопоставить столбец 1 со столбцом 1 и игнорировать другие 12 столбцов Условие 2 - > Сопоставить столбцы 1 и 2 со столбцами 1 и 2 и игнорировать остальные 11 столбцов

Однако, если источник содержит только 1 столбец, он не выполняется по второму условию, поскольку «на этом пути есть некоторые ошибки отображения»

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

Есть ли способ игнорировать ошибку отображения или заставить SSIS остановиться в последнем исполняемом случае в моем условном разбиении?

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

Есть мысли?

1 Ответ

2 голосов
/ 16 апреля 2020

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

Но вы должны быть в состоянии справиться с этим с 12 потоками данных.

Выполнить SQL Задача -> Однако ваш текущий источник ODB C генерирует переменный набор столбцов, определите, сколько из них возвращается. Присвойте это переменной SSIS @[User::ColumnCount]

Присоедините 12 выходных путей из задачи «Выполнение» SQL к пользовательским задачам потока данных, учитывающим количество исходных столбцов.

Изменение ограничения приоритета на каждом из путей, которые будут Constraint and Expression с такими выражениями, как @[User::ColumnCount]==1 ... ==13

Разработчик служб SSIS попытается проверить метаданные при разработке пакета. Как и механизм исполнения при запуске пакета. Поэтому вам необходимо установить для свойства Delay Validation значение True для каждой из задач потока данных после того, как вы завершите sh их проектирование.

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

...