Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
1 year ago
Solved

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 @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

  • 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_Admin's avatar
      Syndicate_Admin
      Administrator

      Hola @powerbidev123 -- aquí están las tablas reformateadas. Esperemos que eso ayude.

      MESA ORIGINAL

      NombreColumna1Columna2
      employee_financial_assistance_markabayan_20241121.xlsxNombre completoAbayan, Marcos
      employee_financial_assistance_markabayan_20241121.xlsxTítuloAsistente de Operaciones
      employee_financial_assistance_markabayan_20241121.xlsxEmpleoContractual
      employee_financial_assistance_markabayan_20241121.xlsxFecha de liberación del préstamo11/21/2024
      employee_financial_assistance_markabayan_20241121.xlsxMonto del préstamo4000
      employee_financial_assistance_markabayan_20241121.xlsxTipo de préstamoPréstamo Sueldo
      employee_financial_assistance_markabayan_20241121.xlsxPropósito del préstamoEnviado a los padres
      employee_financial_assistance_jeffreydacanay_20241125.xlsxNombre completoDacanay, Jeffrey
      employee_financial_assistance_jeffreydacanay_20241125.xlsxTítuloPersonal de cocina
      employee_financial_assistance_jeffreydacanay_20241125.xlsxEmpleoDedicación plena
      employee_financial_assistance_jeffreydacanay_20241125.xlsxFecha de liberación del préstamo11/25/2024
      employee_financial_assistance_jeffreydacanay_20241125.xlsxMonto del préstamo1000
      employee_financial_assistance_jeffreydacanay_20241125.xlsxTipo de préstamoAdelanto de efectivo
      employee_financial_assistance_jeffreydacanay_20241125.xlsxPropósito del préstamoAdelanto de efectivo
      employee_financial_assistance_joanflores_20241128.xlsxNombre completoFlores, Joan
      employee_financial_assistance_joanflores_20241128.xlsxTítuloPersonal de cocina
      employee_financial_assistance_joanflores_20241128.xlsxEmpleoDedicación plena
      employee_financial_assistance_joanflores_20241128.xlsxFecha de liberación del préstamo11/28/2024
      employee_financial_assistance_joanflores_20241128.xlsxMonto del préstamo500
      employee_financial_assistance_joanflores_20241128.xlsxTipo de préstamoAdelanto de efectivo
      employee_financial_assistance_joanflores_20241128.xlsxPropósito del préstamonulo

      TABLA DE DESTINO

      Nombre completoTítuloEmpleoFecha de liberación del préstamoMonto del préstamoTipo de préstamoPropósito del préstamo
      Abayan, MarcosAsistente de OperacionesContractual11/21/20244000Préstamo SueldoEnviado a los padres
      Dacanay, JeffreyPersonal de cocinaDedicación plena11/25/20241000Adelanto de efectivoAdelanto de efectivo
      Flores, JoanPersonal de cocinaDedicación plena11/28/2024500Adelanto de efectivonulo
  • 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"

  • ¡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.

  • 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.

    Columna1Columna2
    Nombre completoAbayan, Marcos
    Fecha de liberación del préstamo11/21/2024
    Monto del préstamo4000
    Tipo de préstamoPréstamo Sueldo
    Propósito del préstamoEnviado a los padres
    Nombre completoDacanay, Jeffrey
    Fecha de liberación del préstamo11/25/2024
    Monto del préstamo1000
    Tipo de préstamoAdelanto de efectivo
    Propósito del préstamoAdelanto de efectivo
    Nombre completoFlores, Joan
    Fecha de liberación del préstamo11/28/2024
    Monto del préstamo500
    Tipo de préstamoAdelanto de efectivo
    Propósito del préstamonulo


    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"




  • 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: