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
dsever04
Frequent 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
v-eqin-msft
Community Support
Community Support

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
v-eqin-msft
Community Support
Community Support

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

HotChilli
Super User
Super User

@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

DataInsights
Super User
Super User

@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/





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




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.