Поиск не подходит для этого - с кэшированием и всем остальным, он просто не может найти ранее установленные значения.
Возможно, вам лучше передать его в задачу «Команда SQL», и сохраненный процесс сделает вставку или истечет / вставит в зависимости от того, что он найдет.
Вы также можете передавать их на стол и делать это в пакетном режиме.
Чтобы обратиться к вашему потоку и модели, которую он пытается заполнить:
Для начала, всегда неудобно, когда порядок строк во входных данных вызывает поведенческие различия - то есть NK = A, Val = 1, затем NK = A, Val = 2, поведение отличается от NK = A, Val = 2, а затем NK = A, Val = 1. Следует задаться вопросом, правильный ли это размерный дизайн. Помните, что все атрибуты измерений присваиваются таблицам измерений на основе прагматического выбора. В конечном итоге размеры могут быть организованы в таблицы по желанию, поэтому другой дизайн может иметь больше смысла. Если что-то меняется в пределах одной загрузки, это может указывать на то, что вам нужно разбить эту загрузку, чтобы соответствовать размеру (не пытаясь загрузить данные за 2 дня за один раз).
Я заметил, что в вашем измерении есть Дата вступления в силу и Дата окончания. Прямо сейчас это звучит во многом как свойство поведения измерения (где ваши коды 01 и 02 меняются на NK), а не фактов, к которым это измерение будет прикреплено. Это может означать, что его нужно отслеживать в отдельной таблице фактов, скажем (SK, EffectiveDate, EndDate), или что это просто не важно, потому что все, что вас волнует, это комбинация NK, 01, 02, присоединенная к факту, в этом случае ваш естественный ключ - это все NK, 01, 02.
Я рекомендую вернуться к вашей таблице фактов, к входящему каналу и ожидаемому использованию, и более внимательно посмотреть на него и посмотреть, может ли это быть отдельной таблицей фактов, отслеживающей эти изменения измерения.
Кроме того, если бы вы могли опубликовать больше деталей, это могло бы помочь, и я посмотрю, что материалы Кимбалла скажут об этом, когда я увижу больше бизнес-кейса.