jueves, 19 de enero de 2012

Expression Task para Integration Services en SQL 2012

Este artículo pertenece a la serie “Novedades de Integration Services en SQL 2012”. Puedes encontrar el índice de artículos al pie de este.

 

image

 

Entre las novedades en la versión de SQL 2012 de Integration Services se ha añadido una nueva tarea que podemos utilizar en el Control Flow

Expression Task

image

Permite la evaluación de expresiones y asignación de valores a parámetros y variables.

Vamos a ver dos ejemplos:


Supongamos que tenemos un parámetro CSVOrigen en nuestro paquete que nos informa de la ruta donde se encuentra un fichero CSV.

[$Package::CSVOrigen] = C:\RespositorioFicheros\CSVOrigen.csv

image


Durante la ejecución del paquete si surge algún error al leer del fichero, las filas erróneas debemos redirigirlas a la misma carpeta que el origen (C:\repositorioFicheros\). A través de la Expression Task vamos a extraer el directorio de la ruta del archivo a la variable RutaFicheros.


La siguiente expresión obtiene la carpeta de la ruta de origen almacenada en el parámetro CSVOrigen:

(LEFT( @[$Package::CSVOrigen] , LEN( @[$Package::CSVOrigen]  ) - FINDSTRING(REVERSE( @[$Package::CSVOrigen] ),"\\",1) +1 ))

Como se puede observar, hacemos uso de la nueva función Left() de la que hablamos en el artículo anterior.


Ahora, si introducimos la expresión en la Expression Task y lo asignamos a la variable RutaFicheros, quedaría como muestra la imagen:


image





Otro ejemplo sencillo puede ser obtener el tiempo de ejecución de un componente. Colocamos el componente al que queremos medir en un contenedor y conectamos un Expression Task, como se muestra en la imagen. Le añadimos la expresión:

@[User::TiempoEjecucion] = Datediff("ms", @[System::ContainerStartTime], getdate())

image


Podemos añadir un Breakpoint en el evento Post-Execute de la tarea y rescatar el valor de la variable en la ventana Watch 1:


image





Conclusiones


Expression Task nos permite asignar valores a parámetros y variables durante la ejecución del paquete, además de poder organizar en que momento del Control Flow debe realizarse. Anteriormente podíamos hacer algo similar con las variables y la propiedad EvaluateAsExpression pero la expresión se resolvía en primera instancia, no podíamos decidir cuando sin usar una Script task.


 


Serie: Novedades en SQL Server 2012 Integration Services




    1. Novedades en Integration Services de SQL 2012 / Introducción
    2. Nuevas funciones para el lenguaje de expresiones
    3. Expression Task
    4. Arquitectura del servidor y catálogo SSISDB
    5. Migración de proyectos
    6. Despliegue de proyectos
    7. Informes Dashboard
    8. API T-SQL

No hay comentarios:

Publicar un comentario

Entradas populares