Forum Discussion
Pivot_unpivot
Por favor, ayúdeme a convertir la primera tabla en la segunda tabla en Power BI.
Cuadro 1
| Valor del objeto | Fecha | Usuario | Nombre del campo | Nuevo valor |
| 1234 | 30.09.2024 | EX011111 | FRGZU | X |
| 1234 | 30.09.2024 | EX011111 | FRGZU | XX |
| 1234 | 15.10.2024 | ZT013201 | FRGZU | XXX |
| 1234 | 29.10.2024 | I0172215 | FRGKE | G |
| 1234 | 29.10.2024 | I0172215 | FRGZU | XXXX |
| 2345 | 30.06.2024 | ZT010104 | FRGZU | |
| 2345 | 30.06.2024 | ZT010104 | FRGKE | B |
| 2345 | 01.07.2024 | ZT010104 | FRGZU | X |
| 2345 | 01.07.2024 | ZT010104 | FRGKE | G |
| 2345 | 01.07.2024 | ZT010104 | FRGZU | XX |
| 3456 | 15.02.2024 | ZT012213 | FRGZU | |
| 3456 | 15.02.2024 | ZT012213 | FRGKE | B |
| 3456 | 15.02.2024 | ZT012213 | FRGKE | G |
| 3456 | 15.02.2024 | ZT012213 | FRGZU | X |
Tabla 2
| Valor del objeto | Día 1 | Usuario 1 | Nombre de campo 1 | Nuevo Valor 1 | Fecha 2 | Usuario 2 | Nombre del campo 2 | Nuevo Valor 2 | Día 3 | Usuario 3 | Nombre del campo 3 | Nuevo Valor 3 | Día 4 | Usuario 4 | Nombre del campo 4 | Nuevo Valor 4 | Día 5 | Usuario 5 | Nombre del campo 5 | Nuevo Valor 5 |
| 1234 | 30.09.2024 | EX011111 | FRGZU | X | 30.09.2024 | EX011111 | FRGZU | XX | 15.10.2024 | ZT013201 | FRGZU | XXX | 29.10.2024 | I0172215 | FRGKE | G | 29.10.2024 | I0172215 | FRGZU | XXXX |
| 2345 | 30.06.2024 | ZT010104 | FRGZU | 30.06.2024 | ZT010104 | FRGKE | B | 01.07.2024 | ZT010104 | FRGZU | X | 01.07.2024 | ZT010104 | FRGKE | G | 01.07.2024 | ZT010104 | FRGZU | XX | |
| 3456 | 15.02.2024 | ZT012213 | FRGZU | 15.02.2024 | ZT012213 | FRGKE | B | 15.02.2024 | ZT012213 | FRGKE | G | 15.02.2024 | ZT012213 | FRGZU | X |
10 Replies
- Syndicate_Admin
Administrator
@BYonRo04 Si desea esto en un objeto visual, es posible que pueda usar un objeto visual Matrix. De lo contrario, ¿desea hacerlo en Power Query o DAX? Por último, si lo desea como una tabla real en su modelo, definitivamente no es un diseño de tabla óptimo para Power BI.
- Syndicate_Admin
Administrator
Desafortunadamente, tenemos que adoptar otra solución porque para la consulta de pivote, Power BI cargó aproximadamente 30 GB y tuve que detenerlo porque no terminó de cargar.
- Syndicate_Admin
Administrator
Hell0 @BYonRo04 ,
Si el tamaño del conjunto de datos es grande, considere la posibilidad de usar el modo DirectQuery o un modelo compuesto para administrar el rendimiento y el uso de memoria de forma eficaz.
DirectQuery: mantiene los datos en el origen, lo que reduce el tamaño del archivo de Power BI.
Modelo compuesto: combina DirectQuery para tablas de hechos grandes y el modo de importación para tablas de dimensiones más pequeñas.
Como enfoque alternativo, utilice informes paginados cuando:
Necesita informes detallados, tabulares o fáciles de exportar.
Desea controlar grandes conjuntos de datos de forma eficiente sin cargar todo en la memoria.
Gracias.
- Syndicate_Admin
Administrator
Hola @BYonRo04 ,
Para convertir la tabla 1 en la tabla 2 en Power BI, deberá usar la funcionalidad de pivote y agrupación en Power Query. El objetivo es transformar varias filas por "Valor de objeto" en una sola fila, con cada registro relacionado distribuido en nuevas columnas. En Power Query, comience por cargar los datos y asegurarse de que estén ordenados por "Valor de objeto" y "Fecha" (o por el orden de fila original si es necesario).A continuación, agrupe la tabla por "Valor del objeto" y utilice la opción "Todas las filas" para conservar los registros detallados. Después de agrupar, agregue una columna de índice dentro de cada tabla agrupada para numerar las entradas (1, 2, 3, etc.) y, a continuación, expanda las filas y dinamice en función de este índice, transformando cada fila en su propio conjunto de columnas (Fecha 1, Usuario 1, Nombre de campo 1, Nuevo valor 1, etc.). Por último, cambie el nombre de las columnas según corresponda. Este enfoque aplana eficazmente el conjunto de datos para que cada objeto tenga todos sus cambios relacionados mostrados en una sola fila, al igual que el formato de la Tabla 2.
- Syndicate_Admin
Administrator
Hola @BYonRo04 ,
¿Puedo preguntarle si ha resuelto este problema? Si es así, marque la respuesta útil y acéptela como la solución. Esto será útil para que otros miembros de la comunidad que tengan problemas similares lo resuelvan más rápido.
Gracias.
- Syndicate_Admin
Administrator
Hola @BYonRo04,
¿Se ha resuelto el problema o necesita más información? Sus comentarios son valiosos para nosotros. Si la solución fue efectiva, márcala como "Solución aceptada" para ayudar a otros miembros de la comunidad que experimenten el mismo problema.
Un saludo,
Prasanna kumar
- Syndicate_Admin
Administrator
Hola @BYonRo04,
Solo un amable recordatorio: ¿se ha resuelto su problema? Si es así, le agradeceríamos que marcara la solución que funcionó como Solución aceptada, o no dude en compartir la suya si encuentra una solución diferente.
Esto no solo cierra el ciclo de su consulta, sino que también ayuda a otros miembros de la comunidad a resolver problemas similares más rápido.
¡Gracias por su tiempo y comentarios!
Mejor
Prasanna Kumar
- Syndicate_Admin
Administrator
Hola
Este código M funciona
let Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content], #"Grouped Rows" = Table.Group(Source, {"Object Value"}, {{"Count", each Table.AddIndexColumn(_,"Index",1)}}), #"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows", "Count", {"Date", "User", "Field Name", "New Value", "Index"}, {"Date", "User", "Field Name", "New Value", "Index"}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Expanded Count", {"Object Value", "Index"}, "Attribute", "Value"), #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Unpivoted Other Columns", {{"Index", type text}}, "en-IN"),{"Attribute", "Index"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged"), #"Pivoted Column" = Table.Pivot(#"Merged Columns", List.Distinct(#"Merged Columns"[Merged]), "Merged", "Value") in #"Pivoted Column"Espero que esto ayude.
- Syndicate_Admin
Administrator
Muchas gracias, Mathur.
El código M funciona muy rápido con un origen de datos con más de 1000 filas.
- Syndicate_Admin
Administrator
De nada.