2011-11-23 22 views
6

Estoy haciendo algo de ETL en SSIS para crear algunos conjuntos de datos dimensionales. Una de estas es una cita. Al generar un conjunto de fechas para la dimensión, puedo usar una búsqueda contra lo que ya está en la dimensión de fecha y redireccionar a cualquiera que falle, que se supone son nuevas fechas y luego se agregan a la tabla.Filtrar duplicados de un conjunto de datos cargado en SSIS

El problema es que el conjunto de datos que tengo puede contener fechas duplicadas. Esto causará errores con claves de fecha únicas al insertar en la tabla de dimensiones. Así que estoy buscando una forma de filtrar dentro del conjunto de datos que se carga en la tubería de SSIS.

Podría utilizar DISTINCT en la carga inicial de la fecha pero la fecha en este caso es DATETIME. Necesito usar una transformación de conversión de datos más tarde para convertir esto en una FECHA simplemente tomando el componente de fecha. Estoy buscando días únicos y una diferencia en DATETIME no me dará eso.

No puedo usar la búsqueda de SSIS como lo hice antes, ya que eso requiere un administrador de conexión que apunta a una base de datos.

Podría decir al destino de OLE DB que no utilice la inserción masiva ignore los errores. Sin embargo, esto supone que los únicos errores serán fechas duplicadas.

Soy bastante nuevo en SSIS y no he podido encontrar una herramienta de transformación que me permita compararla con otras filas del conjunto.

+0

¿Tiene acceso a los índices que hacen ¿llave? Si es así, puede habilitar la opción 'IGNORE_DUP_KEY' que simplemente descartará las inserciones duplicadas en lugar de generar un error. – JNK

+1

Cuando almacena la fecha y hora, ¿el componente de hora se ha reducido a cero o se ha forzado a un valor común? Dado '2011-10-10 00: 00: 00.000' y' 2011-10-10 12: 12: 12.012', el proceso solo debe enviar una fila 2011-10-10. ¿Importa cuál se selecciona? ¿Podemos soltar el componente de tiempo? – billinkc

Respuesta

7

Puede utilizar una Transformación de ordenamiento y seleccionar eliminar duplicados, o puede usar la transformación Agregado y solo usar grupo por (que será más o menos como DISTINCT). Tenga en cuenta que estas operaciones son asincrónicas, lo que significa que todas las filas deben ingresar a esta tarea antes de continuar, en lugar de sincronizar las tareas que solo come y escupe buffers de filas a medida que ingresan.

Cuestiones relacionadas