miércoles, 13 de junio de 2012

SSIS Capturar duplicados en el flujo de datos

duplicate_rows

 

 

Introducción

Es muy común encontrarnos con escenarios en los que tenemos que consumir orígenes de datos que contienen duplicados, tanto por columnas clave como por filas completas. Integration Services ofrece componentes que permite eliminar los duplicados (componente Sort), pero en esta entrada vamos a centrarnos en un diseño que nos permita capturar las filas duplicadas por columnas clave para su posterior tratamiento, utilizando la menor cantidad de código posible (componente Script).


Este artículo ha sido publicado en el blog BICorner de SolidQ. Pulsa aquí para continuar leyendo.

jueves, 7 de junio de 2012

Bye bye Summit 2012 Madrid #SQSummit

 

Personalmente cada año que pasa desde que tengo la oportunidad de acudir a este evento, tanto como asistente o como ponente, pienso que la experiencia profesional vivida alcanza cotas que serán difíciles de superar, pero como digo me pasa cada año. No son solo lo temas técnicos que se tratan y de los que por supuesto no dejo de aprender, sino las reorientaciones conceptuales a las que me veo sometido en muchas ocasiones por los que son ahora mis compañeros, los debates abiertos que se generan durante las charlas, la inestimable aportación y puntos de vista que tienen los asistentes al trasladar los contenidos expuestos a su casuística particular y que muchas veces se encuentran identificadas más personas.

Desde aquí quiero agradeceros a todos los que habéis estado allí. A los asistentes por vuestra participación y aportación, un valiosísimo punto de vista que nos mantiene “en línea”. A mis compañeros por su calidad y generosidad técnica y personal. Incluso a la organización externa por esos cafés calientes en cada break que nos mantuvieron confortablemente activos tanto dentro como fuera de las salas.

Me vuelvo a casa con la cabeza caliente de ideas y de ganas de que llegue el próximo Sonrisa

miércoles, 30 de mayo de 2012

SSIS: Obtener metadatos de ficheros

 

Introducción

Muchas veces es necesario comprobar algún metadato de un fichero antes de procesarlo. Supongamos que tenemos un paquete ETL que recoge un fichero con un volumen de datos importante, pongamos 100 millones de filas ( si, a veces pasa :) ). El contenido del fichero se genera cada cierto tiempo, pero su nombre nunca cambia. Cabe la posibilidad de obtener todo el contenido para compararlo contra el destino de datos, pero es una tarea que podemos (y debemos) evitar.

En este caso vamos a obtener la fecha de modificación de un fichero para determinar si es necesario procesarlo.

Obteniendo el metadato

Tenemos en un directorio un fichero llamado ventas.csv y disponemos de una tabla en la que vamos registrando la última fecha de modificación de forma que vamos a comparar este dato con el que tiene actualmente el fichero.

La estructura de la tabla es la siguiente:

CREATE TABLE [dbo].[FilesToProcess](
[Id] [int] NOT NULL,
[FileFullName] [varchar](255) NOT NULL,
[LastModifiedDate] [datetime] NOT NULL,
[ProcessDate] AS (getdate())
)
 
image

Para empezar, nos creamos tres variables de SSIS: vFilesFullName, vFileModifiedDate y vLastModifiedDate


image


Para obtener última fecha de modificación, añadimos un Execute TSQL Task al Control Flow y realizamos una consulta que nos devuelva el nombre del fichero a procesar y la última fecha de modificación que registramos:

SELECT [FileFullName], [LastModifiedDate]
FROM [dbo].[FilesToProcess]

En la sección General establecemos la opción ResultSet a Single Row


En la sección Result Set, mapeamos el resultado a las variables:


image


Añadimos un Script Task y lo conectamos a la salida de la tarea anterior. Editamos su configuración y establecemos las variables que va a utilizar. Como variables de lectura añadimos vFileFullName y vLastModifiedName y como variable escribible seleccionamos vFileModifiedName:


image


Lo siguiente es añadir el código al componente (personalmente prefiero C#)

public void Main()
{
// TODO: Add your code here
try
{
System.IO.FileInfo mFileInfo = new System.IO.FileInfo(Dts.Variables["vFileFullName"].Value.ToString());

if (mFileInfo != null)
{
Dts.Variables["vFileModifiedDate"].Value = mFileInfo.LastWriteTime;
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
}
catch(Exception ex)
{
Dts.Events.FireError(-1, ex.Source, ex.Message,string.Empty , 0);
}

}

Como veis, utilizamos la clase System.IO.FileInfo para obtener la fecha de modificación que actualmente tiene el fichero.


Lo siguiente, es añadir un DataFlow para procesar el fichero. Conectamos el Script Task con el Data Flow  y modificamos la restricción de precedencia (precedence constraint) para añadir la expresión:

@vFileModifiedDate!=@vLastModifiedDate

image


El aspecto final de este diseño debería ser el de la siguiente imagen:


image


Resumen


A través de la inclusión de código en Script tasks y Script Component podemos proveer a nuestros paquetes ETL de Integration Services. A través de este ejemplo hemos visto como solucionar un requisito que puede ser habitual encontrarse.


Si queréis descargaros el paquete de ejemplo dejadme un comentario, estaré encantado de compartirlo con vosotros


Guiño

lunes, 30 de abril de 2012

SolidQ Summit Madrid 2012 #SQSummit

 

Este año SolidQ celebra su VIII Summit en Madrid, los días 5,6 y 7 de Junio en el Regus Campo de las Naciones.
Se está convirtiendo en tradición dar comienzo al verano con este evento, el más relevante en España, sobre SQL Server y Microsoft Business Intelligence además de tracks de Colaboración y Búsqueda centrado en SharePoint y otro sobre tecnología Azure.

Además en esta edición contamos con la novedad del reciente lanzamiento del SQL Server 2012, lo que convierte el evento en una buena oportunidad para ponerse al día con el producto y todas las características que se han añadido en esta versión: Grupos AlwaysOn, funciones windowing en TSQL, el servicio Data Quality, el modelo tabular, BISM, Power view, integración con SharePoint 2010 etc…

Este año será la cuarta vez que asista al Summit de SolidQ, la segunda que tendré la oportunidad de participar como ponente :)

image

Es un oportunidad para conocer en persona a los ponentes, algunos de los profesionales más valorados por la industria, para dialogar y consultar temas de lo visto a lo largo del evento como casos particulares que tengamos entre manos. Es experiencia que compartiremos, no sólo a través de las sesiones sino también en la mesa mientras disfrutamos de un almuerzo o un café. Es una oportunidad para compartir dudas y trasladar problemáticas concretas.

Nos gustaría contar con tu asistencia y compartir estos días con nosotros como en años anteriores:




 

Para obtener más información visita:
SolidQ Summit Madrid 2012 donde podrás ver todos los detalles:

 

Yo estaré allí, ¿y tú?

miércoles, 18 de abril de 2012

SQL Server 2008 R2 Cumulative Updates

 

No hace mucho se publicó el CU#1 para SQL Server 2012, y entonces también se anunció que algunos KB resueltos también se aplicaban en SQL 2008 y SQL 2008 R2. Para estas versiones del producto habría que esperar para obtener el correspondiente paquete de actualizaciones….

Pues han salido del horno los CU (cumulative updates) para SQL Server 2008 R2, tanto para la versión RTM (CU#13) como para Service Pack 1 (CU#6)

RTM http://support.microsoft.com/kb/2679366 (Build 10.50.1815.0)

SP1 http://support.microsoft.com/kb/2679367 (Build 10.50.2811.0)

Como es habitual, en cada página encontrarán los problemas resueltos por cada paquete de actualización.

Happy updating Guiño

 

Enlaces

martes, 17 de abril de 2012

SQL Server 2012 Cumulative Update #1

 

SQL 2012 - landscape

Como bien sabéis todos los interesados, SQL Server 2012 está disponible de forma general desde el día 1 de Abril. 10 días después han publicado la primera actualización para el producto, que puedes descargarte desde http://support.microsoft.com/kb/2679368

Este paquete de actualizaciones también corrige problemas en versiones anteriores, pero para aplicarlas será necesario esperar algún tiempo más (unas dos semanas para el CU de 2008R2 y unas seis para el de 2008). En total, se resuelven 54 problemas conocidos de los cuales muchos se aplican en el motor de Analysis Services. Es una muy buena noticia que hayan centrado esfuerzos en mejorar esta parte del producto que cada vez gana más terreno por su implementación en soluciones de Inteligencia de Negocio.

Tras aplicar esta actualización, la build pasa de 11.0.2100 a 11.0.2316

Ya sabeis, si teneis la RTM en producción antes de aplicar esta CU mejor probar en otro entorno. Mejor prevenir…

Sonrisa

Enlaces

Windows 8: Ediciones

 

Siguiendo la línea del post anterior, en esta entrada quería compartir con ustedes que Microsoft ha anunciado las distintas ediciones de Windows 8 cliente: Windows 8, Windows 8 Pro y Windows RT (para procesadores ARM).

La entrada original la puedes encontrar en el blog de Windows 8, pero me he tomado la licencia de copiar aquí las características provistas en cada edición:

(click para mejor resolución)

image

Recuerda que puedes descargar, instalar y probar la entrega Consumer Preview de Windows 8

 

Enlaces

Windows 8 Editions (original  post)
Consumer preview of Windows 8

Entradas populares