Columna personalizada equivalente a la función PATH de DAX en Power Query

Un usuario Pregunto ✅

Zubair_Muhammad

Esta fórmula de columna personalizada en Power Query proporciona un equivalente de la función PATH de DAX.

Si tiene muchos niveles (PATHLENGTH es mayor que, digamos, 10), puede ahorrarle tiempo al tener que crear columnas calculadas para obtener cada PATHITEM

Con Power Query, simplemente puede dividir la RUTA en PATHITEMS con un solo clic.

Simplemente cambie el texto en la fuente de color rojo en la fórmula a continuación de acuerdo con los nombres de sus columnas y el nombre del paso anterior. Ver la imagen para orientación

=let //Define your columns below
 c=[Child],p=[Parent],mytable=#"Changed Type",pc="Parent",cc="Child" 
  in
let mylist={c} & List.Generate(()=>[x=0,y=p,w=1],each [w] > 0,each [z=[y], 
x=Table.Column(Table.SelectRows(mytable,each Record.Field(_,cc)=z),pc),y=x{0},w=List.Count(x)
],
each [y])
        in
Text.Combine(List.Reverse(List.RemoveItems(
List.Transform(mylist,each Text.From(_)),{null,""})),"|")

RUTA.jpg

a1b1c1

Hola @Zubair_Muhammad, @Daniil
Cualquiera de los pasos consume demasiado tiempo, se ha estado ejecutando durante aproximadamente 45 minutos y aún no ha podido completar este paso. ¿Alguna ayuda?

solologmein

En respuesta a a1b1c1

He probado este método y tienes razón, esto es demasiado ineficiente. Tengo solo 6.000 filas y estamos hablando de horas de ejecución. ¿Encontraste otra solución?

Daniil

¡Buen trabajo! Solo para simplificar un poco la fórmula:

let //Define your columns here
mytable=ChangedType,p="Parent",c="Child" 
  in
let mylist={Record.Field(_,c)} & List.Generate(()=>[x=0,y=Record.Field(_,p),w=1],each [w] > 0,each [z=[y], x=Table.Column(Table.SelectRows(mytable,each Record.Field(_,c)=z),p),y=x{0},w=List.Count(x)
],
each [y])
        in
Text.Combine(List.Reverse(List.RemoveItems(
List.Transform(mylist,each Text.From(_)),{null,""})),"|")

asoysal

En respuesta a Daniil

Gracias a @Daniil y @Zubair_Muhammad. Creé la columna personalizada, con no error de sintaxis en el paso de creación de Columna Personalizada. HSin embargo, recibo un error en la vista de tabla.

Vea abajo:

= let //Defina sus columnas aquí
mytable=#»Tipo cambiado»,p=[#»DirectReportTo Asso. No.»],c=[#»Asso. No.»]
en
let mylist={Record.Field(_,c)} & List.Generate(()=>[x=0,y=Record.Field(_,p),w=1],cada [w] > 0,cada uno [z=[y]x=Table.Column(Table.SelectRows(mytable,each Record.Field(_,c)=z),p),y=x{0},w=List.Count(x)
],
cada [y])
en
Text.Combine(List.Reverse(List.RemoveItems(
List.Transform(mylist,each Text.From(_)),{null,»»})),»|»)

Zubair_Muhammad

En respuesta a Daniil

Gracias @Daniil

Deja un comentario

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