Я попытаюсь немного прояснить это.
Прежде всего, использование Update Strategy
в отображении требует, чтобы свойство сеанса Treat source rows as
было установлено на Data driven
.Это самый медленный вариант, так как он будет устанавливаться построчно в пределах отображения - но это именно то, что вам нужно, если использовать преобразование Update Strategy
.Поэтому для того, чтобы отразить MERGE, вам нужно его удалить.
И скажите сеансу, чтобы он больше не ожидал этого в отображении - поэтому необходимо установить для свойства одно из оставшихся.Есть два варианта:
- установить
Treat source rows as
на Insert
- это означает, что все строки будут вставляться каждый раз.Если нет ошибок (например, вызванных уникальным индексом), данные будут умножены.Чтобы имитировать поведение MERGE, вам нужно добавить уникальный индекс, который будет препятствовать вставкам, и сообщить целевому соединителю insert else update
.Таким образом, в случае сбоя вставки будет предпринята попытка обновления. - установите
Treat source rows as
на Update
- теперь это скажет PowerCenter попробовать обновления для каждой строки ввода.Теперь использование update else insert
приведет к тому, что в случае сбоя (т. Е. Нет строки для обновления) не будет ошибки - вместо этого будет предпринята попытка вставки.Здесь нет необходимости в уникальном индексе.Это одно отличие.
Дополнительное отличие - хотя оба решения будут отражать операцию MERGE - может наблюдаться в производительности.В среде, где новые данные очень редки, первый подход будет медленным: каждый раз, когда будет предпринята попытка вставки, просто произойдет сбой и затем выполните операцию обновления.Всего несколько раз это удастся с первой попытки.Второй подход будет более быстрым: обновления будут успешными в большинстве случаев, и только в редких случаях они будут неудачными и приведут к операции вставки.
Конечно, если обновления не часто ожидаются, все будет с точностью до наоборот.
Это можно рассматривать как сложное решение для простого слияния.Но это также позволяет разработчику влиять на производительность.
Надеюсь, это проливает свет!