REQUISITOS PREVIOS
1. Visual Studio 2019 o 2022 (versión Community sirve).
2. Extensión de SSIS instalada (Integration Services Extension).
3. SQL Server (local o remoto) y SQL Server Management Studio (SSMS).
4. Una fuente de datos (como un archivo Excel, CSV o una base externa).
5. Una base de datos destino en SQL Server.
PASOS PARA CREAR UN ETL EN VISUAL STUDIO
1. Crear un Proyecto SSIS en Visual Studio
Abre Visual Studio.
Archivo > Nuevo > Proyecto.
Busca Integration Services Project y selecciona.
Dale un nombre (ej. ETL_Papelería) y crea el proyecto.
2. Diseñar el flujo ETL
En el panel "Control Flow", arrastra un componente llamado Data Flow Task.
Haz doble clic para entrar al "Data Flow".
DENTRO DEL DATA FLOW
3. EXTRACT (Extraer datos)
Usa Excel Source o Flat File Source si vienes de archivo CSV o Excel.
Configura la ruta al archivo y selecciona la hoja o columnas.
4. TRANSFORM (Transformar)
Usa componentes como:
o Derived Column: para crear o modificar columnas.
1. Agregar el nombre de la nueva columna
En la columna "Derived Column Name", haz clic y escribe:
Mes
2. Indicar que es una columna nueva
En la columna "Derived Column", selecciona:
Add as new column
(Esto debe estar seleccionado por defecto si escribiste un nuevo nombre).
3. Escribir la expresión
En la columna "Expression", escribe el siguiente valor:
"Julio"
(Sí, con comillas dobles, porque es un texto literal).
4. Validar tipo de dato
El tipo debe decir string o DT_WSTR. Esto se autocompleta cuando pongas la
expresión "Julio".
5. Aceptar
Da clic en OK.
Resultado:
Ya tienes una nueva columna Mes en cada fila, con el valor "Julio".
Puedes repetir este proceso para agregar otras columnas como "Año", "Categoría",
etc., usando expresiones como:
"2025" → Año fijo
"Papelería" → Categoría fija
o Data Conversion: para cambiar tipos de datos.
1. Agregar el componente "Data Conversion"
Desde la caja de herramientas a la izquierda, arrastra el componente
"Conversión de datos" al área de trabajo en tu Flujo de datos.
2. Conectar el componente
Arrastra la flecha verde desde el último componente anterior (por ejemplo,
Columna derivada o Origen de Excel) hacia el componente de "Data
Conversion".
3. Abrir la configuración
Haz doble clic sobre el componente "Data Conversion".
4. CONFIGURAR LA CONVERSIÓN
Te aparecerá una lista con las columnas disponibles y sus tipos
actuales.
Por ejemplo:
Tienes una columna llamada PrecioUnitario que viene como texto
(DT_WSTR) y la quieres convertir a decimal (DT_NUMERIC o
DT_R8).
Haz lo siguiente:
1. Marca la casilla de la columna que deseas convertir (ej. PrecioUnitario).
2. En la columna "Output Alias", puedes poner un nuevo nombre como:
PrecioUnitario_Convertido
3. En la columna "Data Type", haz clic y selecciona el tipo deseado, como:
o DT_I4 → Entero
o DT_R8 → Decimal
o DT_DATE → Fecha
o DT_STR → Cadena fija
o DT_WSTR → Cadena Unicode
4. Ajusta si lo pide el Length, Precision y Scale:
o Decimal típico: Precision = 10, Scale = 2
o Cadena: Length = 50 o lo que necesites
5. Guardar y continuar
Da clic en OK.
¿Y luego?
Ahora puedes usar la columna convertida (PrecioUnitario_Convertido) en
el paso siguiente (por ejemplo, para cargarla en SQL Server).
En el mapeo del OLE DB Destination, seleccionas la columna convertida y
la relacionas con la columna destino.
o Conditional Split: para separar según condiciones (ej. ingresos mayores a $1000).
1. Agrega el componente al flujo
Desde la caja de herramientas (izquierda), arrastra "División condicional"
(Conditional Split) al área de trabajo en el Flujo de datos.
2. Conecta el componente anterior
Conecta la flecha verde desde el paso anterior (como Data Conversion) hacia el
nuevo componente "Conditional Split".
3. Configura el "Conditional Split"
Haz doble clic sobre el componente para abrir el editor.
Dentro del editor:
En "Condition", escribe una expresión de tipo lógica.
Por ejemplo:
sql
[Ingresos] > 1000
En "Output Name", pon un nombre para este grupo.
Ejemplo:
IngresosAltos
Puedes agregar otra condición:
sql
[Ingresos] <= 1000
Con nombre:
IngresosBajos
Puedes dejar una ruta por defecto, llamada "Default Output" (para los que no
cumplen ninguna condición anterior).
4. Conecta las salidas condicionales
Después de cerrar el editor:
Verás varias líneas de salida del componente, una por cada condición que pusiste.
Puedes conectar cada salida a distintos destinos (ej. tablas diferentes o archivos
distintos).
EJEMPLO REAL
Supón que tienes una columna llamada VentasMensuales.
Configuras:
Output Name Condition
ClientesPremium [VentasMensuales] > 10000
ClientesRegulares [VentasMensuales] <= 10000
Y luego conectas cada salida a una tabla distinta:
ClientesPremium → tabla ClientesVIP
ClientesRegulares → tabla ClientesBase
¿Cuándo usarlo?
Para separar registros por segmentos (VIP vs normal).
Para hacer rutas de limpieza (ej. cuando un valor está vacío).
Para dividir datos por categoría, estado, tipo, etc.
o Lookup: para relacionar datos con otra tabla.
¿Qué hace el componente Lookup?
Relaciona una columna de tu flujo de datos con otra fuente externa (tabla SQL,
archivo, etc.) para:
Obtener información adicional (descripciones, códigos, rangos).
Validar o traducir valores (por ejemplo, obtener el nombre de un cliente a
partir de su ID).
EJEMPLO:
Tienes una columna IdProducto en tu archivo Excel, y en SQL Server hay una tabla
Productos con:
IdProducto NombreProducto
1 Cuaderno A5
2 Lápiz HB
Con Lookup, puedes agregar la columna NombreProducto a tu flujo de datos según
coincida el IdProducto.
PASO A PASO PARA USAR LOOKUP EN SSIS
1. Agrega el componente "Lookup"
Desde la caja de herramientas, arrastra "Búsqueda" (Lookup) al flujo de
datos.
2. Conecta el flujo
Conecta la flecha verde desde el componente anterior (por ejemplo,
Origen de Excel o Columna Derivada) hacia el componente Lookup.
3. Configura el Lookup
Haz doble clic sobre el componente para abrir el editor.
PASO 1: Conexión a la tabla de referencia
En la pestaña General, selecciona "Use results of a query".
Haz clic en Nueva... para crear o seleccionar una conexión OLE DB (a tu SQL
Server).
En el campo de abajo, escribe una consulta SQL o selecciona la tabla con la
que harás la búsqueda.
Por ejemplo:
sql
SELECT IdProducto, NombreProducto FROM Productos
PASO 2: Vincular columnas
Ve a la pestaña "Columns":
1. En el panel izquierdo están las columnas del flujo de datos (las que vienen
de Excel).
2. En el panel derecho están las columnas de la tabla de búsqueda.
Conecta por ejemplo:
Columna origen: IdProducto
Columna búsqueda: IdProducto
Esto funciona como un JOIN interno.
PASO 3: Seleccionar columnas a retornar
Marca las columnas que quieres agregar al flujo de datos, por ejemplo:
NombreProducto
SSIS agregará esta columna al flujo, como si fuera una nueva columna.
4. Finaliza y acepta
Haz clic en OK.
Verás que el componente Lookup ya está conectado y pasa datos
enriquecidos con lo que recuperaste de la tabla.
¿Qué pasa si no encuentra coincidencia?
SSIS por defecto lanza un error si no hay coincidencia, pero puedes
cambiarlo:
Clic derecho en el Lookup → Mostrar salida de error.
Usa una salida alternativa (por ejemplo, para guardar los que fallan en otra
tabla o archivo).
O marca la opción "Ignore failure" para continuar sin error.
¿Dónde se usa el Lookup?
Para agregar descripciones o nombres a códigos.
Para validar si existe un valor en una tabla.
Para hacer conversiones entre claves internas y externas.
Para aplicar reglas de negocio basadas en otras fuentes.
5. LOAD (Cargar datos en SQL Server)
Paso 1: Insertar el componente OLE DB Destination
1. Ve al "Cuadro de herramientas" en el panel izquierdo.
2. Busca el componente “Destino de OLE DB” (puede decir “OLE DB Destination”).
3. Arrástralo al lienzo del Flujo de datos.
Paso 2: Conectar con el flujo anterior
1. Desde el último componente (por ejemplo, Data Conversion, Derived Column, o Lookup),
arrastra la flecha verde hasta el componente OLE DB Destination.
2. Eso conecta el flujo de datos con el destino.
Paso 3: Configurar la conexión a SQL Server
1. Haz doble clic en el componente OLE DB Destination.
2. Aparecerá una ventana para configurarlo.
3. En el campo OLE DB Connection Manager, haz clic en "Nuevo...".
Se abrirá el editor de conexión:
o Nombre del servidor: escribe el nombre de tu servidor SQL (puede ser localhost, .\
SQLEXPRESS, o IP).
o Autenticación: elige entre:
Windows Authentication (si usas tu cuenta de Windows).
SQL Server Authentication (si tienes usuario y contraseña).
o Base de datos: selecciona la base de datos donde quieres cargar los datos.
4. Haz clic en Test Connection → debe decir “Test succeeded”.
Si funciona, haz clic en OK para cerrar la ventana de conexión.
Paso 4: Elegir la tabla de destino
Una vez tengas la conexión establecida:
1. En el campo Name of the table or the view, puedes:
o Seleccionar una tabla existente.
o O hacer clic en "New..." para crear una tabla nueva automáticamente según el
esquema de tu flujo.
Si haces clic en "New...":
Aparecerá un script SQL con las columnas y tipos sugeridos (basado en los datos de
entrada).
Puedes editar el nombre de la tabla.
Haz clic en OK para que SSIS cree la tabla por ti.
Paso 5: Mapear columnas
Ve a la pestaña "Mapeo de columnas" (Column Mappings):
1. Revisa que cada columna de entrada esté conectada a su columna de destino.
o Si los nombres no coinciden, puedes arrastrar uno a otro.
2. Verifica que no haya advertencias o columnas sin destino.
Paso 6: Guardar y ejecutar
1. Haz clic en OK para cerrar la configuración del destino.
2. Guarda tu proyecto (Ctrl + S).
3. En la parte superior, haz clic en "Iniciar" o botón verde ▶ para ejecutar el paquete.
Validar resultados
1. Abre SQL Server Management Studio (SSMS).
2. Ejecuta:
sql
SELECT TOP 10 * FROM dbo.Casos;