¿Hay alguna manera de ejecutar código T-SQL dentro de un flujo de datos en SSIS?
-
10-07-2019 - |
Pregunta
Fondo
Tengo una tabla de dimensiones que tiene un único registro para cada día. Cada registro tiene una clave principal, por lo que los datos de ejemplo serían:
Dimension Table --------------- --------------------------------- | ID | DateTime | --------------------------------- | 1083 | 04/10/2008 10:02:00 PM | ---------------------------------
Lo que intento hacer es tomar mi columna de datos de origen que tiene un valor de fecha y hora SQL (como 04/10/2008 10:02:00 PM
) y hacer que SSIS derive lo que el primario La clave de la tabla de dimensiones debe ser ( 1083
en el ejemplo anterior). Estoy tratando de adaptar esto al flujo de datos dentro de mi paquete y evitar el uso de tablas de preparación.
Me gustaría llamar a una función de base de datos durante mi flujo de datos para que mi paquete SSIS descubra el timeid
para un registro datetime
. He intentado usar DeriveColumn
pero eso no parece permitir el uso de T-SQL; más bien solo funciones integradas en ANSI SQL.
Pregunta
¿Hay otra forma de hacer esto dentro del flujo de datos? ¿O tendré que usar tablas de preparación y usar un SQLTask
fuera del flujo de datos para manipular mis datos?
Solución
Si te entiendo, tienes un data mart con una dimensión de tiempo, y necesitas obtener el timeId que corresponde a un momento en particular.
Si eso es correcto, entonces desea utilizar un componente de búsqueda. Para la tabla de referencia, use algo como SELECT timeId, timeStamp FROM TimeDimension
, luego busque en la columna de entrada que contiene la marca de tiempo. Use el timeId como la columna de salida, y ahora cada fila en su flujo de datos tendrá el timeId que corresponde a su marca de tiempo.