Las funciones RELATED y RELATEDTABLEson capaces de atravesar relaciones encadenadas entre varias tablas sin necesidad de realizar las tediosas llamadas recursivas. La única condición es que las relaciones tienen que estar en la misma dirección.

Vamos a poner el típico ejemplo de relaciones entre las tablas Producto, Subcategoría de Producto y Categoría de Producto, las relaciones se muestran en el siguiente modelo.

Modelo Tabular Producto - Subcategoría - Categoría

Modelo Tabular de Producto – SubCategoría – Categoría

Vamos a crear dos campos o columnas calculadas en la tabla Product, desnormalizando las relaciones Producto Subcategoria y Producto Categoria, en la tabla Product.

La nueva columna ProductSubcategoriaName, es el nombre de la subcategoría del producto y ProductCategoriaName es el nombre de la Categoria del Producto, las fórmulas de ambas es la siguiente:

ProductSubcategoriaName = RELATED('Product Subcategoria'[ProductSubcategoriaName])

ProductCategoriaName = RELATED('Product Categoria'[ProductCategoriaName])

En la figura de abajo se puede ver el resultado de poner la Subcategoría y la Categoría del producto en la tabla Producto.

Modelo Tabular

Desnormalización de Subcategoría y Categoría en la tabla Producto.

 

 

 

La función RELATEDTABLE, atraviesa las relaciones existentes entre las tablas, de esta forma puedes definir un campo calculado en la tabla ProducCategory que cuenta el número de Productos asociados a cada Categoría. Definimos por tanto la columna calculada de la siguiente forma:

ProductsCount = COUNTROWS(RELATEDTABLE('Product'))

Producto Count Rows

Producto Count Rows en la tabla Categoría