Forum Discussion
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ÓN | Valor |
| 1 | a |
| 1 | b |
| 1 | c |
| 2 | x |
| 2 | y |
| 2 | z |
Cuadro 2
| IDENTIFICACIÓN | Valor |
| 1 | a;b;c |
| 2 | x;y;z |
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)
Resultados en:
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
- Syndicate_Admin
Administrator
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" - Syndicate_Admin
Administrator
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:
Gracias
Pragati
- Syndicate_Admin
Administrator
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
- Syndicate_Admin
Administrator
1) Agrupar por ID (dejarlo en cuenta ya que lo cambiaremos más adelante)
Resultados en:
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}})