Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Transformar estructura de tabla

Hola

Tengo esta estructura de la Tabla 1 y necesito convertirla a la estructura de la Tabla 2, principalmente los valores para que el mismo ID aparezca en una sola fila, separados por ;. ¿Sabe cómo se puede lograr esto en Power Query?

¡Muchas gracias de antemano por su apoyo!

Cuadro 1

IDENTIFICACIÓNValor
1a
1b
1c
2x
2y
2z

Cuadro 2

IDENTIFICACIÓNValor
1a;b;c
2x;y;z
  • @andra2

    let
        Source = Web.BrowserContents("https://community.powerbi.com/t5/Desktop/Transform-table-structure/m-p/2250024#M818814"),
        #"Extracted Table From Html" = Html.Table(Source, {{"Column1", "TABLE:nth-child(6) > * > TR > :nth-child(1)"}, {"Column2", "TABLE:nth-child(6) > * > TR > :nth-child(2)"}}, [RowSelector="TABLE:nth-child(6) > * > TR"]),
        #"Promoted Headers" = Table.PromoteHeaders(#"Extracted Table From Html", [PromoteAllScalars=true]),
        #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"ID", Int64.Type}, {"Value", type text}}),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"ad", each _, type table [ID=nullable number, Value=nullable text]}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let x=[ad],
        y=x[Value]
        in Text.Combine(y,":")),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"ad"})
    in
        #"Removed Columns"
  • 1) Agrupar por ID (dejarlo en cuenta ya que lo cambiaremos más adelante)

    bcdobbs_2-1640093162341.png

    Resultados en:

    bcdobbs_3-1640093199554.png

    2) Vaya al editor avanzado y cambie la línea:

        #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Count", each Table.RowCount(_), Int64.Type}})

    Para

    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Combined", each Text.Combine([Value], "; "), type text}})

4 Replies

  • @andra2

    let
        Source = Web.BrowserContents("https://community.powerbi.com/t5/Desktop/Transform-table-structure/m-p/2250024#M818814"),
        #"Extracted Table From Html" = Html.Table(Source, {{"Column1", "TABLE:nth-child(6) > * > TR > :nth-child(1)"}, {"Column2", "TABLE:nth-child(6) > * > TR > :nth-child(2)"}}, [RowSelector="TABLE:nth-child(6) > * > TR"]),
        #"Promoted Headers" = Table.PromoteHeaders(#"Extracted Table From Html", [PromoteAllScalars=true]),
        #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"ID", Int64.Type}, {"Value", type text}}),
        #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"ad", each _, type table [ID=nullable number, Value=nullable text]}}),
        #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let x=[ad],
        y=x[Value]
        in Text.Combine(y,":")),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"ad"})
    in
        #"Removed Columns"
  • HI @andra2 ,

    Puede crear una columna calculada de la siguiente manera:

    Column =
    CONCATENATEX (
        FILTER (
            SUMMARIZE ( Table2, Table2[ID], Table2[Value] ),
            Table2[ID] = EARLIER ( Table2[ID] )
        ),
        Table2[Value],
        ";"
    )

    Esto le da el resultado requerido:

    Pragati11_0-1640093504765.png

    Gracias

    Pragati

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hay @smpa01 ,

      Curioso por saber si mi solución no es la correcta.

      ¿Solo quieres entender qué te impidió aceptarlo como una solución? 🙂

      Gracias

      Pragati

  • 1) Agrupar por ID (dejarlo en cuenta ya que lo cambiaremos más adelante)

    bcdobbs_2-1640093162341.png

    Resultados en:

    bcdobbs_3-1640093199554.png

    2) Vaya al editor avanzado y cambie la línea:

        #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Count", each Table.RowCount(_), Int64.Type}})

    Para

    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {{"Combined", each Text.Combine([Value], "; "), type text}})