SSIS - Невозможно вставить повторяющийся ключ в объект 'dbo.FACT_TABLE'

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

На данный момент у меня есть этот пакет:

введите описание изображения здесь

Каждый объект поиска получает бизнес-ключ каждого измерения в моем хранилище данных.

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

[Загрузить в dbo_DimCI [144]] Ошибка: код ошибки служб SSIS DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: "Собственный клиент Microsoft SQL Server 11.0". Hresult: 0x80004005 Описание: "Оператор завершен". Доступна запись OLE DB. Источник: "Собственный клиент Microsoft SQL Server 11.0". Результат: 0x80004005 Описание: "Нарушение ограничения PRIMARY KEY" PK_FACT_FACT_TABLE ". Невозможно вставить повторяющийся ключ в объект" dbo.FACT_TABLE ". Значение дублирующегося ключа равно (337, 44, 3, 19). 4682, 12)."

Какие объекты мне нужно вставить в мой пакет, чтобы справиться с этой ошибкой?

1 ответ

Решение

Я считаю, что вы намерены загружать только дельты в каждой загрузке.

Это означает, что если запись уже существует в таблице фактов, то запись не должна быть вставлена ​​снова.

Вы можете достичь этого с помощью запроса слияния.

У меня нет примера для загрузки таблицы фактов, но я могу указать на пример поста, в котором говорится о загрузке таблицы 2 типа.

Проверьте эту ссылку: https://www.mssqltips.com/sqlservertip/2883/using-the-sql-server-merge-statement-to-process-type-2-slowly-changing-dimensions/

Вы должны иметь возможность использовать такое утверждение в своем пакете служб SSIS для обновления таблицы фактов.

С удовольствием отвечу на любые дополнительные вопросы.

Ура Нитин

Другие вопросы по тегам