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