Power BI

Grupo de cálculo: actualización de Power BI Desktop

En este artículo, analizamos la actualización para Power BI Desktop lanzada en octubre de 2023 (2.122.442.0). El mes pasado, Microsoft introdujo algunas características interesantes para el diseño y la gestión de modelos, incluidos los Grupos de Cálculo cuya creación y edición es ahora nativa en Power BI Desktop.

Configuración del instrumento: comprobación de la versión y activación del Model Explorer

Antes de continuar leyendo el artículo, te recomendamos que compruebes tu versión de Power BI Desktop y la actualices si es necesario.

Verifica versióne Power BI

En la vista «Model» y en la sección «Data» habrá dos opciones de trabajo alternativas: «Tables», que contiene las tablas de hechos y dimensiones, y «Modelo», que contiene el «Explorador de modelos», gracias al cual también puedes inspeccionar el «Modelo semántico», una vista estructurada con el formalismo de árbol de todo el conjunto de datos, ¡incluidas las mediciones! (si no lo ves, activa la opción «Model explorer and Calculation group authoring» de la sección «Preview features» del panel «Options»).

Activar el Explorador de Modelos

¿Qué son los grupos de cálculo?

Hasta ahora, el soporte para los Grupos de Cálculo lo proporcionaba una herramienta externa de código abierto (Tabular Editor), pero con esta actualización se ha implementado la idea de integración de Marco Russo, ampliamente apoyada por la comunidad. Hoy es posible, de hecho, crear y editar Grupos de Cálculo directamente en Power BI y simplemente acceder a ellos desde el Explorador de Modelos.

Una medida -del inglés measure- es una fórmula ( statement) -en lenguaje DAX- definida en términos de funciones. Éstas expresan a qué tratamiento someter uno o varios argumentos de entrada para obtener la salida deseada, la métrica a implementar.

La idea básica es agrupar en un Grupo de Cálculo todas las métricas que impliquen una manipulación de datos relacionada, por ejemplo, Time Intelligence para las métricas relativas a un periodo de tiempo. A continuación, dentro de un Grupo de Cálculo, se crean elementos -fórmulas en DAX- para codificar un patrón de cálculo recurrente, es decir, común a varias métricas, separando así la lógica del cálculo de las métricas a implementar. Estos elementos se conocen como Elementos de Cálculo, y con cada Elemento de Cálculo es posible obtener una instancia (medida) de la métrica a evaluar sin implementarla explícitamente, gracias a la función SELECTEDMEASURE, un marcador de posición. Esto reduce el número de medidas explícitas redundantes en la lógica de cálculo.

Creación de grupos de cálculo - Time Intelligence

Por ejemplo, para estimar el número de pedidos y de ventas (dos métricas), se esperan dos medidas respectivamente:

Orders =
DISTINCTCOUNT( ‘Sales Order'[Sales Order] )

Sales =
SUMX(
             Sales,
             Sales[Unit Price] * Sales[Order Quantity]
)

¿Y su valor el mes pasado? 2 medidas más

Orders PM =
CALCULATE(
           [Orders],
            PREVIOUSMONTH( ‘Date'[Date] )
)

Sales PM =
CALCULATE(
           [Sales],
           PREVIOUSMONTH( ‘Date'[Date] )
)

¿O el mismo mes pero del año pasado? 2 medidas más

Sales PY =
CALCULATE(
          [Sales],
          SAMEPERIODLASTYEAR( ‘Date'[Date] )
)

Orders PY =
CALCULATE(
          [Orders],
          SAMEPERIODLASTYEAR( ‘Date'[Date] )
)

¿O desde principios de año? Dos medidas más, con lo que el total asciende a 8. Está claro que la separación inicial, dos métricas para otras tantas medidas, es sensata y necesaria, ya que las transacciones prescritas son diferentes, pero ( Orders PM – Sales PM) y ( Orders PY – Sales PY) están «funcionalmente» acopladas, es decir, muestran el mismo patrón de cálculo. ¿Qué hacer entonces? Se crea un Grupo de Cálculo.

A continuación se indican los pasos para crear un Grupo de Cálculo (Calculation Group):

  1. En la sección “Model View” haz clic en “Calculation group”
  2. Renombrar el Grupo de Cálculo según conveniencia
  3. Crear un «Calculation Item«, uno por cada patrón de cálculo recurrente que deba codificarse.
Creación de grupos de cálculo y posiciones

PY =
CALCULATE(
    SELECTEDMEASURE(), –input parametrizado
    SAMEPERIODLASTYEAR( ‘Date'[Date] )
)

PM =
CALCULATE(
    SELECTEDMEASURE(),
    PREVIOUSMONTH( ‘Date'[Date] )
)

Una idea de cómo funcionan los Grupos de Cálculo la proporciona su uso en una matriz (matriz visual), en cuyas filas tenemos el año fiscal y el mes, en cuyas columnas tenemos el Grupo de Cálculo creado, y en cuyo campo de valores el argumento de entrada, que en el ejemplo siguiente es la medida de Sales. La medida Sales sustituirá al marcador de posición, en todos aquellos lugares en los que se haga referencia a él a través de la función SELECTEDMEASURE, con la ventaja de que la misma lógica de cálculo, codificada en el Grupo de Cálculo -quizás el nombre «grupo de cálculo» sea ahora más claro- puede aplicarse también a la medida Orders.

Matrix

Un elemento de cálculo puede hacer referencia a otro, como es el caso del % de variación intermensual, pero hay que tener cuidado de incluir la SELECTEDMEASURE, ya que de lo contrario no habrá ninguna referencia que pueda sustituirse por la medida deseada.

MoM % =
DIVIDE(
    SELECTEDMEASURE(),
    CALCULATE(
               SELECTEDMEASURE(),
               ‘Time Intelligence'[Time Intelligence] = «PM»
     )

) -1

La fórmula anterior representa el cambio porcentual entre un mes y el mes anterior. La fórmula (Mes en curso – Mes anterior) / Mes anterior es similar a la fórmula (Mes en curso / Mes anterior) -1. La segunda fórmula se ha utilizado para que la lectura de la medida sea más clara.

A la inversa, una expresión no puede escribirse en DAX porque no representa una medida sustituible, por ejemplo, la imagen siguiente no funciona:

MoM % =
DIVIDE(
    SELECTEDMEASURE(),
    CALCULATE(
               SUMX(
                            Sales,
                            Sales[Unit Price] * Sales[Order Quantity]
                            ),
               ‘Time Intelligence'[Time Intelligence] = «PM»
     )

) -1

Como podrás observar, el elemento de cálculo TEST MoM % muestra siempre el valor 0%.

Matrix

A continuación se muestra cómo crear el elemento de cálculo llamando a otro, especificando el formato de visualización (porcentaje) mediante la opción Cadena de formato dinámica (Dynamic format string).

MoM % y Dynamic Format

La imagen muestra el valor actual de las ventas (Medida Actual), el valor del mes anterior (PM) y el cambio porcentual (MoM %) calculado con el Grupo de Cálculo que hemos creado.

Matrix

Calculation Group e Slicer

Un Grupo de Cálculo también puede ser utilizado en combinación con el slicer para seleccionar que Item de Cálculo mostrar, en el ejemplo de abajo mostramos el valor de las ventas, Sales, para el mes y año actual, para el mismo mes pero del año pasado y/o para el mes anterior. Esto crea un gráfico de barras con ejes x e y

Cambiar entre Elemento de cálculo

Hemos visto un caso de uso interesante sobre el periodo de tiempo, donde el Elemento de Cálculo contiene las funciones de Time Intelligence aplicadas sobre la medida referenciada (argumento de entrada). Pero no es el único, de hecho puede ocurrir que tengamos la Tabla de Hechos ( Sales en el ejemplo) -lado muchos- con varias relaciones (por tanto exactamente una activa) sobre el mismo atributo de la Tabla de Dim ( Date en el ejemplo) -lado 1-, por lo que un uso interesante de los Grupos de Cálculo consiste en obtener versiones filtradas de las medidas principales (argumento de entrada) ( Filter Context) para las distintas relaciones, incluso las inactivas, codificando la lógica en el Item de Cálculo gracias a la función USERELATIONSHIP

Activar relaciones inactivas

El siguiente ejemplo muestra la creación de un nuevo Grupo de Cálculo, en Fecha Diferente, precisamente para este propósito y el uso en una matriz (matriz visual) con la posibilidad de utilizar también el Grupo de Cálculo en un filtro (slicer) para seleccionar el Elemento de Cálculo a mostrar.

Cambiar de fecha
Cambiar de fecha en Matrix

Para terminar, algunas observaciones

La activación de la opción «Model explorer and Calculation group authoring» advierte al usuario de que no está garantizado el soporte completo para las medidas implícitas, aquellas medidas que se crean simplemente arrastrando una columna de datos a un elemento visual y sobre las que se puede actuar eligiendo el nivel de agregación.

A nivel gráfico, existe una limitación en la especificación de propiedades de formato («conditional formatting») para Elementos de Cálculo individuales. En el ejemplo mostrado, puede verse que no es posible, cuando se aplica formato condicional, seleccionar reglas para el Elemento de Cálculo individual. Por lo tanto, no es posible resaltar el MoM % en rojo cuando es negativo o añadir la Barra de Datos a las ventas de la Medida Actual.

Formato condicional
  • En cambio, es bueno recordar el gran impacto positivo de los Grupos de Cálculo en términos de:
  • Reducir el número de medidas que comparten un patrón de cálculo común/actual
  • Facilidad de mantenimiento del código, ya que la lógica de cálculo se codifica en un único lugar, a nivel de cada elemento de cálculo.

Descubre nuestras soluciones Power BI

A tu lado, desde la consultoría a la formación, pasando por las soluciones de visualización de datos.

Visualitics Team
Este artículo ha sido escrito y editado por uno de nuestros consultores.

Compártelo ahora en tus redes sociales o por correo electrónico:

Suscríbete al boletín

Para estar informado sobre las novedades de Tableau y Alteryx, sobre nuestros productos y servicios y sobre los próximos eventos de Visualitics, suscríbete a nuestro boletín. ¡Puedes elegir el tipo de envío que prefieres y darte de baja en cualquier momento!
¿Qué novedades quieres recibir?
¿Qué empresa trata tus datos?

VISUALITICS PARTNERS, S.L. (en adelante, “VISUALITICS“)

¿Por qué tratamos los datos que te pedimos?

Únicamente tratamos tus datos para poder prestarte los servicios de VISUALITICS + info

¿Cuál es la legitimación para este tratamiento de tus datos?

Estos datos son necesarios para llevar a cabo la prestación de los servicios ofrecidos por VISUALITICS + info

¿Se van a hacer cesiones o transferencias con tus datos?

Si así lo consientes, tus datos podrán ser cedidos a terceras empresas. + info

¿Cuáles son mis derechos?

El interesado tiene derecho a ejercitar su derecho de:

– Acceso, rectificación, supresión, oposición, portabilidad de los Datos, limitación del tratamiento y a no ser objeto de decisiones automatizadas individualizadas + info

¿Tienes dudas?

Tanto si tienes alguna o sugerencia como si quieres darte de baja ponte en contacto con nosotros enviando un email a la siguiente dirección: info@visualitics.es