Relaciones entre tablas en DAX – RELATEDTABLE

Hoy vamos a continuar hablando de relaciones, en este caso vamos a mostrar la utilidad de una función que aprovecha las relaciones entre tablas y evalúa una expresión de tabla en un contexto modificado por los filtros dados. Dicho así, igual no se ha entendido mucho, mejor lo vemos con un ejemplo.

Antecedentes

Supongamos que queremos ver los Importes por Territorios. Esto sería fácil, según lo aprendido antes. Basta con seleccionar las dos columnas y como las tablas están relacionadas tendríamos el resultado. No necesitamos saber DAX para esto.

Sobre esta medida implícita no podemos calcular KPIs, primer problema. Para solucionarlo, podemos utilizar la medida que ya existe, que es explícita y utilizarla, el resultado sería el mismo en cuanto a valores y además ya podríamos crear KPIs, solucionado.

Esto es correcto, tenemos una medida y con una única medida analizamos el dato según el gusto del usuario, hoy por Territorios, mañana por colores, etc. Hay que tener en cuenta que  según los distintos contextos que se apliquen a las distintas tablas tendríamos datos diferentes.

Crear columna calculada

Nuestro objetivo hoy es contar con una columna, dentro de la tabla Territorio, que nos devuelva los importes para cada Territorio. Lo que queremos es que el usuario para el que estamos modelando los datos no tenga que buscar la información relativa a los Territorios en otro sitio que no sea en su propia tabla.

Nuevamente, la columna encargada de establecer la relación no está visible, lo que según nuestras necesidades es correcto.

Ya sabemos cómo crear una columna calculada, veamos la fórmula:

Empezamos utilizando una de las funciones de agregado, tipo X, que son las que aceptan argumentos de tabla. La tabla la va a recibir en este caso a través de la función RELATEDTABLE() que es quien se va a encargar de filtrar los registros que tiene que utilizar en cada caso.

La expresión final es: =SUMX(RELATEDTABLE(DetalleOrden);DetalleOrden[Importe])

En este caso lo que ha ocurrido es que para cada valor de Territorio, la expresión ha obtenido la tabla intermedia (subconsulta o como se quiera entender) con los registros correspondientes a ese territorio en la tabla DetalleOrden, y con ellos sea aplicado el agregado, en este caso la suma.

Visualizar columna calculada

A partir de ahora el usuario cuenta con los datos que necesita dentro de esta tabla.

Sobre esta columna podemos realizar todas las operaciones que deseemos. La hemos visto funcionando como medida desde el panel valores, pues bien, además, podemos utilizarla para filtrar desde la tabla, o como segmentador. Les dejo la imagen donde se aprecia la triple utilización de la columna.

Hoy hemos creado una nueva columna que nos permite almacenar los valores calculados para una expresión dada sobre la que hemos aplicado un filtro.  Para ello nos hemos aprovechado de los agregados tipo X y de la función RELATEDTABLE(). Nuevamente el uso del Lenguaje de expresiones DAX nos ha permitido avanzar en el modelado de nuestros datos para hacerle llegar al usuario un modelo más acorde con sus necesidades. En la siguiente entrada vamos a estar hablando de relaciones múltiples, y de relaciones activas y no activas.

 

Tags: , , ,

2 Comments to Relaciones entre tablas en DAX – RELATEDTABLE

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *