viernes, 19 de abril de 2013

SolidQ Summit 2013 Madrid #SQSummit13

 Regreso a SolidQ Summit

 

Un año más SolidQ celebra su Summit en Madrid, la novena edición, los días 11,12 y 13 de Junio en el Regus Campo de las Naciones.

 

El Summit que organiza SolidQ anualmente en España está de vuelta, como seguramente ya estaréis enterados los miembros de esta comunidad. Porque lo somos, comunidad, y contadas son las ocasiones en las que podemos reunirnos y compartir experiencias y vivencias, técnicas y personales, hablando en sesiones que comprenden los aspectos más relevantes y novedosos de la industria o en petit comité memorando buenos y malos ratos compartidos o llanamente interesándose por los más allegados aquellos que llevamos años de relación y este es uno de esos momentos en los que celebramos reencontrarnos.

SolidQ

Este será mi quinto año asistiendo, primero como público y luego como ponente, y las sensaciones siempre han sido positivas, cumpliendo mis expectativas sobre la formación y el aprendizaje, y sintiéndome integrado en un grupo de fantásticas personas con intereses y pasiones comunes. Porque aunque hay muchas otras cosas en las que empleo mi tiempo y energías que son más corrientes entre los mortales y siempre hay alguien con quien hablar, debatir o discutir; no siempre puedo contar penas y alegrías sobre mis batallas, resolviendo problemas con MDX, optimizando un diseño para mejorar los tiempos de respuesta, etc… sin que piense que estoy hablando en klingon para mi interlocutor, aunque ponga toda su capacidad atención para hacer por entenderme (dedicado agradecimiento a Eva)

Vale, no es un campamento de verano... el objeto principal de este evento es la transferencia de conocimientos, muchas veces de forma circular o recíproca. Y es que, como cada año, se han organizado multitud de sesiones, 42 concretamente, para todos los niveles en cuanto a profundidad técnica divididas en cuatro temáticas principales Inteligencia de Negocios, SharePoint, Azure y SQL Server, abarcando varias perspectivas como rendimiento, usabilidad, monitorización, metodología, filosofía, etc.. desde un enfoque que parte del conocimiento basado en la experiencia.

En cualquier caso no te quedes sólo con mi opinión, algunos asistentes de ediciones anteriores han querido expresar la suya: http://summit.solidq.com/madrid/2013/Paginas/Opinion-de-asistentes-al-SolidQ-Summit.aspx

Puedes consultar la agenda completa en el sitio del Summit 2013 para planificar tus jornadas, y seguir el hashtag #SQSummit13 en Twitter para estar al día.

Yo estaré allí, ¿y tú?

jueves, 18 de abril de 2013

SSIS Básico: Guardar valor de columnas en una variable

 

En relación a uno de los comentarios que me han dejado en el post SSIS Básico: Ajustando la longitud de una columna, volvemos a la carga con pequeño how-to de como guardar el valor de una columna en una variable dentro de un Data Flow a utilizando un Script component.

Para poneros en situación, voy a utilizar una tabla que guarda tweets publicados con ciertas palabras, y guardaremos en la variable el último usuario que haya publicado en función de la fecha  del tweet registrada en la columna Created_at.

Primero debemos contar con la variable en la que necesitamos guardar el valor, para este ejemplo he creado la variable VariableCadena, con ámbito de paquete para poder utilizarla en el Control Flow o subsiguientes Data Flows:

image

Dentro del Data Flow en el que vamos a registrar el valor de alguna columna en la variable, añadimos un Script component en modo transformación:

image

En la configuración del componente, en la sección Input columns, seleccionamos la columna desde la que queremos obtener el valor, y cualquier otra que necesitemos si la lógica de asignación del valor tiene más dependencias. Para este ejemplo vamos a utilizar las columnas UserName y Created_at del flujo de datos:

image

Nos movemos a la sección Script y añadimos nuestra variable a la lista de variables con acceso de escritura.

image

Pulsamos el botón Edit Script para escribir el código necesario (ejemplo en C#). Algo que debemos tener en cuenta es que no se permite la escritura de valores en variables fuera del método PostExecute(), por lo que nos tendremos que apoyarnos en variables de la clase ScriptMain para poder dar salida a nuestra variable de paquete.

Otro detalle a comentar es el método <nombreInput>_ProcessInputRow, que se ejecutará para cada una de las filas que provea el flujo de datos conectado a este componente.

Con esto en mente, escribimos el siguiente código:

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
//variables de apoyo para la lógica
string UserName = string.Empty;
DateTime Created_at = DateTime.MinValue;

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
//evaluamos si la fila actual tiene una fecha mayor a la registrada por la última fila
if (Row.Createdat > this.Created_at)
{
//asignamos el nombre del usuario a la variable interna
this.UserName = Row.UserName;
this.Created_at = Row.Createdat;
}
}

public override void PostExecute()
{
base.PostExecute();
//asignamos el valor de la variable interna a la variable de paquete
this.Variables.VariableCadena = this.UserName;
}
}

Como habeis comprobado, utilizamos la variable interna UserName para guardar el valor que queremos asignar a la variable de paquete en el método PostExecute().


Otra nota importante: Dentro del mismo Data Flow no se puede acceder al contenido de la variable modificada. Cuando el proceso de ejecución entra en el Data Flow se bloquea el valor que tuviera la variable en el momento del evento PreExecute(), como se muestra en el post SSIS Utilizando el RowCount. Recordad que a la variable de paquete le asignamos el valor en el evento PostExecute().


Sin embargo, el nuevo valor esta diponible a partir de entonces y por tanto para cualquier tarea que se ejecute a continuación. Podemos mostrar el valor de la variable en un Script task desde el Control Flow con propósitos didacticos, aunque este tipo de mecanismos se suele utilizar para luego pasar como parámetro a filtros en consultas en otro Data Flow o Execute SQL…


image


 





Entradas populares