cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Regular Visitor

Columnas similares en una sola tabla y necesitan orientación sobre cómo manejar

Datos de fondo y de muestra:

Tenemos datos procedentes de una sola lista de SharePoint que tiene varias transacciones en una sola fila o registro para cada equipo.

ID de registroEquipoTrans 1 IDFecha Trans 1 Trans 1 CostoTrans 2 IDFecha Trans 2Costo Trans 2Trans 3 IDTrans 3 FechaCosto Trans 3
1Equipo A456541/5/2019$1,342.22156874/26/2019$7,964.504589710/10/2019$111.12
2Equipo B489962/5/2019$900.00654893/11/2020$121.84
3Equipo C987642/7/2019$143.55254896/1/2019$2,319.10
4Equipo D781364/15/2019$684.99636327/6/2019$75.88665461/5/2020$600.01

Problemas y preguntas

En un mundo ideal, creo que los datos se organizarían mejor con cada transacción listada como una fila/registro individual. A continuación, tendríamos una sola columna Trans Date, Trans Cost y Trans ID en lugar de que se repitan en varias columnas.

Dado que este no es nuestro mundo, ¿cuál es la mejor manera de manejar datos como este? Nuestros datos reales tienen aún más columnas de transacción repetidas (50 trans total por registro). ¿Hay alguna manera de combinar columnas (por ejemplo, Fecha Trans 1, Fecha Trans 2, etc.) en una sola columna (Fechas Trans)? ¿Eso es lo que deberíamos estar buscando hacer? Un poco perdido con el formato actual y lo que debemos hacer para cambiarlo y darle forma a algo que se pueda usar para crear informes o paneles en Power BI. Cualquier orientación y ayuda es muy apreciada.

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Microsoft
Microsoft

Hola @dsever04 ,

Por favor, siga los pasos que se muestran a continuación

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ZZA9bgQhDIWvskIpkeEZMHaZnyOkG02RImXu38YmO+xKkUBYfuazn48jIeX0+f31c3v1oA8Z3V+UUbjCPHxBbp2JOdJDdEZZYdn6zCadRl3f1UJHLX42ACBwOvOR+Gr2FtVqJv7yUzOrlWqgfA6NTCuAq1wXiUEa8932DWq7qO8emE7pizofE/RGY0TyTpWCLXJuMEL9h+0X9sODqWiyrOMxrWgnW7wmLbzN8rSXQaqhuRXZO/0zImET6Tx/AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Record ID" = _t, Team = _t, #"Trans 1 ID" = _t, #"Trans 1 Date " = _t, #"Trans 1 Cost" = _t, #"Trans 2 ID" = _t, #"Trans 2 Date" = _t, #"Trans 2 Cost" = _t, #"Trans 3 ID" = _t, #"Trans 3 Date" = _t, #"Trans 3 Cost" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Record ID", Int64.Type}, {"Team", type text}, {"Trans 1 ID", Int64.Type}, {"Trans 1 Date ", type date}, {"Trans 1 Cost", Currency.Type}, {"Trans 2 ID", Int64.Type}, {"Trans 2 Date", type date}, {"Trans 2 Cost", Currency.Type}, {"Trans 3 ID", Int64.Type}, {"Trans 3 Date", type date}, {"Trans 3 Cost", Currency.Type}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Record ID", "Team"}, "Attribute", "Value"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Attribute.1", "Attribute.2", "Attribute.3", "Attribute.4"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Attribute.1", type text}, {"Attribute.2", Int64.Type}, {"Attribute.3", type text}, {"Attribute.4", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Attribute.1", "Attribute.2", "Attribute.4"}),
    #"Added Index" = Table.AddIndexColumn(#"Removed Columns", "Index", 1, 1, Int64.Type),
    #"Pivoted Column" = Table.Pivot(#"Added Index", List.Distinct(#"Added Index"[Attribute.3]), "Attribute.3", "Value"),
    #"Removed Columns1" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
    #"Removed Columns1"

10.29.4.2.gif

Aquí está el archivo pbix.

https://kohera.be/blog/power-bi/how-to-unpivot-twice/

https://community.powerbi.com/t5/Power-Query/Expression-Error-There-were-too-many-elements-in-the-en...

¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.

Saludos
Eyelyn Qin

View solution in original post

3 REPLIES 3
Highlighted
Solution Sage
Solution Sage

@dsever04,

Puede despotable cada conjunto de columnas (por ejemplo, Trans 1) utilizando la técnica siguiente.

https://datachant.com/2019/10/11/guest-story-unpivot-pairs-of-columns/

Highlighted
Super User II
Super User II

@dsever04

Si selecciona las primeras 2 columnas y 'Despivot otras columnas'

Ahora debería tener 4 columnas. Desea dividir la 3a (columna 'atributo') por delimitador (espacio) para que pueda conservar la columna de números y la columna con ID, Fecha, Costo.

Quite la columna con 'Trans' y cualquier otra columna nula.

Deberías tener 5 columnas ahora.

Pivote en la columna con ID, Fecha, Costo, utilizando Valor como la columna Valores. Elija 'No agregar' en la sección avanzada.

Filtre los valores nulos en la columna ID.

Eso debería funcionar

Highlighted
Microsoft
Microsoft

Hola @dsever04 ,

Por favor, siga los pasos que se muestran a continuación

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ZZA9bgQhDIWvskIpkeEZMHaZnyOkG02RImXu38YmO+xKkUBYfuazn48jIeX0+f31c3v1oA8Z3V+UUbjCPHxBbp2JOdJDdEZZYdn6zCadRl3f1UJHLX42ACBwOvOR+Gr2FtVqJv7yUzOrlWqgfA6NTCuAq1wXiUEa8932DWq7qO8emE7pizofE/RGY0TyTpWCLXJuMEL9h+0X9sODqWiyrOMxrWgnW7wmLbzN8rSXQaqhuRXZO/0zImET6Tx/AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Record ID" = _t, Team = _t, #"Trans 1 ID" = _t, #"Trans 1 Date " = _t, #"Trans 1 Cost" = _t, #"Trans 2 ID" = _t, #"Trans 2 Date" = _t, #"Trans 2 Cost" = _t, #"Trans 3 ID" = _t, #"Trans 3 Date" = _t, #"Trans 3 Cost" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Record ID", Int64.Type}, {"Team", type text}, {"Trans 1 ID", Int64.Type}, {"Trans 1 Date ", type date}, {"Trans 1 Cost", Currency.Type}, {"Trans 2 ID", Int64.Type}, {"Trans 2 Date", type date}, {"Trans 2 Cost", Currency.Type}, {"Trans 3 ID", Int64.Type}, {"Trans 3 Date", type date}, {"Trans 3 Cost", Currency.Type}}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Record ID", "Team"}, "Attribute", "Value"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Attribute.1", "Attribute.2", "Attribute.3", "Attribute.4"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Attribute.1", type text}, {"Attribute.2", Int64.Type}, {"Attribute.3", type text}, {"Attribute.4", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Attribute.1", "Attribute.2", "Attribute.4"}),
    #"Added Index" = Table.AddIndexColumn(#"Removed Columns", "Index", 1, 1, Int64.Type),
    #"Pivoted Column" = Table.Pivot(#"Added Index", List.Distinct(#"Added Index"[Attribute.3]), "Attribute.3", "Value"),
    #"Removed Columns1" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
    #"Removed Columns1"

10.29.4.2.gif

Aquí está el archivo pbix.

https://kohera.be/blog/power-bi/how-to-unpivot-twice/

https://community.powerbi.com/t5/Power-Query/Expression-Error-There-were-too-many-elements-in-the-en...

¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.

Saludos
Eyelyn Qin

View solution in original post

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Community Conference

Microsoft Power Platform Communities

Check out the Winners!

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Solution Authors