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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Pivotar una tabla en Power Query

Hola equipo,

Tengo una tabla como la de abajo

Nikhil_567_0-1736855020114.png

Y quiero pivotar esta tabla con agregación, por lo que la tabla final que se requiere después de la transformación en Power Query es como se muestra a continuación:

ABC
123
456

¿Cómo podemos lograrlo? Recibo un error debido a valores duplicados en Column1.

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Gracias por la preocupación de danextian, speedramps y bhanu_gautam sobre este tema.

Hola, @Nikhil_567

Tal vez puedas probar el siguiente código M, espero que te ayude:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTJUitWJVnICsozALGcgyxjMAsmawGVN4bJmSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    ColumnCount = Table.RowCount(Table.Distinct(Table.SelectColumns(#"Changed Type", {"Column1"}))),
    IndexGrouping = Table.AddColumn(#"Added Index", "IndexGrouping", each Number.IntegerDivide([Index], ColumnCount), Int64.Type),
    #"Removed Columns" = Table.RemoveColumns(IndexGrouping,{"Index"}),
    PivotedTable = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Column1]), "Column1", "Column2"),
    #"Removed Columns1" = Table.RemoveColumns(PivotedTable,{"IndexGrouping"})
in
    #"Removed Columns1"

vfenlingmsft_0-1736907514526.png

Adjunto el archivo pbix correspondiente a continuación.

Espero que mis sugerencias le den buenas ideas, si tiene más preguntas, aclare en una respuesta de seguimiento.
Saludos
Fen Ling,
Si esta publicación Ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola @Nikhil_567

Por favor, pruebe esto:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTJUitWJVnICsozALGcgyxjMAsmawGVN4bJmSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    IndexGrouping = Table.AddColumn(#"Added Index", "IndexGrouping", each Number.IntegerDivide([Index], 3), Int64.Type),
    #"Removed Columns" = Table.RemoveColumns(IndexGrouping,{"Index"}),
    PivotedTable = Table.Pivot( #"Removed Columns", List.Distinct(#"Removed Columns"[Column1]), "Column1","Column2" ),
    #"Removed Columns1" = Table.RemoveColumns(PivotedTable,{"IndexGrouping"})
in
    #"Removed Columns1"

danextian_0-1736863241585.png

Hola @danextian ,

Ha utilizado el número 3 al agrupar índices.

En el ejemplo dado, había 3 columnas, sin embargo, en los datos PROD reales no es fijo, puede ser 30, 80 o así sucesivamente.

¿Alguna improvisación, por favor?

Hola @

Consulte el código actualizado a continuación

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTJUitWJVnICsozALGcgyxjMAsmawGVN4bJmSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"Column2", Int64.Type}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    IndexGrouping = Table.AddColumn(#"Added Index", "IndexGrouping", each
let 
DistinctRows = List.Count(List.Distinct(#"Added Index"[Column1]))
in
 Number.IntegerDivide([Index], DistinctRows), Int64.Type),
    #"Removed Columns" = Table.RemoveColumns(IndexGrouping,{"Index"}),
    PivotedTable = Table.Pivot( #"Removed Columns", List.Distinct(#"Removed Columns"[Column1]), "Column1","Column2" ),
    #"Removed Columns1" = Table.RemoveColumns(PivotedTable,{"IndexGrouping"})
in
    #"Removed Columns1"

La actualización se realiza en el paso aplicado IndexGrouping, con una variable adicional que cuenta los valores distintos de Column1 del paso anterior. Si esto no resuelve el problema, proporcione datos de muestra que representen con precisión los datos reales, en lugar de un ejemplo demasiado simplificado. Incluya cualquier otra información relevante.

Syndicate_Admin
Administrator
Administrator

Pruebe esto

Crear 2 medidas

min amount = MIN(yourdata[Column2])
max amount = MAX(yourdata[Column2])

Cree un objeto visual de matriz con

speedramps_0-1736858841541.png

Cambiar valores a filas

speedramps_1-1736858930808.png

Eliminar totales

speedramps_2-1736858959400.png

Cambiar el nombre de los valores a un solo espacio

speedramps_3-1736859024011.png

Haga clic en los botones [aceptar solución] y pulgares hacia arriba, por favor

tienen que hacerlo en Power Query

Syndicate_Admin
Administrator
Administrator

@Nikhil_567 , Intente usar esta consulta

dejar
Source = YourTable, // Reemplácelo con el nombre real de su tabla
GroupedRows = Table.Group(Source, {"Column1"}, {{"AllData", cada _, tabla de tipo [Column1=texto que acepta valores NULL, Column2=número que acepta valores NULL]}}), ),
AddedIndex = Table.TransformColumns(GroupedRows, {"AllData", each Table.AddIndexColumn(_, "Index", 1, 1, Int64.Type)}),
ExpandedTable = Table.ExpandTableColumn(AddedIndex, "AllData", {"Column1", "Column2", "Index"}),
PivotedTable = Table.Pivot(ExpandedTable, List.Distinct(ExpandedTable[Column1]), "Column1", "Column2")
en
Tabla pivotante

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors