Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
8 months ago

Combinar columnas en 1

Tengo un conjunto de datos. Necesito combinar de alguna manera el "GIC" en una columna y el "PE" en otra columna para poder meterlos en slicers y filtrarlos. Pude transponer, pero no me permite transponer el GIC y el PE por separado en power query. Buscando algunas soluciones. Los valores "1" y "0" de esos valores son básicamente "verdadero" o "falso".

ID de clienteEstadoVentasGIC: HipertensiónGIC: CáncerGIC: ObesidadEducación física: Reemplazo de rodillaPE: FinanzasPE: Sociales
1111 350101010
2222 500010101
3333 200100100

6 Replies

  • @griffinst Lo que puedes hacer es duplicar tu consulta. En una consulta, elimina las columnas de PE y despivota. En la otra consulta, elimina las columnas GIC y despivota. Luego añade las tablas juntas.

  • Hola @griffinst

    Necesitas despivotar aquí en lugar de transponer:

    En Power Query, selecciona todas las columnas que quieres mantener fijas y luego selecciona 'despivotar otras columnas'

    Selecciona la columna 'Atributo' y luego en la pestaña principal selecciona 'Dividir columna por delimitador'

    Luego, dividido por dos puntos, delimitador más a la izquierda

    Obtienes 2 columnas nuevas, llama a Attribute.1 "Category" y Attribute.2 "Condition".

    Cierra y solicita.

    Ahora puedes añadir un filtro visual a nivel de Valor=1 (o filtrar los 0s en Power Consulty) y un segmentador de categorías para mostrar tus resultados.

    --------------------------------

    Espero que esto ayude, por favor dadme kudos y marcad como solucionado si es así.

    Conéctate conmigo en LinkedIn.

    Suscríbete a mi Canal de YouTube ¡para contenido relacionado con Fabric/Power Platform!

  • @GeraldGEmerick. Creo que podría funcionar, pero creo que necesito una fusión en lugar de un añadido. La columna dividida funcionó, pero no consigo los resultados que necesito. Estoy bastante seguro de que necesito columnas de "GIC" y "PE" para filtrar los datos correctamente. Así, un usuario puede seleccionar un filtro GIC y un filtro PE, y ambos filtrarán el conjunto de datos hasta las personas que cumplen ambos criterios.

    ver la captura de pantalla más abajo... Necesito que los valores de la "categoría" sean columnas separadas con valores de "Cat_Detail" y luego el correspondiente "Valor". Es decir... Columna "Brecha en la atención" y columna "Brecha en el valor de la atención". y lo mismo para "incontrolado...", y prevenible... Gracias por cualquier ayuda que podáis darme.

  • Hola,

    Este código M en Power Query funciona

    let
        Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer ID", Int64.Type}, {"State", type any}, {"Sales", Int64.Type}, {"GIC: Hypertension", Int64.Type}, {"GIC: Cancer", Int64.Type}, {"GIC: Obesity", Int64.Type}, {"PE: Knee Replacement", Int64.Type}, {"PE: Financial", Int64.Type}, {"PE: Social", Int64.Type}}),
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Customer ID", "State", "Sales"}, "Attribute", "Value"),
        #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(": ", QuoteStyle.Csv), {"Attribute.1", "Attribute.2"})
    in
        #"Split Column by Delimiter"

    Espero que esto ayude.

  • Hola @griffinst

    No estoy seguro de cuál es tu resultado esperado porque no publicaste el resultado esperado, pero prueba esto:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMgQCJR0lIDI2NQCSIA4mHasTrWQEBBCVpgYGWFWBaJBKYyCAqDQyQJZFZcfGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Customer ID" = _t, State = _t, Sales = _t, #"GIC: Hypertension" = _t, #"GIC: Cancer" = _t, #"GIC: Obesity" = _t, #"PE: Knee Replacement" = _t, #"PE: Financial" = _t, #"PE: Social" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer ID", Int64.Type}, {"State", type text}, {"Sales", Int64.Type}, {"GIC: Hypertension", Int64.Type}, {"GIC: Cancer", Int64.Type}, {"GIC: Obesity", Int64.Type}, {"PE: Knee Replacement", Int64.Type}, {"PE: Financial", Int64.Type}, {"PE: Social", Int64.Type}}),
        #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
        #"Added Custom" = Table.AddColumn(#"Added Index", "PE", each Table.FromColumns(
        {
            // Column names
            List.Select(Table.ColumnNames(#"Added Index"), each Text.StartsWith(_, "PE:")),
    
            // Values for the current row
            List.Transform(
                List.Select(Table.ColumnNames(#"Added Index"), each Text.StartsWith(_, "PE:")),
                (col) => Record.Field(_, col)
            )
        },
        {"PE", "PE Value"}
    )),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "GIC", each Table.FromColumns(
        {
            // Column names
            List.Select(Table.ColumnNames(#"Added Index"), each Text.StartsWith(_, "GIC:")),
    
            // Values for the current row
            List.Transform(
                List.Select(Table.ColumnNames(#"Added Index"), each Text.StartsWith(_, "GIC:")),
                (col) => Record.Field(_, col)
            )
        },
        {"GIC", "GIC Value"}
    )),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"GIC: Hypertension", "GIC: Cancer", "GIC: Obesity", "PE: Knee Replacement", "PE: Financial", "PE: Social"}),
        #"Added Custom2" = Table.AddColumn(#"Removed Columns", "Custom", each let
        PE_Table = Record.Field(_, "PE"),
        GIC_Table = Record.Field(_, "GIC")
    in
        Table.FromColumns(
            {
                Table.Column(PE_Table, "PE"),
                Table.Column(PE_Table, "PE Value"),
                Table.Column(GIC_Table, "GIC"),
                Table.Column(GIC_Table, "GIC Value")
            },
            {"PE", "PE Value", "GIC", "GIC Value"}
        )),
        #"Removed Columns1" = Table.RemoveColumns(#"Added Custom2",{"PE", "GIC"}),
        #"Expanded Custom" = Table.ExpandTableColumn(#"Removed Columns1", "Custom", {"PE", "PE Value", "GIC", "GIC Value"}, {"PE", "PE Value", "GIC", "GIC Value"}),
        #"Replaced Value" = Table.ReplaceValue(#"Expanded Custom","PE: ","",Replacer.ReplaceText,{"PE"}),
        #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","GIC: ","",Replacer.ReplaceText,{"GIC"}),
        #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value1",{{"PE Value", Int64.Type}, {"GIC Value", Int64.Type}})
    in
        #"Changed Type1"

  • Hola @griffinst,

    Gracias @danextian @wardy912 @GeraldGEmerick y @Ashish_Mathur por vuestras respuestas a la consulta.

    Como aún no hemos recibido respuesta tuya, me gustaría confirmar si has resuelto este problema con éxito o si necesitas más ayuda.

    Si aún tienes alguna pregunta o necesitas más apoyo, no dudes en decírnoslo.

    Estamos más que encantados de seguir ayudándote.