Creación de un gráfico mostrando el signo de un valor

En este escenario partimos de una métrica que queremos calcular para cada valor de una variable categórica. Por ejemplo, el "resultado" por país (con independencia de lo que represente este resultado) incluido en un libro Excel:

Dataset

Nuestro objetivo es mostrar en Power BI un pequeño gráfico para cada uno de estos valores que muestre el signo del mismo, de forma que si el valor es positivo (o cero) se muestre un cierto gráfico y si es negativo, se muestre otro.

Leemos los datos desde Power BI y creamos una tabla que nos servirá para mostrar el listado de países y sus respectivos resultados:

Matriz con la tabla leída

Las gráficas a mostrar serán los símbolos unicode 128200 y 128201:

Símbolos unicode

Aun cuando los colores que muestran no están especialmente bien escogidos (el rojo cuando la gráfica sube y el azul cuando baja) servirán para nuestros propósitos.

Para ver estos símbolos en pantalla podemos crear una sencilla medida DAX que devuelva el símbolo en cuestión:

up = UNICHAR(128200)

Y llevar esta medida a, por ejemplo, una tarjeta:

Símbolo unicode 128200

En todo caso, lo que nos interesa es crear una medida que, a partir de un cierto valor -como el resultado de cada país-, devuelva un símbolo u otro en función del signo de dicho valor.

Como -en este sencillo caso, solo tenemos dos opciones (que el valor sea mayor o igual a cero, o que sea menor que cero), bastaría usar la función IF para evaluar el valor en cuestión y devolver el símbolo adecuado:

Trend = IF(
    SUM(data[Result]) >= 0,
    UNICHAR(128200),
    UNICHAR(128201)
    )

Es decir, calculamos la suma del campo "Result" (hay que aplicar una función de agregación al campo necesariamente) y, si es mayor o igual a cero, devolvemos el símbolo unicode 128200. Y si no, el 128201. Si llevamos esta medida a nuestra tabla vemos el resultado:

Matriz con el gráfico

En un escenario con más de dos opciones tendríamos que usar IFs anidados o, mejor, la función SWITCH, que también podemos usar aquí:

Trend = 
VAR results = SUM(data[Result])
RETURN
SWITCH(
    TRUE(),
    results >= 0, UNICHAR(128200),
    results < 0, UNICHAR(128201)
    )

En la expresión anterior se ha calculado previamente la suma del campo Result para no tener que ejecutarla posteriormente más de una vez, y devolvemos el resultado de la primera condición que se cumpla: si results (suma del campo Result) es mayor o igual a cero, devolvemos el primer símbolo unicode, y si es negativo el segundo. También podríamos devolver un valor por defecto en el caso de que ninguna de las condiciones se cumpliese. Gráficamente el resultado es, en todo caso, el mismo que teníamos antes:

Matriz con el gráfico
Funciones DAX involucradas
Enviado por admin el Mar, 30/06/2020 - 13:41