Propondré hoy un ejercicio para mostrar cómo crear en el entorno de Power Pivot dos herramientas fundamentales:
- columnas calculadas
- medidas.
Supondremos dos tablas en nuestras hojas de cálculo: 'TblVentas' y 'TblPrecios':
Desde la ficha Power Pivot > grupo Tablas > botón Agregar tabla al Modelo de datos para ambas tablas.
Ya dentro del editor de Power Pivot gestionaremos la relación entre tablas ('one-to-many') desde el campo 'Item' de la 'TblPrecios' al campo' Producto' de la 'TblVentas'.
Lo haremos desde la Ficha Inicio > grupo Ver > botón Vista diagrama y arrastrando de un campo al otro:
Con la relación creado podemos volver a la Vista de datos (Ficha Inicio > grupo Ver > botón Vista de datos)
Al tener un tipo de relación 'one-to-many' podemos hacer uso de la función RELATED (leer algo más aquí).
Creando una columna calculada en la 'TblVentas' para recuperar el precio de cada producto...
PrecioR:= =RELATED(tblPrecios[Precio Unitario])
Crearemos ahora otras columnas calculadas para obtener el producto de 'Unidades' por 'Precio' en cada fila de las 'TblVentas'.
Una primera columna tendría la fórmula:
Parcial1: =TblVentas[Unidades]*TblVentas[PreciosR]
y una segunda podría ser, directamente sin necesidad de recuperar la columna de 'Precio'
Parcial2: =TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario])
Si generamos una tabla dinámica desde nuestro Modelo de datos:
Ficha Inicio > desplegable tabla dinámicas > Tabla dinámica
y construimos la tabla dinámica simple de la imagen, se comprueba como el el resultado es el mismo para ambas columnas calculadas.
Una alternativa para conseguir este resultado diferenciado en la tabla dinámica sería crear una medida.
Para ello iremos al área de cálculo y definiremos alguna de las siguientes medidas:
Suma1:=SUM(TblVentas[Parcial2])
o
Suma2:=SUMX(TblVentas;TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario]))
La primera de ellas necesitaría la existencia de la columna calculada (que ya habíamos creado anteriormente):
Parcial2: =TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario])
mientras que la segunda es más simple ya que directamente podemos crearla como medida...
Otra medida algo más retorcida:
Suma3:=CALCULATE(SUM(TblVentas[Parcial2]); ALL(TblVentas[Parcial2]))
para llegar al mismo resultado.
Otro ejemplo de Medida sin necesidad de columnas calculadas sería la siguiente:
MediaPrecio:=AVERAGEX(TblVentas;RELATED(tblPrecios[Precio Unitario]))
con la que obtendremos la media de precios según el detalle configurado en la tabla dinámica.
Si trasladamos estas columnas calculadas y medidas a la tabla dinámica veremos que no ha diferencias...
Se observa como en todos los casos, puedes probar, los cálculos se adaptan a la configuración y diseño que demos a nuestra tabla dinámica...
- columnas calculadas
- medidas.
Supondremos dos tablas en nuestras hojas de cálculo: 'TblVentas' y 'TblPrecios':
Desde la ficha Power Pivot > grupo Tablas > botón Agregar tabla al Modelo de datos para ambas tablas.
Ya dentro del editor de Power Pivot gestionaremos la relación entre tablas ('one-to-many') desde el campo 'Item' de la 'TblPrecios' al campo' Producto' de la 'TblVentas'.
Lo haremos desde la Ficha Inicio > grupo Ver > botón Vista diagrama y arrastrando de un campo al otro:
Con la relación creado podemos volver a la Vista de datos (Ficha Inicio > grupo Ver > botón Vista de datos)
Al tener un tipo de relación 'one-to-many' podemos hacer uso de la función RELATED (leer algo más aquí).
Creando una columna calculada en la 'TblVentas' para recuperar el precio de cada producto...
PrecioR:= =RELATED(tblPrecios[Precio Unitario])
Crearemos ahora otras columnas calculadas para obtener el producto de 'Unidades' por 'Precio' en cada fila de las 'TblVentas'.
Una primera columna tendría la fórmula:
Parcial1: =TblVentas[Unidades]*TblVentas[PreciosR]
y una segunda podría ser, directamente sin necesidad de recuperar la columna de 'Precio'
Parcial2: =TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario])
Si generamos una tabla dinámica desde nuestro Modelo de datos:
Ficha Inicio > desplegable tabla dinámicas > Tabla dinámica
y construimos la tabla dinámica simple de la imagen, se comprueba como el el resultado es el mismo para ambas columnas calculadas.
Una alternativa para conseguir este resultado diferenciado en la tabla dinámica sería crear una medida.
Para ello iremos al área de cálculo y definiremos alguna de las siguientes medidas:
Suma1:=SUM(TblVentas[Parcial2])
o
Suma2:=SUMX(TblVentas;TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario]))
La primera de ellas necesitaría la existencia de la columna calculada (que ya habíamos creado anteriormente):
Parcial2: =TblVentas[Unidades]*RELATED(tblPrecios[Precio Unitario])
mientras que la segunda es más simple ya que directamente podemos crearla como medida...
Otra medida algo más retorcida:
Suma3:=CALCULATE(SUM(TblVentas[Parcial2]); ALL(TblVentas[Parcial2]))
para llegar al mismo resultado.
Otro ejemplo de Medida sin necesidad de columnas calculadas sería la siguiente:
MediaPrecio:=AVERAGEX(TblVentas;RELATED(tblPrecios[Precio Unitario]))
con la que obtendremos la media de precios según el detalle configurado en la tabla dinámica.
Si trasladamos estas columnas calculadas y medidas a la tabla dinámica veremos que no ha diferencias...
Se observa como en todos los casos, puedes probar, los cálculos se adaptan a la configuración y diseño que demos a nuestra tabla dinámica...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.