Forum Discussion
Transformar Column1 en ColumnHeaders
Hola, esto se siente como un problema de transformación muy básico, pero por mi vida, no puedo descifrar los pasos adecuados para llegar a la mesa que desea. ¡Cualquier ayuda es muy apreciada!
MESA ORIGINAL
Columna1 Columna2
Flores llamadas, Mark
Fecha de liberación del préstamo 21/11/2024
Monto del préstamo 4000
Tipo de Préstamo Préstamo Salario
Propósito del préstamo Enviado a los padres
Nombre completo Dacanay, Jeffrey
Fecha de liberación del préstamo 25/11/2024
Monto del préstamo 1000
Tipo de Préstamo Adelanto de Efectivo
Propósito del préstamo Adelanto de efectivo
Nombre completo Flores, Joan
Fecha de liberación del préstamo 28/11/2024
Monto del préstamo 500
Tipo de Préstamo Adelanto de Efectivo
Préstamo Propósito nulo
TABLA DE RESULTADOS OBJETIVO
Nombre completo Fecha de liberación del préstamo Monto del préstamo Tipo de préstamo Propósito del préstamo
Abayan, Mark 21/11/2024 Préstamo de 4000 salarios enviado a los padres
Dacanay, Jeffrey 25/11/2024 1000 Adelanto de Efectivo Adelanto de Efectivo
Flores, Joan 28/11/2024 500 Adelanto de efectivo nulo
Bien
David
Hola @powerbidev123
Aquí está la solución a su problema
Ritesh
✔️Por favor, marque la respuesta si es útil para que pueda ayudar a otros también🙏
Hola @dyabes
He tomado solo la columna 1 y la columna 2 en mi archivo de Excel:
Esta es la consulta M:
dejar
Origen = Excel.Workbook(File.Contents("File_Name.xlsx"), null, true),
Sheet1_Sheet = fuente{[item="Hoja1",kind="hoja"]}[datos],
#"Encabezados promocionados" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
#"Tipo cambiado" = Tabla.TransformColumnTypes(#"Encabezados promocionados",{{"Columna1", escriba texto}, {"Columna2", escriba cualquiera}}),
#"Columna condicional agregada" = Tabla.AddColumn(#"Tipo cambiado", "Grupo", cada uno si [Columna1] = "Nombre completo" entonces [Columna2] else null),
#"Llenado" = Tabla.FillDown(#"Columna condicional agregada",{"Grupo"}),
#"Columna pivotada" = Tabla.Pivote(#"Llenado", Lista.Distinto(#"Llenado"[Columna1]), "Columna1", "Columna2"),
#"Columnas eliminadas" = Table.RemoveColumns(#"Columna pivotada",{"Grupo"})
en
#"Columnas eliminadas"
Esto debería darte el resultado deseado:
8 Replies
- Syndicate_AdminAdministrator
Hola @dyabes , sería mejor si compartiera un archivo de Excel de muestra de estos datos. La tabla original es difícil de leer
- Syndicate_AdminAdministrator
Hola @powerbidev123 -- aquí están las tablas reformateadas. Esperemos que eso ayude.
MESA ORIGINAL
Nombre Columna1 Columna2 employee_financial_assistance_markabayan_20241121.xlsx Nombre completo Abayan, Marcos employee_financial_assistance_markabayan_20241121.xlsx Título Asistente de Operaciones employee_financial_assistance_markabayan_20241121.xlsx Empleo Contractual employee_financial_assistance_markabayan_20241121.xlsx Fecha de liberación del préstamo 11/21/2024 employee_financial_assistance_markabayan_20241121.xlsx Monto del préstamo 4000 employee_financial_assistance_markabayan_20241121.xlsx Tipo de préstamo Préstamo Sueldo employee_financial_assistance_markabayan_20241121.xlsx Propósito del préstamo Enviado a los padres employee_financial_assistance_jeffreydacanay_20241125.xlsx Nombre completo Dacanay, Jeffrey employee_financial_assistance_jeffreydacanay_20241125.xlsx Título Personal de cocina employee_financial_assistance_jeffreydacanay_20241125.xlsx Empleo Dedicación plena employee_financial_assistance_jeffreydacanay_20241125.xlsx Fecha de liberación del préstamo 11/25/2024 employee_financial_assistance_jeffreydacanay_20241125.xlsx Monto del préstamo 1000 employee_financial_assistance_jeffreydacanay_20241125.xlsx Tipo de préstamo Adelanto de efectivo employee_financial_assistance_jeffreydacanay_20241125.xlsx Propósito del préstamo Adelanto de efectivo employee_financial_assistance_joanflores_20241128.xlsx Nombre completo Flores, Joan employee_financial_assistance_joanflores_20241128.xlsx Título Personal de cocina employee_financial_assistance_joanflores_20241128.xlsx Empleo Dedicación plena employee_financial_assistance_joanflores_20241128.xlsx Fecha de liberación del préstamo 11/28/2024 employee_financial_assistance_joanflores_20241128.xlsx Monto del préstamo 500 employee_financial_assistance_joanflores_20241128.xlsx Tipo de préstamo Adelanto de efectivo employee_financial_assistance_joanflores_20241128.xlsx Propósito del préstamo nulo TABLA DE DESTINO
Nombre completo Título Empleo Fecha de liberación del préstamo Monto del préstamo Tipo de préstamo Propósito del préstamo Abayan, Marcos Asistente de Operaciones Contractual 11/21/2024 4000 Préstamo Sueldo Enviado a los padres Dacanay, Jeffrey Personal de cocina Dedicación plena 11/25/2024 1000 Adelanto de efectivo Adelanto de efectivo Flores, Joan Personal de cocina Dedicación plena 11/28/2024 500 Adelanto de efectivo nulo - Syndicate_AdminAdministrator
Hola @powerbidev123
Aquí está la solución a su problema
Ritesh
✔️Por favor, marque la respuesta si es útil para que pueda ayudar a otros también🙏
- Syndicate_AdminAdministrator
Hola @dyabes
Pruebe esto:
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("rZDBasMwDIZfRfgcWFJa2DW066Frt7HmFnLQMoWGObKxlYHffo5hpKPtDmPgg9H3+xef61ptR63hCQdSmSrfMCBncED3oZqsVlUvegLPlhxKb9hD6b0k9jBYbcJALDGwNiwOWxlRJ7g3yPBKmtATbFCmkqK4W8STL5ZzpBzMmAqWeZ7P4yrY6cURNboA02hmL6Ozxiccd4MYsOjizafIuc4GW2QMGeyo6xyFH0qPvbQnYjgKdt2lUOqp+tjzm87qlk5xTWeN/gTl+ydyS9d8Lvi5zFYbRz66fH/Gv4rc3xJZ/cGD40rVNF8=", 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", type text}}), #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type), #"Added Custom" = Table.AddColumn(#"Added Index", "GroupMarker", each if [Column1] = "Full Name" then [Index] else null), #"Filled Down" = Table.FillDown(#"Added Custom",{"GroupMarker"}), #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index"}), #"Grouped Rows" = Table.Group(#"Removed Columns", {"GroupMarker"}, {{"Grouped", each _, type table [Column1=nullable text, Column2=nullable text, GroupMarker=number]}}), #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Pivoted", each Table.Pivot([Grouped], List.Distinct([Grouped][Column1]), "Column1", "Column2")), #"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"GroupMarker", "Grouped"}), #"Expanded Pivoted" = Table.ExpandTableColumn(#"Removed Columns1", "Pivoted", {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"}, {"Full Name", "Title", "Employment", "Loan Release Date", "Loan Amount", "Loan Type", "Loan Purpose"}) in #"Expanded Pivoted" - Syndicate_AdminAdministrator
¡Gracias a todos! Probé todas las sugerencias y todas funcionan. Lo esencial es tener una columna auxiliar que se usará para la función GROUP BY.
- Syndicate_AdminAdministrator
Hola
No estoy seguro de cuál es el formato de origen de estos datos. Por ejemplo, ¿tiene dos columnas separadas o tanto column1 como Column2 forman parte de una columna?
Así que he hecho la transformación asumiendo que tanto la columna 1 como la columna 2 son dos columnas separadas y se guardan en Excel.Columna1 Columna2 Nombre completo Abayan, Marcos Fecha de liberación del préstamo 11/21/2024 Monto del préstamo 4000 Tipo de préstamo Préstamo Sueldo Propósito del préstamo Enviado a los padres Nombre completo Dacanay, Jeffrey Fecha de liberación del préstamo 11/25/2024 Monto del préstamo 1000 Tipo de préstamo Adelanto de efectivo Propósito del préstamo Adelanto de efectivo Nombre completo Flores, Joan Fecha de liberación del préstamo 11/28/2024 Monto del préstamo 500 Tipo de préstamo Adelanto de efectivo Propósito del préstamo nulo
A continuación se muestran los pasos de transformación en Power Query:
Paso 1: Cree una columna condicional, llámela como 'Grupo' e incluya lo siguiente
Si [Columna1] = "Nombre completo", entonces [Columna2] else null
De esta manera, estamos tratando de romper el grupo de filas en función del nombre completo
Ste2: Rellena la columna 'Grupo'
Paso 3: Pivote la columna1 y seleccione la columna2 como valores
Paso 4: Eliminar la columna de grupo
Esta es la consulta M:
dejar
Origen = Excel.Workbook(File.Contents("File_Path.xlsx"), null, true),
Sheet1_Sheet = fuente{[item="Hoja1",kind="hoja"]}[datos],
#"Encabezados promocionados" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
#"Tipo cambiado" = Tabla.TransformColumnTypes(#"Encabezados promocionados",{{"Columna1", escriba texto}, {"Columna2", escriba cualquiera}}),
#"Columna condicional agregada" = Tabla.AddColumn(#"Tipo cambiado", "Grupo", cada uno si [Columna1] = "Nombre completo" entonces [Columna2] else null),
#"Llenado" = Tabla.FillDown(#"Columna condicional agregada",{"Grupo"}),
#"Columna pivotada" = Tabla.Pivote(#"Llenado", Lista.Distinto(#"Llenado"[Columna1]), "Columna1", "Columna2"),
#"Columnas eliminadas" = Table.RemoveColumns(#"Columna pivotada",{"Grupo"})
en
#"Columnas eliminadas" - Syndicate_AdminAdministrator
Hola @dyabes
He tomado solo la columna 1 y la columna 2 en mi archivo de Excel:
Esta es la consulta M:
dejar
Origen = Excel.Workbook(File.Contents("File_Name.xlsx"), null, true),
Sheet1_Sheet = fuente{[item="Hoja1",kind="hoja"]}[datos],
#"Encabezados promocionados" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
#"Tipo cambiado" = Tabla.TransformColumnTypes(#"Encabezados promocionados",{{"Columna1", escriba texto}, {"Columna2", escriba cualquiera}}),
#"Columna condicional agregada" = Tabla.AddColumn(#"Tipo cambiado", "Grupo", cada uno si [Columna1] = "Nombre completo" entonces [Columna2] else null),
#"Llenado" = Tabla.FillDown(#"Columna condicional agregada",{"Grupo"}),
#"Columna pivotada" = Tabla.Pivote(#"Llenado", Lista.Distinto(#"Llenado"[Columna1]), "Columna1", "Columna2"),
#"Columnas eliminadas" = Table.RemoveColumns(#"Columna pivotada",{"Grupo"})
en
#"Columnas eliminadas"
Esto debería darte el resultado deseado: