Curso MS Business Intelligence – SSIS Buenas prácticas (parte II) (14)

Vamos a continuar el curso exponiendo una nueva relación de buenas prácticas adicionales a las expuestas en el post anterior.

Vamos a mostrar una serie de buenas prácticas, consejos y recomendaciones a seguir a la hora de implementar procesos de Extracción, Transformación, Limpieza y Carga de datos en nuestro Data Mart o Data Warehouse, pasando éstos por un área de Staging, dado que ésta es una casuística muy típica. Tenga también en cuenta que aunque ciertos puntos van orientados al proceso que acabamos de comentar, otros muchos pueden ser aplicables a otros usos de la herramienta. (más…)

El fenómeno del BackPressure en SSIS 2008. Qué es y cómo detectarlo.

El fenómeno del BackPressure en SSIS 2008. Qué es y cómo detectarlo.

En ocasiones, al ejecutar un paquete SSIS que tiene como origen nuestro flamante servidor con mucha RAM y un muy buen disco vemos que no funciona tan rápido como podríamos esperar. De hecho, nosotros hemos diseñado bien el paquete y todas las transformaciones funcionan, no estamos utilizando transformaciones bloqueantes porque sabemos que penalizan mucho el rendimiento, y hemos intentado optimizar el rendimiento pero aún así no hemos conseguido mejorarlo… ¡la culpa es del origen de datos! ¡Nos han estafado con el servidor! Tomemos la situación con un poco de calma antes de culpar a nuestro origen de datos porque probablemente estemos delante de un caso de backpressure.El backpressure es un fenómeno que ocurre en Integration Services cuando tenemos una o varias transformaciones que trabajan con los datos más lentamente que el origen que las provee de datos. (más…)
Dentro del motor de SSIS (3 de 3) : Aplicando la teoría

Dentro del motor de SSIS (3 de 3) : Aplicando la teoría

En los capítulos anteriores de esta serie veíamos los planteamientos teóricos del trabajo con buffers y paralelismo dentro del motor de SSIS. En este último capítulo veremos un ejemplo de ejecución recordando estos conceptos y viendo cómo realmente podemos afectar de manera significativa a la ejecución de nuestros paquetes. En el post (http://tinyurl.com/5uo36yl) ya vimos como podíamos beneficiarnos del conocimiento del trabajo con buffers, en este veremos cómo podemos llegar incluso a perjudicar el rendimiento por un mal uso de nuestros componentes.
(más…)
Dentro del motor de SSIS (2 de 3) : Paralelismo

Dentro del motor de SSIS (2 de 3) : Paralelismo

En el anterior post de esta serie hablábamos de los árboles de ejecución y cómo al crearse generan nuevos buffers de memoria y, en ocasiones, nuevos hilos de ejecución para trabajar con los datos de nuestro flujo. En este post veremos cómo podemos ajustar la generación de hilos y maximizar el beneficio que éstos nos pueden dar al ejecutar tareas de forma paralela. (más…)
Trabajando con tablas temporales en SSIS 2008 como orígenes de datos

Trabajando con tablas temporales en SSIS 2008 como orígenes de datos

Recientemente nos hemos encontrado en un cliente con la necesidad de incluir tablas temporales en nuestras cargas utilizando SSIS 2008 para aliviar un problema de rendimiento. Es muy fácil utilizar consultas directas como orígenes OLEDB, pero ¿y si tenemos que nutrirnos de tablas temporales? Bien, veremos que es igualmente fácil aunque tendremos que trabajar un poco más.

(más…)

Uso de memoria y tamaño de buffers en SSIS

Uso de memoria y tamaño de buffers en SSIS

Últimamente nos hemos enfrentado a una situación algo complicada relacionada con el rendimiento y el uso de memoria de Integration Services. Se trata de, ante dos orígenes de datos que devuelven información a diferente velocidad, la necesidad de realizar un proceso de carga incremental. Esto requiere una operación parcialmente bloqueante (es decir, necesita parte del conjunto de datos para empezar a añadir datos al flujo) como es un Merge Join para comparar las filas que vienen de ambos orígenes y determinar cuál es nueva, cuál modificada y cuál hay que eliminar.

(más…)

PIVOT “SINCRONO”

PIVOT “SINCRONO”

Otra situación que seguramente más de uno de nosotros se ha encontrado es el tener que pivotar una tabla, bien en T-SQL o mediante el componente “Pivot” de SSIS, a veces, bien por volumen de datos o por que el origen es un transaccional, en el cual no podemos realizar esta operación, podríamos recurrir a la siguiente alternativa.

(más…)

UNPIVOT “SINCRONO”

UNPIVOT “SINCRONO”

Más de una vez nos hemos encontrado en la situación de tener que unpivotar una tabla, teniendo así que recurrir o bien al componente “Unpivot” de SSIS o incluso a tener que guardar los datos en tabla y realizar posteriormente una lectura de esta misma utilizando T-SQL para unpivotarla, con los problemas que ambas soluciones nos puedan conllevar con un gran volumen de datos.

(más…)