Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon'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.
Hola equipo,
Tengo una tabla como la de abajo
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:
A | B | C |
1 | 2 | 3 |
4 | 5 | 6 |
¿Cómo podemos lograrlo? Recibo un error debido a valores duplicados en Column1.
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"
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.
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"
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.
Pruebe esto
Crear 2 medidas
min amount = MIN(yourdata[Column2])
max amount = MAX(yourdata[Column2])
Cree un objeto visual de matriz con
Cambiar valores a filas
Eliminar totales
Cambiar el nombre de los valores a un solo espacio
Haga clic en los botones [aceptar solución] y pulgares hacia arriba, por favor
tienen que hacerlo en Power Query
@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