Analysis Services Tabular y Power Pivot no poseen un soporte directo a relaciones padre-hijo, sino que exponen una serie de funciones que permiten naturalizar una jerarquía Padre-Hijo.
Vamos a trabajar con la siguiente tabla, Organization de AdventureWorksDW:
Lo primero es generar una columna calculada, con el camino de los nodos, desde el principal, para esto debemos utilizar la función PATH de DAX
=PATH([OrganizationKey];[ParentOrganizationKey])
Esto nos agrega una nueva columna a la tabla con los nodos separados por |
Ahora necesitamos armar tantas columnas como niveles de nuestra jerarquía, si esto nos obliga a definir una profundidad fija de navegación. Para estas columnas calculadas utilizaremos la función PATHITEM
=PATHITEM([Path];1;INTEGER)
=PATHITEM([Path];2;INTEGER)
…
=PATHITEM([Path];4;INTEGER)
Estas columnas tendrán el valor correspondiente a cada nivel para ese registro, es decir, nos devuelve el valor entre | para la posición indicada.
Ahora tenemos que utilizar una segunda función DAX para reemplazar en la misma o una nueva columna el valor del nivel obtenido por la descripción correspondiente. Utilizaremos la función LOOKUPVALUE.
=LOOKUPVALUE([OrganizationName];[OrganizationKey];PATHITEM([Path];1;INTEGER))
…
=LOOKUPVALUE([OrganizationName];[OrganizationKey];PATHITEM([Path];4;INTEGER))
Ahora resta configurar una jerarquía con los niveles definidos