Desde la actualización de Octubre 2023 ya es posible crear grupo de cálculo en de Power BI Desktop. Un grupo de cálculo es un conjunto de expresiones DAX que sustituyen a las medidas bajo un contexto. Por ejemplo, antes si querías tener el valor de una medida para el año actual, año anterior, etc. tenias que crear una medida para cada tiempo relativo y con esta funcionalidad solo escribirás una única vez la expresión DAX y podrás reutilizarla con cualquier medida, en resumen, te ahorras tiempo y te ahorras medidas.
Especificaciones del entorno
- Windows 11
- Power BI Desktop (Octubre 2023)
Objetivo
Al terminar este artículo serás capaz de hacer la siguiente matriz con un grupo de cálculo:
Activar la funcionalidad
- Al tratarse de una versión preliminar debes activarla primero entrando en opciones.
- Desde el menú izquierdo Caracteristicas de versión preliminar activa la casilla Creación de grupos de cálculo y explorador de modelos.
Crear un grupo de cálculo paso a paso
- En la vista modelo haz clic en Inicio y después en Grupo de cálculo
- Otra opción es desde el panel Datos hacer clic en Modelo, seleccionar Grupos de cálculo y después pulsar el botón + Nuevo grupo de cálculo.
Cuando se crea un grupo de cálculo el sistema nos avisa de que se desactivará la creación de medidas implícitas en el modelo. Una medida implícita es aquella que se agrega automáticamente como suma, media, etc al arrastrar la medida a una visualización. Si ya existen medidas implícitas se seguirán mostrando pero los grupos de calculo no funcionaran en ellas.
- Al realizar el paso anterior te permitirá escribir una expresión DAX en lo que se denomina elemento de cálculo. Esta primera expresión será para este ejemplo el valor actual de la medida seleccionada que será uno de los tres posibles valores del grupo.
- Ahora vamos a crear nuevos elementos de cálculo para calcular el valor de la medida del primer día y el valor de la medida para el último día. Para crear un nuevo elemento de cálculo haz clic en el panel datos y sobre elementos de cálculo haz clic derecho. Después escoge la primera opción llamada Nuevo elemento de cálculo.
- El segundo elemento de cálculo será para calcular el valor del primer día de la medida que se utilice.
- Crearemos otro elemento de cálculo del mismo modo pero para calcular el valor del último día.
- Para que quede más legible renombraremos Columna de grupo de cálculo y grupo de cálculo por otros nombres. Para hacerlo, tan solo haz clic sobre ellos y en el panel propiedades cambiale el nombre.
- Te debe quedar algo similar a la siguiente imagen:
- Ahora ya puedes utilizar tu grupo de cálculo en cualquier visualización como por ejemplo una Matriz. En este ejemplo puedes ver como arrastrando en filas el año y en columnas nuestro grupo de calculo automaticamente se genera el primer día y el último para cada medida. Antiguamente para hacer esto necesitabas crear 4 medidas totalmente independientes cada una con su expresión DAX.
Otros ejemplos
Ahora que ya sabes como funciona los grupos de cálculo los puedes utilizar para crear…
Grupo de cálculo de inteligencia de tiempo
Este grupo de cálculo es especialmente útil cuando trabajas con fechas y tu modelo contiene una tabla de fechas. Con él podrás mostrar diferentes contextos temporales. Vamos a crear los más frecuentes:
- Crea un nuevo grupo de calculo.
- Doble clic en el Grupo de Cálculo y cambiale el nombre a Inteligencia temporal
- Doble clic en Columna de grupo de cálculo y cámbiale el nombre a Mostrar como
- Clic en Elemento de Cálculo y cámbiale el nombre a Actual.
Actual = SELECTEDMEASURE()
- Crea un nuevo elemento de cálculo haciendo clic con el botón derecho del ratón en la sección Elementos de cálculo (x) y seleccionando Nuevo elemento de cálculo. Cámbiale el nombre a MTD y haz que la expresión DAX sea:
MTD = CALCULATE ( SELECTEDMEASURE (), DATESMTD ( Calendario[Fecha] ) )
- Repite el paso anterior para crear estos otros elementos de cálculo:
QTD = CALCULATE ( SELECTEDMEASURE (), DATESQTD ( Calendario[Fecha] ) )
YTD = CALCULATE ( SELECTEDMEASURE (), DATESYTD ( Calendario[Fecha] ) )
PY = CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( Calendario[Fecha] ) )
PY MTD = CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( Calendario[Fecha] ), 'Inteligencia temporal'[Mostrar como] = "MTD" )
PY QTD = CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( Calendario[Fecha] ), 'Inteligencia temporal'[Mostrar como] = "QTD" )
PY YTD = CALCULATE ( SELECTEDMEASURE (), SAMEPERIODLASTYEAR ( Calendario[Fecha] ), 'Inteligencia temporal'[Mostrar como] = "YTD" )
YOY = SELECTEDMEASURE () - CALCULATE ( SELECTEDMEASURE (), 'Inteligencia temporal'[Mostrar como] = "PY" )
YOY% = DIVIDE ( CALCULATE ( SELECTEDMEASURE (), 'Inteligencia temporal'[Mostrar como] = "YOY" ), CALCULATE ( SELECTEDMEASURE (), 'Inteligencia temporal'[Mostrar como] = "PY" ) )
- Te debería quedar de la siguiente forma:
- Cuando se crean, los elementos de cálculo se ordenan alfabéticamente. El orden puede cambiarse haciendo clic en la sección Elementos de cálculo (#) y reordenándolos en el panel de propiedades.
- El formato de los elementos de cálculo por defecto, es el mismo que la medida origen. En el caso del elemento de calculo YOY% como se quiere mostrar en porcentaje se debe modificar el formato. Para cambiarlo haga clic en el panel de propiedades y active la cadena de formato dinámico e introduzca este formato «#,##0.00%»:
- Ahora ya puedes utilizar tu grupo de cálculo en una visualización:
Grupo de cálculo de conversión
Este grupo de cálculo es muy común en informes financieros para cambiar el tipo de moneda según el país y convertir el valor aplicando el tipo de cambio correspondiente.
- Crea un nuevo grupo de calculo.
- Doble clic en el grupo Cálculo y cámbiale el nombre a Conversión de divisas
- Doble clic en Columna de grupo de cálculo y cámbiale el nombre a Mostrar como
- Clic en Elemento de Cálculo y cámbiale el nombre a Sin conversión (USD). Este es el que se creó inicialmente y debe ser:
No conversion (USD) = SELECTEDMEASURE ()
- Crea un nuevo elemento de cálculo haciendo clic con el botón derecho del ratón en la sección Elementos de cálculo (x) y seleccionando Nuevo elemento de cálculo. Cámbiale el nombre a Conversión (AVG) y haz que la expresión DAX sea:
Conversion (AVG) = VAR _rate = CALCULATE ( AVERAGE ( 'Currency Rate'[Average Rate] ), CROSSFILTER ( 'Date'[DateKey], 'Currency Rate'[DateKey], BOTH ) ) RETURN SELECTEDMEASURE () * _rate
- Crea un nuevo elemento de cálculo haciendo clic con el botón derecho del ratón en la sección Elementos de cálculo (x) y seleccionando Nuevo elemento de cálculo. Cámbiale el nombre a Conversión (EOD) y haz que la expresión DAX sea:
Conversion (EOD) = VAR _rate = CALCULATE ( AVERAGE ( 'Currency Rate'[End Of Day Rate] ), CROSSFILTER ( 'Date'[DateKey], 'Currency Rate'[DateKey], BOTH ) ) RETURN SELECTEDMEASURE () * _rate
- Cuando se crean, los elementos de cálculo se ordenan alfabéticamente. El orden puede cambiarse haciendo clic en la sección Elementos de cálculo (#) y reordenándolos en el panel de propiedades.
- El formato de los dos elementos de cálculo de la conversión también puede cambiarse para que coincida con el país seleccionado. Haga clic en Conversión (EOD) y en el panel de propiedades active la cadena de formato dinámico e introduzca esta expresión DAX:
SELECTEDVALUE ( 'Currency'[Format String], "" )
- Añade también la misma expresión DAX para la cadena de formato dinámico Conversión (AVG).