Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
suojis
New Member

Devops aplanar la jerarquía de elementos de trabajo

Hola gurús,

Tengo las siguientes dapps una vez script:

$select=WorkItemId
&$expand=Enlaces($select=TargetWorkItemId,LinkTypeName)
Esto devuelve la tabla en power bi:
WorkItemId TargetWorkItemId LinkTypeName
1 2 Niño
1 3 Niño
2 4 Niños
3 1 Relacionado
Cuál es la mejor manera de crear la siguiente tabla
WorkItemId TargetWorkID LinkTypeName Nivel
1 2 Niños 1
1 3 Niños 1
1 4 Niños 2
2 4 Niños 1
3 1 Relacionado 1
3 2 Niños 2
3 4 Niños 3
Así que necesito aplanar la tabla recursiva para todos los elementos maestros. Hay bucles en la estructura, por lo que la profundidad de nivel debe definirse en el script de creación de tablas o bucle recursivo debe detenerse cuando el elemento maestro o elemento de estructura viene por segunda vez en bucle.
¿Alguna pista?
5 REPLIES 5
edhans
Super User
Super User

¿Puede explicar sus datos un poco más @suojis?

No entiendo la fila 3. ¿Por qué hay una relación entre 1 y 4?

Además, si proporciona datos adicionales, utilice la opción de tabla para que no haya unos pocos cientos de espacios y char(160) para deshacerse de. Hay más información sobre cómo compartir datos en el foro en los enlaces a continuación.

Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuestas a su pregunta rápidamente
Cómo proporcionar datos de ejemplo en el foro de Power BI



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Lamento los datos de texto. Aquí están mis datos en tablas.
Texto original en
WorkItemId TargetWorkItemIdLinkTypeName
12Niño
13Niño
24Niño
31relacionado

Gol
WorkItemIdTargetWorkIDLinkTypeNameNivel
12Niño1
13Niño1
14Niño2
24Niño1
31relacionado1
32Niño2
34Niño3
Así que la fila 3 muestra el nivel de jerarquía de 1 segundo de workitemid. Si quiero mostrar todos los niveles jerárquicos (todas las partes y subpartes), solo filtro la columna workitemid. Gracias por responder y espero que esto ayude. @edhans

Hola @suojis,

Escribo dos funciones personalizadas para análisis de registros de tabla sin procesar y extraigo los registros correspondientes, puede probarlo si ayuda. (aviso: estas fórmulas todavía requerían procesamiento adicional para comprobar los niveles de relación y reemplazar los valores de los campos de nodo)

Funciones recursivas:

let
    FindDenpency=(source as table, current as number, target as number, optional output as table)=>
    let
        search=
            if output <> null 
            then Table.SelectRows(source, each [LinkTypeName]="Child" and [TargetWorkItemId]=current)
            else Table.SelectRows(source, each [LinkTypeName]="Child" and [WorkItemId]=current and [TargetWorkItemId]=target),
        merged= 
            if output <> null 
            then Table.Combine({search,output}) 
            else search,
        result = 
            if Table.RowCount(search) > 0
            then FindDenpency(source, search{0}[WorkItemId], search{0}[TargetWorkItemId], merged)
            else merged
    in
        result
in
    FindDenpency
let
    FindReference=(source as table, target as number, optional item as list, optional output as table)=>
    let
        search = 
            if item <> null
            then Table.SelectRows(source, each [LinkTypeName]="Child" and List.Contains(item, [WorkItemId]))
            else Table.SelectRows(source,each [LinkTypeName]="Child" and [WorkItemId] = target),
        merged= 
            if output <> null 
            then Table.Combine({search,output}) 
            else search,
        result = 
            if Table.RowCount(search) >0 
            then FindReference(source,target, search[TargetWorkItemId],merged) 
            else merged        
    in
        result
in
    FindReference

Tabla de pruebas:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTICYueMzJwUpVgdiIgxighI3gRFBCQPUheUmpNYkgoUiwUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [WorkItemId = _t, TargetWorkItemId = _t, LinkTypeName = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"WorkItemId", Int64.Type}, {"TargetWorkItemId", Int64.Type}, {"LinkTypeName", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Relationship", each 
        if [LinkTypeName]="Child" 
        then FindDenpency(#"Changed Type",[WorkItemId],[TargetWorkItemId])
        else FindReference(#"Changed Type",[TargetWorkItemId]))
in
    #"Added Custom"

90.gif
saludos

Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.

Hola @suojis - si alguien más salta en que es genial. Estoy golpeado y necesito dar un paso atrás y mirar esto, así que no lo he abandonado, pero esto no es una solución rápida que puedo ver todavía. Miraré con más seriedad esta noche o mañana cuando termine mi fecha límite hoy con el trabajo. 👍



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
Greg_Deckler
Super User
Super User

@ImkeF @edhans @HotChilli


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.