MDS Staging с автоматическим созданием кодов - PullRequest
0 голосов
/ 27 февраля 2019

каждый!

Мы используем MS SQL Master Data Services для организации основных данных нашего предприятия, и некоторые объекты, которые мы сохраняем, состоят из данных, которые мы загружаем из внешних источников практически как есть.Мы регулярно обновляем их, используя задания или пакеты служб SSIS, помещая данные в промежуточные таблицы ([stg].[<name>_Leaf]) и запуская процесс подготовки, используя процедуры, названные [stg].[udp_<name>_Leaf], как описано в THIS и THIS разделы о процессе подготовки в MDS.

Иногда данные, которые мы импортируем из какого-либо внешнего источника, представляются в виде плоской таблицы, просто содержащей набор строк, на которые мы можем ссылаться в других наших таблицах изатем мы загружаем их и наслаждаемся (на самом деле мы помещаем данные в промежуточные таблицы, вызываем SP и позволяем MDS обрабатывать их в любое удобное для сервера время, поскольку основная нагрузка промежуточного процесса выполняется асинхронно через посредник).

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

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

Как я вижу, мы могли бы решить эту проблему, если бы могли ссылаться на промежуточный элемент по идентификатору промежуточной таблицы, который является IDENTITY и назначается сразу после вставки.

-OR-

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

В настоящее время мы используем глупый не очень элегантный обходной путь, генерируя GUID и используя их в качестве значения кода, когда этот сценарий имеет место.

Кто-нибудь может предложить что-нибудь еще?(

1 Ответ

0 голосов
/ 02 мая 2019

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

Далее при загрузке дочернего элементазаписи в промежуточный лист поиска родительского кода с использованием представления подписки родительского объекта.

При использовании автоматического создания кодов я рекомендую начинать с 10000 или 100000, поскольку Excel сортирует коды в виде строк.

...