Compartir a través de


Transformación dinámica

La transformación dinámica transforma un conjunto de datos normalizado en una versión menos normalizada pero más compacta dinamizando los datos de entrada en un valor de columna. Por ejemplo, un conjunto de datos Orders normalizado que enumera el nombre del cliente, el producto y la cantidad comprada normalmente tiene varias filas para cualquier cliente que compró varios productos, donde cada fila para ese cliente muestra los detalles de pedido de un producto diferente. Al dinamizar el conjunto de datos en la columna de producto, la transformación dinámica puede obtener un conjunto de datos con una sola fila por cliente. Esa única fila enumera todas las compras realizadas por el cliente, con los nombres de los productos representados como nombres de columnas, y la cantidad indicada como un valor en la columna de producto. Dado que no todos los clientes compran todos los productos, muchas columnas pueden contener valores NULL.

Cuando se dinamiza un conjunto de datos, las columnas de entrada ejecutan diferentes funciones en el proceso de dinamización. Una columna puede participar de las siguientes maneras:

  • La columna se pasa sin cambios a la salida. Dado que varias filas de entrada pueden obtener una sola fila de salida, la transformación copia sólo el primer valor de entrada para la columna.

  • La columna funciona como la clave o parte de la clave que identifica un conjunto de registros.

  • La columna define la dinamización. Los valores de esta columna se asocian con columnas en el conjunto de datos dinamizado.

  • La columna contiene valores que se colocan en las columnas creadas por la dinamización.

El diagrama siguiente muestra un conjunto de datos antes de que los datos se dinamicen en la columna Product.

Conjunto de datos después de que se dinamice

El diagrama siguiente muestra un conjunto de datos después de que los datos se hayan dinamizado en la columna Product.

Conjunto de datos antes de que se dinamice

Para dinamizar los datos de un modo eficaz, lo que significa crear la menor cantidad posible de registros en el conjunto de datos de salida, los datos de entrada se deben ordenar en la columna de dinamización. Si los datos no se ordenan, la transformación dinámica puede generar varios registros para cada valor en la clave fija, que es la columna que define la pertenencia a un conjunto. Por ejemplo, si el conjunto de datos se dinamiza en una columna Name pero los nombres no se ordenan, el conjunto de datos de salida puede tener más de una fila para cada cliente, porque se produce una dinamización cada vez que cambia el valor de Name.

Los datos de entrada pueden contener filas duplicadas, que darán lugar a que no funcione la transformación Dinamización. "Filas duplicadas" significa filas que tienen los mismos valores en las columnas de clave fija y las columnas dinámicas. Por ejemplo, si usa el conjunto de datos antes de que se dinamicen los datos en la columna Product, como se muestra en el diagrama, y agrega una fila con Kate en la columna Cust y Soda en la columna Product, estos valores duplicados darían lugar a que no funcionase la transformación Dinamización, independientemente de la cantidad de la columna Qty. Para evitar este error, puede configurar la transformación para que redirija las filas que causan el error hacia una salida de error, o bien agregar previamente valores para garantizar que no haya filas duplicadas. Por ejemplo, en el conjunto de datos de muestra, podría sumar los valores de la columna Qty por cliente y por producto.

La transformación dinámica usa las propiedades de sus columnas de entrada y salida para definir la operación de dinamización.

La transformación dinámica incluye la propiedad personalizada PivotKeyValue. Esta propiedad se puede actualizar a través de una expresión de propiedad, al cargar el paquete. Para obtener más información, vea Referencia de expresiones de Integration Services, Usar expresiones de propiedad en paquetes y Propiedades personalizadas de transformación.

Esta transformación tiene una entrada, una salida normal y una salida de error.

Configurar el conjunto de datos de ejemplo

El conjunto de datos de ejemplo que se muestra en el diagrama se configuró de la siguiente manera: la propiedad PivotUsage de la columna Cust se estableció en 1 para indicar que es una columna de clave fija; la propiedad PivotUsage de la columna de entrada Product se estableció en 2 para indicar que se debe crear una columna para cada producto; la propiedad PivotUsage de la columna de entrada Qty se estableció en 3 para indicar que los valores de cantidad se colocan en la columna dinámica.

La salida de la transformación se configuró para incluir seis columnas. Las columnas que se pueden agregar mediante el cuadro de diálogo Editor avanzado, se denominaron Cust, Ham, Soda, Milk, Beer y Chips. La propiedad PivotKeyValue de la columna Ham se estableció en Ham para indicar que la transformación debe buscar ese valor en la columna de entrada. De forma similar, la propiedad PivotKeyValue de la columna Soda se estableció en Soda y así sucesivamente.

A continuación, las columnas en la entrada de transformación se asignaron a las columnas en la salida.

La propiedad SourceColumn de la columna Cust se configuró para usar el identificador de linaje de la columna de entrada Cust. Las propiedades SourceColumn de las columnas Ham, SodaMilk, Beer y Chips se configuraron para usar el identificador de linaje de la columna de entrada Qty. Otra forma de configurar esto sería establecer la propiedad SourceColumn de las columnas Ham, Soda, Milk, Beer y Chips en -1, lo que insertaría el valor True en lugar del valor de los datos. Por ejemplo, en lugar de los valores 12 y 24, la columna Beer contendría el valor True, para indicar solamente que el cliente compró el producto, en lugar de mostrar la cantidad comprada.

Las filas en la salida de la transformación contienen los valores de las columnas de entrada Cust y Qty.

Opciones de dinamización

La propiedad PivotUsage de las columnas de entrada se establece para especificar la función que realiza cada columna en el proceso de dinamización. Los valores válidos de PivotUsage son 0, 1, 2 y 3.

Las opciones de PivotUsage se describen en la siguiente tabla.

Opción

Descripción

0

La columna no se dinamiza y los valores de la columna se pasan a la salida de la transformación.

1

La columna forma parte de la clave fija que identifica una o más filas como parte de un conjunto. Todas las filas de entrada con la misma clave fija se combinan en una sola fila de salida.

2

La columna es una columna dinamizada. A partir de cada valor de columna se crea un mínimo de una columna.

3

Los valores de esta columna se ubican en columnas que se crean como resultado de la dinamización.

Configurar la transformación dinámica

Puede establecer propiedades a través del Diseñador SSIS o mediante programación.

Para obtener más información acerca de las propiedades que puede establecer a través del cuadro de diálogo Editor avanzado o mediante programación, haga clic en uno de los temas siguientes:

Para obtener más información sobre cómo establecer las propiedades, vea Cómo configurar las propiedades de un componente de flujo de datos.

Icono de Integration Services (pequeño) Manténgase al día con Integration Services

Para obtener las más recientes descargas, artículos, ejemplos y vídeos de Microsoft, así como soluciones seleccionadas de la comunidad, visite la página de Integration Services en MSDN o TechNet:

Para recibir notificaciones automáticas de estas actualizaciones, suscríbase a las fuentes RSS disponibles en la página.