Последовательная обработка элементов в SSIS - PullRequest
0 голосов
/ 25 октября 2011

В плоском файле мы имеем этот тип записи:

ID, операция, данные

Операции включают D = Удалить, U = Обновить, I = Вставить

1, D, Тест

Проблема в том, что они отправляют один и тот же идентификатор в файле несколько раз, и идентификатор может находиться в любом месте файла:

Например:

1, D, Тест

1000 записей позже ....

1, I, Тестирование

6000 записей позже ....

1,D, Тестирование

В нашем пакете служб SSIS имеется условное разделение, которое направляет или разделяет поток данных в зависимости от операции, удаления и обновления.Проблема в SSIS заключается в том, что он не является последовательным при обработке строк (что очень важно для производительности), и удаление может произойти после вставки или наоборот, что приводит к неверным данным.

Как лучше всегоЧтобы справиться с этим?

Некоторые идеи, которые мы придумали:

Скопируйте файл во временную таблицу и добавьте идентификатор строки файла, добавленный к записи, затем последовательно просматривайте записив SQL Server с помощью курсора (порядок по номеру строки файла).

Используйте контейнер ForEach и последовательно просматривайте каждую запись в SSIS

Сортируйте файл по идентификаторам и затем выберите «последний»Обновление.

Разбейте несколько операций на отдельные файлы.Например, если запись имеет три обновления, OriginalFile станет File1, File2, File3, а затем запустит файлы по порядку через SSIS.

Не все записи такие.Похоже, что мы предоставляем нам историю транзакций, а не последнее обновление.

Спасибо.

1 Ответ

1 голос
/ 25 октября 2011

Исходя из личного опыта, я обнаружил, что загрузка данных транзакции во временную таблицу перед обработкой является наиболее эффективным способом обработки данных транзакции из плоского файла.Оттуда это зависит от того, как вы хотите сохранить исторические данные транзакции.Лично моя компания хочет видеть, когда продукт будет добавлен, последнее обновление продукта, когда он будет окончательно отправлен и когда продукт будет получен покупателем.Поэтому загрузка данных транзакции во временную таблицу для получения именно того, что они хотят, работает для меня.

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