Nueva columna para concatenar texto para jerarquías de árboles anidadas

Un usuario Pregunto ✅

JoeFields

Tengo una tabla de datos que es una lista de nodos de árbol anidados y estoy buscando una forma de concatenar una columna específica con los datos del «nombre» para mostrar la ruta completa a cada nodo excluyendo la raíz. A continuación, se muestra un ejemplo simplificado:

Identificación de los padres identificación nombre ruta completa
0001 Raíz
0001 0002 Nivel 1 Nivel 1
0002 0003 Área A Nivel 1 -> Área A
0002 0004 Área B Nivel 1 -> Área B

Tengo las columnas de arriba, excepto la «ruta completa», que necesito escribir una expresión DAX para crear. Necesito una nueva fórmula de columna que pueda recorrer cada línea y buscar el parent_id en la columna de identificación y devolver el nombre para anteponerlo al nombre del nodo original y luego continuar hasta que llegue a un parent_id que está en blanco, lo que indica que está en la raíz. No necesito el nombre de la raíz en la ruta completa.

¡Gracias!

wdx223_Daniel

wdx223_Daniel_0-1613281206487.png

Amitchandak

@JoeFields, ¿ya probaste path in power bi y no te ayudó?

https: //radacad.com/parsing-organizational-hierarchy-or-chart-of-accounts-in-power-bi-with-parent-ch …

https: //www.thebiccountant.com/2019/10/03/parent-child-hierarchies-with-multiple-parents-in-power-bi …

JoeFields

En respuesta a Amitchandak

No he probado Path pero podría acercarme un poco más. Mi problema es que necesito Path pero con una búsqueda de pares clave-valor donde la identificación y la identificación de los padres se usan para encontrar cada relación entre padres e hijos, pero luego hacen que use la columna de nombre para crear la ruta. La ruta parece funcionar solo para la identificación única. Es posible que pueda llegar allí si puedo construir la ruta y luego analizar cada ID en la ruta para crear la ruta usando las columnas de nombre. Básicamente, use una columna intermedia con la ruta (según los identificadores) y luego repita cada parte de la ruta para hacer la ruta (según los nombres). ¿Cómo puedo recorrer la ruta y hacer una búsqueda para reemplazar la identificación con el nombre?

Además, estoy tratando de que la ruta funcione, pero obtengo este error. Parece que no le gusta si la columna parent_id contiene espacios en blanco, pero un espacio en blanco significa que está en la raíz. La documentación indica que Path debería poder manejar espacios en blanco y supongo que así es como sabe que ha llegado a la raíz.

Snag_2d6de79d.png

Aquí hay una instantánea de mis datos reales para mostrar la estructura que tengo. Cada id es un GUID y la profundidad de las ramas puede variar, pero lo más probable es que no supere los 10 niveles de profundidad como máximo.

JoeFields_0-1613158473888.png

rfigtree

En respuesta a JoeFields

registros huérfanos.

tienes datos sucios. (Dios mío, ahora sé por qué no pude hacerlo funcionar)

tal vez cambie la clave principal del registro huérfano a un espacio en blanco (o elimínelo) antes de permitir que Dax se apodere de él.

rfigtree_0-1613285110916.png

rfigtree_1-1613285165284.png

rfigtree

En respuesta a JoeFields

sí, la ruta de dax necesita una cierta estructura de datos para funcionar.

Intente usar Power query, con self joins.

Exploté una estructura de lista de materiales a 7 niveles usando Power query y funcionó bien.

Puede volverse un poco lento si tiene una estructura de big data pero hace el trabajo.

(Acabo de recordar el uso de Table.Buffer () en PQ. Acelera un poco, o tal vez solo me lo estaba imaginando, ¿quién sabe?)

Supongo que podría MS ACCESS u otra base de datos si Power Query no está a la altura.

Deja un comentario

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