Загрузить таблицу из источника OLE DB и заменить дублирующиеся уникальные значения - PullRequest
3 голосов
/ 16 марта 2019

Я разрабатываю пакет служб SSIS, который будет загружать «операционную» таблицу из «скользящей» таблицы.Скользящее значение может иметь повторяющиеся значения, так как мы хотим отслеживать все записи, но в операционной таблице должна быть только одна строка для каждой комбинации товара / завода (строка).То, что я хотел бы сделать, - это каким-то образом заменить любые входящие повторяющиеся значения на самую новую запись, а затем загрузить любую оставшуюся полностью новую строку - так что, если входящая загрузка содержит строку «String», которая уже существует в месте назначения, удалите эту старую записьи вставьте более новую запись.Для справки исходная таблица и таблица назначения имеют одинаковые столбцы, за исключением того, что в скользящей таблице есть «запись #», чтобы дать ей первичный ключ.поля:

Строка (комбинированная статья / завод) Дата записи Кол-во Завод

1 Ответ

3 голосов
/ 16 марта 2019

Дизайн для этого будет выглядеть следующим образом:

У вас будет 4 таблицы и 1 представление: Source, TMP_Dest (точно как источник без PK), CHG_Dest (для изменений, точно как пункт назначения без PK), Dest (будет иметь PK), FV_TMP_Dest (это в том случае, если место назначения отличается от источника - разные типы полей)

Пакет служб SSIS:

1.Используйте ExecuteSQLTask и обрежьте TMP_Dest, потому чтоэто просто временно для извлеченных данных

Используйте ExecuteSQlTask ​​и обрезайте CHG_Dest, потому что он является временным для извлеченных данных

Используйте один DataFlowTask для загрузки данных из источника в TMP_Dest

Определите две переменные OperationIDInsert = 1 и OperationIDUpdate = 2 (значения не важны, вы можете установить их по своему желанию) -> вы будете использовать их в 5. точке ниже

Используйте другую DataFlowTask, в которой у вас будет:

  • на левой стороне Источник OLE DB, в котором вы будете извлекать данные из представления, упорядоченного PK (не забудьте установитьSortKeyPosition из расширенного редактора для полей PK)

  • с правой стороны Источник OLE DB, в который вы будете извлекать данные из Dest, упорядоченного PK (не забудьте установить SortKeyPosition из AdvancedРедактор для полей PK)

  • LEFT JOIN между этим

  • на левой стороне («сторона вставки») у вас будет: производноеколонка, в которой выназначит в качестве выражения переменную OperationIDInsert И пункт назначения OLE DB для вставки данных в таблицу CHG_Dest.Таким образом, вы вставите данные, которые должны быть вставлены в таблицу назначения, и вы это знаете, потому что у вас есть столбец OperationIDInsert.

  • справа вы сделаете то же самоено с использованием столбца OperationIDUpdate

Вы будете использовать ExecuteSQLTask в ControlFlow и получите слияние SQL.На основании полей PK и полей OperationIDInsert / OperationIDUpdate вы либо вставите данные, либо обновите их.

Надеюсь, это поможет вам.Дайте мне знать, если вам нужна дополнительная информация.

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