Archivo de la categoría: SSIS

03 Manual SSIS – Columnas Derivadas

Una de las transformaciones más útiles es la creación de columnas derivadas «Derived Column».

Una columna derivada no es más un nueva columna que añadimos a nuestro Flujo de trabajo y que podremos generar con un valor predefino o en base a un determinado cálculo con los valores de entrada.

Para explicar su funcionamiento y posibilidades partiremos de un nuevo proyecto SSIS en el que añadiremos un «Data Flow Task» con un flujo básico como el siguiente.

Data Flow Task

Si hacemos clic sobre «Derived Colum» podremos acceder a sus propiedades.

El parte superior izquierda tenemos acceso a las variables internas de SSIS, así como a los campos que obtenemos con «Ole DB Source».

Derived Column 01

Para realizar alguna operación con estos elementos debemos arrastrarlos hasta el Grid situado en la parte interior de la pantalla quedando así:

Derived Column 02

En la sección derecha tenemos agrupadas todas la operaciones que podemos realizar siendo:

  1. Funciones matemáticas básicas.
  2. Funciones de cadenas.
  3. Funciones de fecha/hora.
  4. Comprobaciones de valores NULL en función del tipo de dato.
  5. Funciones de conversión de datos.
  6. Operadores.

En nuestro ejemplo realizaremos un substring del campo «LastName» partiendo de la base de que necesitamos los dos primeros caracteres de este campo. Por tanto, iremos a «String Functions» y arrastraremos la función SUBSTRING.

Substring

La completaremos con los siguientes valores:

SUBSTRING( [LastName], 1, 2 )

Partiendo de la base de que las cadenas en SSIS tienen base 1. Es decir, el primer carácter es el 1 y no el 0 como en otros sistemas.

Estas funciones de cadena (o de cualquier otro tipo) se pueden combinar. Si por ejemplo, queremos poner el resultado en mayúscula dejaríamos la expresión como:

UPPER(SUBSTRING( [LastName], 1, 2 ) )

Por último faltaría asignarle un nombre a nuestra columna derivada. Por ejemplo, «NewLastName».

Derived Column 03

No dejéis de revisar el resto de funciones aplicables a expresiones de columnas derivadas. Empleándolas de forma correcta nos darán muchísimo juego a la hora de crear nuestros paquetes SSIS.

02-Manual SSIS – Creación de un paquete básico

En esta ocasión veremos cómo desarrollar un paquete SSIS básico como una especie de «Hola mundo!» para adentranos en materia.

Supongamos que en nuestra compañía existen dos servidores de datos:

  1. Un servidor transacional con el detalle de cada una de las operaciones que se registran en nuestra empresa.
  2. Un servidor con información comercial que llegará a los distintos departamentos de nuestra empresa.

En este caso nuestro jefe nos pide que agrupemos una determinada información de ventas en base a una serie de criterios.

Para ello los pasos a seguir serían:

  1. Realizar una consulta que agrupe y filtre la información del servidor transacional en base a los requerimientos establecidos.
  2. Realizar un paquete SSIS que guarde la información en el servidor con la información comercial.

Una vez situados en nuestro contexto, iniciaremos nuestro primer paquete SSIS.

Para ello abriremos BIDS y haremos un nuevo proyecto de Integration Services.

Nuevo proyecto SSIS

Nuevo proyecto SSIS

Una vez generado el nuevo proyecto, veremos como la plantilla de proyecto de Visual Studio nos añade cuatro carpetas automáticamente y en la carpeta SSIS Packages tenemos un nuevo paquete SSIS vacío.

Como siempre a la izquierda tenemos todos los componentes que podremos emplear para crear nuestro paquete SSIS. El control más básico es «Data Flow Task» que nos permite definir un origen de datos, una transformación y un destino para almecenar el resultado de nuestras operaciones con los datos.

Data Flow Task

Para iniciar el proceso una vez creado nuestro componente Data Flow Task es hacer doble clic sobre el mismo y tendremos acceso a los siguientes componentes:

  1. Data Flow Sources.
  2. Data Flow Transformations
  3. Data Flow Destinations.

Data Flow Task

Esta disposición es realmente útil para entender el funcionamiento de este componente.

En cuanto a los orígenes de datos tenemos una amplia gama de posibilidades destacando:

  1. Ficheros de texto plano.
  2. Hojas de Excel.
  3. Orígenes OLEDB (Access, SQL Server, Oracle, ODBC, etc.)
  4. Ficheros XML.

Para nuestro caso vamos a emplear un origen ADO para conectarnos a un SQL Server que dispone de la base de datos de ejemplo AdventureWorks.

Por lo tanto añadimos el control «OleDB Source», hacemos doble clic sobre el mismo y configuramos la conexión y seleccionamos la tabla «Person.Person».

OleDB Source

Una vez definido el origen, podremos aplicar transformaciones en los datos que leeremos en el paso anterior. En este caso aplicaremos una transformación muy sencilla que es «Derived Colum» que permite añadir una nueva columna en nuestro Data Flow como resultado de una operación con los datos de origen.

Por tanto, arrastramos el componente «Derived Column» y lo conectamos con el «OleDB Source» tirando del conector Success (la flecha verde) que marcará el siguiente paso a ejecutar si el resultado de la lectura de datos ha finalizado sin errores. Estos conectores son extremadamente versátiles para que podamos definir el flujo del SSIS en caso de que se produzcan errores controlados o no.

Derived Column

En nuestro caso vamos a controlar si el campo «Title» de Person es nulo y en ese caso vamos a darle el valor «N/A» (Not Assigned) para guardarlo en nuestra tabla de destino. Para ello hacemos doble clic sobre el componente «Derived Column» para añadir el nuevo campo y la expresión que lo genera.

La expresión que debemos usar en este caso es:

ISNULL(Title) ? «N/A» : Title

En cuanto al nombre de la nueva columna podemos asignarle «TileModified» tal y como se muestra en la siguiente imagen.

Expresión Derived Column

Con esto ya podemos terminar nuestro paquete SSIS asignando un destino para este DataFlow. Por simplicidad, vamos a guardar el destino en una nueva tabla de SQL Server pero lógicamente SSIS nos da muchas más opciones. Por ejemplo,

  1. Fichero Excel.
  2. Fichero de texto.
  3. OleDB (Access, SQL Server, Oracle, ODBC, etc.).
  4. Cubos OLAP.

Arrastramos nuestro componente «OleDB Destination» y haciendo doble clic podemos seleccionar el destino de nuestra transformación.

OleDB DestinationOleDB Destination

Haciendo clic en «New» BIDS ya nos sugiere la creación de una nueva tabla con la estructura de nuestro DataFlow.

Create table destinationEn nuestro caso quitaremos la columna «TileModified» de la SQL de generación de la tabla de destino quedando así:

CREATE TABLE [PersonModified] (
[BusinessEntityID] int,
[PersonType] nvarchar(2),
[NameStyle] bit,
[Title] nvarchar(8),
[FirstName] nvarchar(50),
[MiddleName] nvarchar(50),
[LastName] nvarchar(50),
[Suffix] nvarchar(10),
[EmailPromotion] int,
[AdditionalContactInfo] ntext,
[Demographics] ntext,
[rowguid] uniqueidentifier,
[ModifiedDate] datetime
)

Con la tabla ya creada sólo nos queda seleccionar la opción Mapping para decirle a SSIS que en la columna de destino «Title» debe copiar el valor de la columna de origen «TitleModified».

OleDB Destination Mappings

Si pulsamos el botón ejecutar en Visual Studio se producirá el lanzamiento del paquete SSIS que realizará el copia de datos, terminando así la creación de nuestro primer SSIS.

DataFlow Result

Espero que la lectura os haya resultado amena!

01-Manual SSIS – SSIS, Visual Studio y Management Studio

Una vez explicado qué es SSIS es la hora de definir el flujo de trabajo habitual con él y las herramientas de trabajo disponibles.

Sevicio SSIS

Una vez instalado SQL Server veremos que se ha añadido un nuevo servicio de Windows SQL Server Integration Services 10.0 (en el caso de la versión 2008 de SQL Server). Como es de esperar este servicio tiene que estar iniciado para poder ejecutar paquetes SSIS.

SQL Server Integration Services 10.0

Servicio Windows de SQL Server Integration Services 10.0

SQL Server Management Studio

SQL Server Management Studio nos permitirá conectanos al servidor de Intregration Services y poderar administrar y ejecutar los paquetes SSIS. Para en la ventana Object Explorer, seleccionaremos Connect y haremos clic sobre el menú Integration Services.

Conectar SSIS

Conectar con SSIS

Una vez seleccionada escribimos el nombre del servidor SSIS (NO el nombre de la instanacia SQL Server).

Management Studio SSIS

SQL Server Management Studio conectado a un servidor SSIS

SQL Server Business Intelligence Development Studio (BDIS)

Por último, para el desarrollo de los paquetes SSIS usaremos Microsoft Visual Studio. La versión que necesitamos (la BDIS) forma parte de la instalación de SQL Sever y dispone de las plantillas de proyectos necesarias para el trabajo con SSIS.

SQL Server Business Intelligence Development Studio

SQL Server Business Intelligence Development Studio

00-Manual SSIS – Introducción

Este es el primer artículo de una pequeña serie sobre SQL Server Integration Services. Para introducirnos en la matería me gustaría dar una breve explicación de por qué existen herramientas como SSIS y qué nos aportan en nuestro trabajo.

¿Qué es un ETL?

SSIS es una herramienta que nos permite Extración, Transformación y Load (Carga) de datos situados en diferentes ubicaciones y/u orígenes (Oracle, MySQL, Access, Excel, Web Services, etc.). La ventaja que nos aporta usar una herramienta específica para estos casos, es que este proceso de carga estará mucho más optimizado a la par que será mucho más sencillo de definir. SSIS dispone de una serie de herramientas o componentes pensados para estas tareas y mediante unos sencillos clics los arrastraremos a marco de trabajo y definiremos un flujo para esa información.

Por poner un ejemplo, con SSIS podremos definir un proceso de carga en una base de datos centralizada de todos los clientes de una determinada franquicia, asumiendo que cada centro franquiciado está en una ubicación distinta y que tiene una base de datos (con cualquier motor) específica y local.

De cara a la puesta en producción de estos procesos de carga, tendremos la ventaja de poder automatizarlos mediante Jobs de SQL Server o bien invocarlos mediante scripts de consola de comandos.

Descripción de SSIS

La arquitectura de SSIS formada por los siguientes elementos:

  1. Paquete SSIS. Viene a ser el ejecutable que tiene todas las instrucciones de nuestra tarea ETL. Por supuesto no se trata de un archivo de binario compilado, sino que es un fichero XML que interpretará el motor de SSIS.
  2. Servidor de SSIS. Forma parte de la instalación de SQL Server. Se trata de un servicio Windows que se ejecuta por defecto al inicio del sistema.
  3. Cliente de SSIS. Se trata de SQL Management Studio. Permite la administración y ejecución de paquetes SSIS.
  4. Diseñador de paquetes SSIS. Se trata de BIDS, una extensión de Visual Studio 2008 con las plantillas específicas para proyectos SSIS.

Y por ahora nada más.

Espero que hayan quedados claros estos conceptos iniciales. En la siguiente entrega haremos nuestro primer paquete SSIS.