Vamos a explicar con ejemplos toda teoría descrita en los post anteriores sobre el contexto de evaluación. Fijaremos conceptos teóricos a través de ejemplos. En concreto, crearemos una tabla de parámetro con DAX y Power Pivot.

La idea detrás de la creación de una tabla parámetro (parameter table), es crear una tabla en el modelo que no esté relacionada con ninguna otra tabla del modelo. Esta tabla será utilizada con fórmulas DAX para cambiar la conducta del modelo.

Para ilustrar este concepto, vamos a utilizar un ejemplo. Imagina que quieres mostrar la suma de las ventas de tu empresa (sales amount), como el valor puede ser muy alto los datos globales pueden parecer como una ristra de número ilegible. Vamos a crear un informe en Power BI con datos ficticios para tener un ejemplo.

Hemos creado un modelo de una tabla con datos financieros podemos ver el informe con una matriz de Power BI.

Matriz Informe Ventas Power BI

Como se puede comprobar el informe presenta muchos números pero no da mucha información. Son tan grades los números que no aporta mucho el report. Si los números fuesen más pequeños o estuviesen divididos por mil o múltiplos de 1000, se ahorra espacio y se proporciona más info al informe. Modificando el comportamiento del informe en función de una escala por la que dividir se puede hacer depender de una escala elegida por el usuario. La escala se puede realizar a través de un filtro en el informe.

Para crear el slicer o segmetador que aplique la escala al informe, lo primero que se debe hacer es crear una tabla con los posibles valores de la escala en un slicer o segmentador. De esta o de otra forma, con DAX, SQL o Lenguaje M.

He utilizado la siguiente expresión DAX para crear una tabla de escalas.

Escala =
UNION (
    ROW ( «MostrarValorcomo»«Valor Real»«DivididoPor»1 );
    ROW ( «MostrarValorcomo»«Miles»«DivididoPor»1000 );
    ROW ( «MostrarValorcomo»«Millones»«DivididoPor»1000000 );
    ROW ( «MostrarValorcomo»«Billones»«DivididoPor»1000000000 )
)
Escala de Valores

 

 

Esta tabla no puede estar relacionada con la tabla principal ya que no hay forma de relacionarla, se puede considerar como una tabla de parámetros los cuales se aplicarán a petición del usuario. Una vez que la tabla se encuentra en el modelo, ya se puede utilizar como slicer o segmentador. A partir, de aquí podemos utilizar una expresión DAX para aplicar el filtro de la escala en función de lo que haya seleccionado el usuario.

La expesión DAX que necesitas para aplicar la escala correspondiente es la siguiente:

 

VentasPorEscala =
IF (
    HASONEVALUE ( Escala[DivididoPor] );
    DIVIDE ( ‘Ventas Productos'[M_Ventas]; VALUES ( Escala[DivididoPor] ) );
‘Ventas Productos'[M_Ventas]
)

El resultado final del informe quedaría como. Se puede ver que al aplicar la escala el número de cifras de las ventas se reduce quedando un informe más pintón y funcional.

Ventas Por Escala

Te puedes bajar el informe completo para hacer tus modificaciones y cálculos que quieras en el siguiente enlace:

Hay que tener en cuenta dos cosas importantes en esta fórmula, a saber:

  • La expresión utiliza la función HASONEVALUE, para comprobar el número de valores visibles que el usuario ha seleccionado del filtro MostrarValorComo (la escala). A través del IF se comprueba si se ha seleccionado un sólo valor, en cuyo caso retorna TRUE, si el número de valores seleccionados es mayor de uno o no se selecciona ninguno, el número de valores distintos seleccionados es mayor que uno, por lo que la función retorna FALSE, ya que hay más un valor visible.
  • Si se selecciona un sólo valor para la escala, podemos hacer la división del valor de la Ventas por la escala. Utilizamos VALUES(), porque sabemos que se ha seleccionado un sólo valor por lo que podemos hacer la división. Si se intentan utilizar la función VALUES() para una columna que retorna muchos valores, la función devolverá un error. Evitamos este error con la condición IF, colocada al principio de la expresión.

Este tipo de tabla de parámetros (DAX Parameter table), se puede utilizar para cualquier tipo de informe, es un ejemplo sencillo de aplicación de parámetros para la construcción de informes, dejamos a tu imaginación las aplicaciones de este tipo de funcionalidad.