2016-09-12 2 views
0

Я новичок в SSIS, и я полностью застрял с легким вопросом. У меня есть две таблицы с отношением «один ко многим». Я анализирую данные HTML в компоненте Script и создаю два выхода для записей основных данных и деталей. enter image description hereSSIS: Как хранить записи основных данных по условию?

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

+0

Какое условие и как оно определяется, если вы должны написать основные данные? В зависимости от того, может ли это условие быть перемещено до задачи сценария или задано в задаче сценария, вы можете просто использовать ограничение с ограничением выражения. для этого в скрипте добавьте переменную пакета, которую вы можете установить значение в скрипте, а затем проверить его значение в ограничении. – Matt

+0

Привет @Matt! Условие здесь только для иллюстрации проблемы. Реальная структура сложнее. Но спасибо за советы! –

ответ

0

ребята! В конце концов мне удалось решить проблему. Я разделил весь процесс на два потока данных. В первом я разбираю html, сохраняю основные данные в таблице, если это необходимо, и сохраняю детализированные подробные данные в переменной Object объекта. Кроме того, первый поток данных имеет компонент Row Count, который сохраняет его значение в переменной MasterRowCount. Во втором потоке данных я сохраняю подробные данные в таблице. Первый и второй потоки данных связаны с ограничением, ограниченным выражением (@MasterRowCount> 0). Таким образом, второй поток данных выполняется только при добавлении основных данных.

1

У меня такая же проблема, когда мы загружаем данные XML в родительские дочерние таблицы. Для этого я добавил две задачи потока данных в пакете. В первом DFT я проанализировал XML и загружал данные только в основную таблицу. Во втором DFT я проанализировал данные дочерних XML-узлов и передал этот вывод для объединения оператора объединения (первый ввод). Теперь нам нужно передать второй вход для операции merge join, для которого у меня есть данные из основной таблицы.

Master table insertion -

Child table insertion -

+0

Спасибо, @BhatiaAshish! –

+0

У меня появилась идея. Мне не нравится, что XML будет анализироваться два раза. В моем случае источником является удаленная веб-страница. Но я подумаю, как его преодолеть. Может быть передано узлы html между потоками данных в виде переменной Object. –

Смежные вопросы