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.

Igual que hicimos con el artículo del “Unpivot síncrono” vamos a mirar poco a poco en que consiste la solución para montar un pivot síncrono.

  • Estructura: tendremos una tabla que contendrá tres campos:
    PIVOT “SINCRONO”

 

Por un lado tendremos el NIF del cliente, por otro el campo “LineaNegocio” nos indica el mes de la línea de negocio para ese cliente y el campo ValorLN contendrá el nombre de dicha línea de negocio.

  • Contenido: tendremos dos clientes, uno con tres líneas de negocio y otro con dos.
SELECT
[NIFCliente]
,[LineaNegocio]
,[ValorLN]
FROM [dbo].[LineasDeNegocio_Pivot]

PIVOT “SINCRONO”

Dicho esto, veremos como pivotar el contenido de esta tabla creando para ello una solución en SSIS.

En la siguiente imagen se muestra la estructura general del Data Flow que hemos implementado:

PIVOT “SINCRONO”

La primera consideración que deberemos de tener en cuenta es que deberemos de tener el origen ordenado por el campo que mantendremos para nuestra tabla final, en nuestro caso por el NIF, a continuación se muestra la obtención de los datos desde nuestro origen:

PIVOT “SINCRONO”

Veamos un poco más detenidamente las funciones que cumplen los distintos componentes en nuestro Data Flow:

  • Derived Column: en el primer “Derived Column” (Division) implementaremos tres campos nuevos, tantos como distintas líneas de negocio podamos tener en nuestro origen, para nuestro ejemplo hemos considerado solamente tres líneas de negocio:
    PIVOT “SINCRONO”

 

 

  • Conditional Split: dividiremos el flujo de los datos según la Línea de negocio que estemos tratando en el registro que le llega como origen, generando por lo tanto tres flujos distintos (M1, M2 y M3):
    PIVOT “SINCRONO”

 

  • Merge Join
    • Primer Join: en este “Merge Join” cruzaremos a nivel de NIF y con “Left Outer Join” los registros que llegan por los distintos flujos del “Conditional Split” (M1 y M2) y obtendremos solamente el NIF y las dos columnas que nos indican los distintos valores de las distintas líneas de negocio:
      PIVOT “SINCRONO”

 

  • Segundo Join: Cruzaremos los datos a nivel de NIF, por un lado el flujo procedente del “Primer Join” y por el otro el flujo M3 que proviene del “Conditional Split”:
    PIVOT “SINCRONO”

 

 

Una vez dicho esto y llegados a este punto, obtendríamos 4 cuatro campos, por un lado el NIF y por el otro tres campos que indican el valor de la línea de negocio para cada uno de los meses (M1, M2 y M3):

PIVOT “SINCRONO”

Espero que sirva de ayuda.

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

Lidiando con Power BI y los límites de Google Analytics

A la hora de realizar informes tirando consultas contra el API de Google Analytics nos encontramos que normalmente, ya sea por prisa o por límites presupuestarios, se hacen informes adhoc en Power BI en modo import, evitando una arquitectura de ETL más canónica, que implicaría por ejemplo, llevar los datos a tablas en SQL Server y realizar cargas incrementales para tener un repositorio centralizado de información. Esta arquitectura podría ser o en la nube o en hardware on-premise. Detallamos algunos problemas comunes al trabajar con Power BI y Google Analytics y algunas soluciones.