Есть ли способ выполнить код T-SQL внутри потока данных в SSIS? - PullRequest
3 голосов
/ 08 мая 2009

Фон

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

Dimension Table
---------------

---------------------------------
| ID   | DateTime               |
---------------------------------
| 1083 | 04/10/2008 10:02:00 PM |
---------------------------------

То, что я пытаюсь сделать, это взять мой столбец исходных данных, который имеет значение SQL datetime (например, 04/10/2008 10:02:00 PM), и заставить SSIS получить первичный ключ из таблицы измерений (1083 в приведенном выше примере ). Я пытаюсь вписать это в поток данных в моем пакете и избегать использования промежуточных таблиц.

Я хотел бы вызвать функцию базы данных во время моего потока данных, чтобы мой пакет служб SSIS обнаружил timeid для записи datetime. Я пытался использовать DeriveColumn, но это не позволяет использовать T-SQL; скорее только функции, которые встроены в ANSI SQL.

Вопрос

Есть ли другой способ сделать это внутри потока данных? Или мне нужно будет использовать промежуточные таблицы и использовать SQLTask вне потока данных для манипулирования моими данными?

1 Ответ

5 голосов
/ 08 мая 2009

Если я вас понимаю, у вас есть витрина данных с измерением времени, и вам нужно получить timeId, соответствующий определенному времени.

Если это правильно, то вы хотите использовать компонент Lookup. Для справочной таблицы используйте что-то вроде SELECT timeId, timeStamp FROM TimeDimension, затем посмотрите на входной столбец, который содержит метку времени. Используйте timeId в качестве выходного столбца, и теперь каждая строка в потоке данных будет иметь timeId, соответствующий его метке времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...