Transponer datos de Excel a columnas en Power BI

Un usuario Pregunto ✅

Anónimo

Hola !

Quería transponer los datos de Excel en Power BI para obtener el elemento, el año, los meses y otros datos en columnas individuales, con los que estoy luchando ahora.

Quiero mostrarlo como en las columnas de abajo.

Elemento Año Mes Datos

Proyectos completados / mes 2019 Oct 0

Proyectos completados / mes 2019 Nov 0

Proyectos completados / mes 2019 1 de diciembre

Proyectos terminados / mes 2019 Oct 0

Proyectos terminados / mes 2019 Nov 0

Proyectos terminados / mes 2019 dic 11

Total de proyectos finalizados 2019 oct 0

Total de proyectos finalizados 2019 noviembre 0

Total de proyectos finalizados 2019 dic 11

Proyectos completados / mes 2019 Oct 0

Proyectos completados / mes 2019 Nov 0

Proyectos completados / mes 2019 Dic 0

Proyectos terminados / mes 2019 Oct 0

Proyectos terminados / mes 2019 Nov 0

Proyectos terminados / mes 2019 Dic 0

Total de proyectos finalizados 2019 octubre 11

Total de proyectos finalizados 2019 noviembre 11

Total de proyectos finalizados 2019 dic 11

y así…..

Hay tres conjuntos de datos en la tabla a continuación y quiero que todo esté en columnas, por lo que es apropiado cuando se crea el informe basado en los datos del año / mes

2019
oct nov dic
Proyectos completados / mes 0 0 1
Proyectos terminados / mes 0 0 11
Total de proyectos finalizados 0 0 11
Proyectos totales 353
Total de proyectos es 27039
2019
oct nov dic
ETH – Alto 3 6 88
ETH acumulativo – bajo 7 11 88
ETH total bajo 9 12 1
2019
oct nov dic
ETH – bajo 5 8 33
ETH acumulativo – bajo 9 7 33
ETH total bajo 6 5 1

La ayuda será muy apreciada.

ahmedoye

@Anónimo, cuando sus datos tienen las dos filas iniciales que le gustaría traer como columnas separadas (algo así como dos filas de encabezado), debe hacer lo siguiente:

  1. Transponer la tabla: Esto traerá las dos filas de encabezado a columnas, pero hará que la columna previamente buena entre en filas con los elementos de la primera fila. No te preocupes, aplica los siguientes pasos
  2. Vaya a la pestaña Transformar y use la primera fila como encabezado: Esto hará que los elementos de la primera fila se conviertan en el encabezado
  3. Seleccione las dos nuevas columnas, haga clic con el botón derecho y seleccione Desactivar otras columnas: Esto ahora hará que tenga una nueva columna con los elementos en los encabezados convirtiéndose en la nueva columna, y los valores justo delante de ellos como una nueva columna.

Es posible que deba hacer un poco de limpieza aquí y allá después.

Espero que esto funcione para usted, si lo hace, marque como una solución para permitir que otras personas se beneficien de esto.

bfernandez

En respuesta a ahmedoye

@ahmedoye ¡esta es una gran solución!

Consulte a continuación la consulta M:

let
Source = Excel.Workbook(File.Contents("C:Usersbfernandez1DesktopTempBook1.xlsx"), null, true),
Sheet2_Sheet = Source{[Item="Sheet2",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Sheet2_Sheet,{{"Column1", type text}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}}),
#"Transposed Table" = Table.Transpose(#"Changed Type"),
#"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", Int64.Type}, {"Column2", type text}, {"EWP's completed per month", Int64.Type}, {"Initial Isometrics completed per month", Int64.Type}, {"Initial Total Isometrics", Int64.Type}, {"Initial total EWP's", Int64.Type}, {"Total Isometrics", Int64.Type}, {"Column8", type any}, {"Column9", Int64.Type}, {"Column10", type text}, {"EWP's completed per month_1", Int64.Type}, {"Isometrics completed per month", Int64.Type}, {"Total Isometrics_2", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Column1", "Column2"}, "Attribute", "Value"),
#"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Attribute] <> "Column10" and [Attribute] <> "Column9")),
#"Filled Down" = Table.FillDown(#"Filtered Rows",{"Column1"})
#"Replaced Value" = Table.ReplaceValue(#"Filled Down","_1","",Replacer.ReplaceText,{"Attribute"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","_2","",Replacer.ReplaceText,{"Attribute"})
in
#"Replaced Value1"

Por supuesto, cambie donde hay tachados con sus propios datos.

ahmedoye

@Anónimo, cuando sus datos tienen las dos filas iniciales que le gustaría traer como columnas separadas (algo así como dos filas de encabezado), debe hacer lo siguiente:

  1. Transponer la tabla: Esto traerá las dos filas de encabezado a columnas, pero hará que la columna previamente buena entre en filas con los elementos de la primera fila. No te preocupes, aplica los siguientes pasos
  2. Vaya a la pestaña Transformar y use la primera fila como encabezado: Esto hará que los elementos de la primera fila se conviertan en el encabezado
  3. Seleccione las dos nuevas columnas, haga clic con el botón derecho y seleccione Desactivar otras columnas: Esto ahora hará que tenga una nueva columna con los elementos en los encabezados convirtiéndose en la nueva columna, y los valores justo delante de ellos como una nueva columna.

Es posible que deba hacer un poco de limpieza aquí y allá después.

Espero que esto funcione para usted, si lo hace, marque como una solución para permitir que otras personas se beneficien de esto.

bfernandez

En respuesta a ahmedoye

@ahmedoye ¡esta es una gran solución!

Consulte a continuación la consulta M:

let
Source = Excel.Workbook(File.Contents("C:Usersbfernandez1DesktopTempBook1.xlsx"), null, true),
Sheet2_Sheet = Source{[Item="Sheet2",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Sheet2_Sheet,{{"Column1", type text}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}}),
#"Transposed Table" = Table.Transpose(#"Changed Type"),
#"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", Int64.Type}, {"Column2", type text}, {"EWP's completed per month", Int64.Type}, {"Initial Isometrics completed per month", Int64.Type}, {"Initial Total Isometrics", Int64.Type}, {"Initial total EWP's", Int64.Type}, {"Total Isometrics", Int64.Type}, {"Column8", type any}, {"Column9", Int64.Type}, {"Column10", type text}, {"EWP's completed per month_1", Int64.Type}, {"Isometrics completed per month", Int64.Type}, {"Total Isometrics_2", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Column1", "Column2"}, "Attribute", "Value"),
#"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Attribute] <> "Column10" and [Attribute] <> "Column9")),
#"Filled Down" = Table.FillDown(#"Filtered Rows",{"Column1"})
#"Replaced Value" = Table.ReplaceValue(#"Filled Down","_1","",Replacer.ReplaceText,{"Attribute"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","_2","",Replacer.ReplaceText,{"Attribute"})
in
#"Replaced Value1"

Por supuesto, cambie donde hay tachados con sus propios datos.

bfernandez

De acuerdo, si su objetivo es que los datos se vean como le gustaría en la tabla que publicó, puede tomar otro enfoque.

Mantenga los datos tal como vienen de la fuente y realice la edición en Power Query siguiendo los siguientes pasos:

Combinar mes y año:

merge.png

MonthYear.png

Luego, analice el MonthYear para obtener la fecha de inicio de cada MonthYear:

Parse.png

SoM.png

Luego, después de cerrar y aplicar los pasos, cree un objeto visual de Matrix y rellénelo con los datos como se muestra a continuación:

Matrix.png

Anónimo

En respuesta a bfernandez

Perdón si te había confundido en mi publicación original, la tabla publicada allí contenía los datos de la fuente de datos y la lista que mencioné era cómo debería verse.

Debería tener el siguiente aspecto en Power BI para poder crear informes:

Elemento Año Mes Datos

Proyectos terminados / mes 2019 Nov 0

Proyectos terminados / mes 2019 dic 11

Total de proyectos finalizados 2019 oct 0

Total de proyectos finalizados 2019 noviembre 0

Anónimo

En respuesta a bfernandez

Cuando los datos provienen de Excel, se ve así, los meses y los años están en filas, ¿cómo puedo convertirlos en el formato que tienes en tu primera captura de pantalla y luego seguir adelante?

Capture2.PNG

bfernandez

En respuesta a Anónimo

Estos datos parecen muy desordenados por la forma en que se presentan o no obtengo la imagen completa.

Muestra ciertas categorías que no están agrupadas como deberían o no veo la información.

Por ejemplo, hay varios «Isométricos completados por mes con diferentes valores en la misma columna de octubre de 2019».

¿Puede elaborar un poco más o dar una imagen más amplia de los datos que está proporcionando?

Amitchandak

Consulte también: https://radacad.com/pivot-and-unpivot-with-power-bi

bfernandez

Puede transponer datos utilizando la función Transponer dentro de Power Query.

Puede encontrarlo en la pestaña Transformar, en la sección Tabla.

transpose.png

Anónimo

En respuesta a bfernandez

Mis datos ahora se parecen a esto

bfernandez

En respuesta a Anónimo

No veo nada adjunto a tu respuesta, ¿puedes intentar enviar las capturas de pantalla nuevamente?

Anónimo

En respuesta a bfernandez

Capture.PNG

Anónimo

En respuesta a bfernandez

Gracias bfernandez, estoy usando la función de transposición pero no está organizando como quiero. Lo intenté de varias maneras, pero desafortunadamente no lo está reorganizando de la manera que quiero.

Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *