fbpx

8 datos sobre las variables en SSIS

Integration Services (SSIS) es una de las herramientas con las que vengo trabajando desde hace unos años en mi carrera profesional. Pese a que le dedico una gran cantidad de tiempo día a día, siempre aparecen cosas nuevas: cosas que me ayudan a mejorar y aprender en el camino. Por este motivo, en esta entrada voy a compartir algunas de las cosas que he logrado aprender sobre el uso de las variables en SSIS usando como IDE Visual Studio 2017 (VS).

Cuando se trabaja en un paquete de SSIS siempre llega un punto en el que, es necesario usar variables ya sea por que se necesita hacer la lógica más flexible o por que, es una forma de hacer tú paquete mantenible a largo plazo. Por eso es importante conocer todos los posibles usos o funciones que se pueden hacer con ellas. A continuación, intentaré cubrir 8 cosas sobre el uso de variables en SSIS.

1.- Tipos de variables

Cuando empezamos a usar variables dentro de un flujo de datos en Integration Services, nos encontramos con dos posibles categorías.

  • Variables de sistema: Estás son variables que no pueden ser modificadas por el usuario, tampoco se pueden agregar más ni eliminar las que existen. Además, son reconocidas en todos los niveles del paquete (scope).

 

  • Variables de usuario: Estás son variables que el desarrollador del paquete puede agregar o quitar a voluntad. Es posible asignarle un valor estático o variable según la evaluación de una expresión. Al igual que la anterior, son reconocidas por todos los niveles dentro del paquete.

En Visual Studio, es posible encontrar las variables en la pestaña de variables dentro del diseñador de paquetes.

variables en SSIS/ visual studio 2017

Por defecto las variables de sistemas están ocultas para no mezclarse con las de usuario. Dentro de las opciones de la pestaña de variables, se puede indicar que se muestren todos los tipos, como se muestra a continuación.

variables en SSIS/ visual studio 2017 / vs 2017

Además, es posible crear otros namespace para organizar nuestras variables como mejor nos parezca.

namespaces ssis / visual studio / integration services2.- Inicialización por tipo de dato

Dentro Integration Services cada vez que, se crea una variable de usuario es posible definir el tipo de dato que está almacenará en tiempo de ejecución. Sin embargo, al momento de escoger el tipo de dato para nuestra variable tenemos que considerar que, ninguno de estos tipos acepta valores nulos. Es decir que, por defecto se inicializan de la siguiente forma.

SSIS / BI / Integration Services

3.- Son Case Sensitive

Esto quiere decir que, es posible tener una variable con el nombre «A» en mayúsculas y otra en minúsculas con el mismo nombre. A pesar de que, ambas variables se encuentren en el mismo ámbito y comparten el mismo nombre, SSIS las reconoce como variables diferentes dentro de su flujo.

case sensitive / vs / integration Services / bi / SSIS

 

 

 

4.- Scope o Ámbito

Este punto en particular es uno de mis favoritos. Debido a que, se pueden realizar diversas aplicaciones con esta opción. Cuando hablamos del ámbito de una variable nos referimos al nivel que pertenece dentro de una jerarquía. En un paquete de SSIS contamos con jerarquías por cada componente que forma parte del flujo. En donde el paquete ocupa el puesto más alto dentro de la jerarquía y los componentes del flujo van por debajo en sub-niveles. Dicho esto, cuando declaramos una variable dentro de un paquete por defecto, esta se crea dentro del nivel más alto. Las variables que residen aquí, son visibles para todos los demás sub-niveles.  Sin embargo, es posible modificar la ubicación dentro de esta jerarquía para fines propios de nuestra lógica. Supongamos que tenemos los siguientes componentes dentro de un paquete.

SSIS / VS 2017 / BI

Cómo mencioné antes el mayor nivel en esta jerarquía es el paquete mismo. Luego los componentes que forman parte del control flow se encuentran un nivel por debajo de éste. Lo mismo con los componentes dentro de este flujo. A continuación, agregué un pequeño ejemplo de como se estructura la jerarquía de este paquete.

Jerarquía en SSIS / BI / SSIS / VS 2017

Entonces, es posible cambiar la ubicación de las variables que creamos moviéndolas dentro de esta jerarquía. Lo importante aquí es que, cuando se crea una variable dentro de un sub-nivel. Esta variable no es visible para los niveles superiores, pero sí para todos los niveles inferiores. Con lo cual es posible crear una variable con el mismo nombre, pero en una ubicación diferente dentro de la jerarquía como se muestra a continuación.

5.- RaiseChangeEvent

Esta opción por lo general se encuentra oculta dentro del panel de variables de VS. Sin embargo, también se puede acceder desde la pestaña de propiedades al situarnos sobre la variable que se quiere configurar. Cuando habilitamos esta opción vamos a encontrar lo siguiente.

RaiseChangeEvent / SSIS / Integration Services

Lo que hace esta opción cuando se encuentra activa es que, lanza un evento de tipo «OnVariableValueChanged» cada vez que el valor de la variable «NombreProceso» cambia. Dicho evento puede ser capturado por los handlers del paquete con la opción «OnVariableValueChanged», como se muestra a continuación.

RaiseChangeEvent SSIS / Event Handlers SSIS

Este pequeño script lanza un mensaje indicando que el nombre de la variable cambió su valor en tiempo de ejecución.

6.- Read Only

Está opción se encuentra oculta a simple vista pero la pueden encontrar dentro de la sección de propiedades cuando se sitúan sobre una variable como se muestra a continuación.

ReadOnly variables in SSIS

Cuando este flag se encuentra en «True» se esta asegurando que su valor no cambiará en tiempo de ejecución. Si algún proceso intentará sobre escribir el valor de está variable se mostrará el siguiente mensaje de error.

Error: Failed to lock variable "User::NombreProcesoA" for read/write access with 
error 0xC0010001 "The variable cannot be found. This occurs when an attempt is made to 
retrieve a variable from the Variables collection on a container during execution of 
the package, and the variable is not there. The variable name may have changed or the 
variable is not being created.".

7.- IncludeInDebugDump

 
 

Potencia tus habilidades
con nuestros cursos

Potencia tu presencia profesional gestionando proyectos reales, enseñamos desde la práctica.

Comunícate con nosotros