Аз съм доста нов в SSIS
и BI като цяло, така че преди всичко съжалявам, ако това е въпрос за начинаещ.
Имам моите изходни данни за таблицата с факти в csv, така че искам да съпоставя идентификаторите със сурогатните ключове в справочните таблици.
Структурата на данните в csv е такава
... userId, OriginStationId, DestinyStationId,..
Това, което се опитвам да постигна, е да съпоставя данните с моята справочна таблица. Така че това, което правя, е
- Четене на данни за търсене с помощта на OLE DB източник
- Четене на моя csv файл
- Сортиране на двата входа по едно и също поле
- Извършване на ляво присъединяване по Id, за да получите SK
По този начин, ако няма съвпадение (известен още като не мога да намеря сурогатния ключ), мога да го пренасоча към отхвърлен csv и да го обработвам по-късно.
нещо като това:
(съжалявам за испанския!)
Правя това за всяко измерение, така че мога да се справя с всяко едно с различни кодове за грешка.
Тъй като OriginStationId
и DestinyStationId
са две стойности от едно и също измерение (и двете съвпадат с една и съща справочна таблица), исках да знам дали има начин да избегна четенето на два пъти данните от таблицата (имам предвид да не използвам две ole db източници за четене два пъти на данните от една и съща таблица).
Опитах се да добавя втори изход към сортирането, но не ми е позволено. Същото важи и за добавянето на друг изход от OLE DB Source
.
Виждам, че има "опция за кеширане", най-добрият начин ли е? (Въпреки че би означавало създаването на друг OLE DB source
.. нали?)
Третата опция, за която се сетих, беше обединяването чрез двете полета, но тъй като има само едно поле в справочната таблица (същото поле), получавам грешка, когато се опитвам да съпоставя двете колони от моя csv срещу една и съща колона в моя Таблица за справки
Има липсващи колони с ред на сортиране 2 към 2
Какъв е най-добрият начин за това? Или си мисля нещо грешно? Ако нещо не е ясно, уведомете ме и ще актуализирам въпроса си