Как отправить данные из источника OLE DB в таблицы моделей привязки с помощью процедуры ETL?
В настоящее время я решаю эту задачу: некоторые данные должны быть отправлены из AdventureWorks2012 в таблицы моделей Anchor на том же сервере в MsSQL. Это моя модель якоря
На данный момент у меня есть довольно простой проект служб Integration Services в Visual Studio, и он выглядит следующим образом. Контроль потока:
Например, Load_territories:
Основным требованием является заполнение всех таблиц таблиц модели Anchor в MsSQL, но я постоянно сталкиваюсь с проблемой: количество атрибутов в таблицах различно, и некоторые из них повторяются. На этом рисунке во второй таблице в основном TR_ID,TR_GRP_TR_ID, TR_TID_TR_ID TR_TNM_TR_ID содержит те же значения из dwh_key, но невозможно создать отношение один-ко-многим между атрибутами. Мой репетитор рекомендовал мне использовать Lookup, но я не могу понять, как реализовать их в этом проекте
1 ответ
Это может рассматриваться как мошенничество, но если вы вставляете данные в последнее представление, а не в отдельные таблицы 6NF, все эти поля идентификаторов будут заполняться базовой логикой триггера. Я подозреваю, что это противоречило бы цели использования SSIS, поскольку вы эффективно загружали бы атрибуты последовательно, а не параллельно.
Другой вариант - оставить управление суррогатными ключами для инструмента ETL. Это потребует, чтобы вы переключили тип данных для ваших идентификаторов с целых чисел на GUID:s. Затем SSIS может сгенерировать GUID, и вы можете использовать тот же GUID для заполнения всех атрибутов. Обратите внимание, что якорь должен быть загружен первым, иначе вы получите нарушение внешнего ключа.
Однако наиболее распространенное решение - оставить управление суррогатными ключами в базе данных (и использовать целые числа). У вас будет шаг, в котором вы будете заполнять столбец метаданных в привязке требуемым количеством новых идентификаторов, которые будут созданы. Используя номер метаданных, вы можете затем выбрать вновь созданные идентификаторы и объединить их с вашим потоком данных. Неважно, какой номер присваивается какой строке. После этого все атрибуты могут быть заполнены параллельно, включая столбцы идентификаторов.
Конечно, если это предназначено для более чем начальной загрузки, вам также необходимо добавить шаги, чтобы определить, известны ли загружаемые вами данные или нет.
Я также могу порекомендовать посмотреть видеоурок, на который есть ссылки в этом блоге: https://clinthuijbers.wordpress.com/2013/06/14/ssis-anchor-modeling-example-tutorial/