Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Combinar filas

Hola - Estoy tratando de combinar filas para "PVColumnName" para cada ProcessOrderNbr. Me gustaría que cada PrcocessOrderNbr tuviera "Fail" y el comentario fallido en la misma columna. He probado el método donde se agrupa por tabla y estoy recibiendo un error cuando intento hacerlo de esa manera. ¿Alguna idea?

Quiero que mi mesa se vea así, pero con el coment Fail y Failed combinado.

Gracias en Avanzado! - Rachel

2021-01-07_15h10_30.png

2021-01-07_15h02_07.png

2021-01-07_15h06_30.png

  • Anonymous's avatar
    Anonymous
    5 years ago

    No @a9c4vzz ,

    Según mi entendimiento, quieres combinar los valores de cada categoría, ¿verdad?

    Lo hice de dos maneras, se podría echar un vistazo al archivo pbix aquí.

    1. Utilice la siguiente fórmula para crear una nueva tabla:

    Table 2 =
    VAR _t =
        SUMMARIZECOLUMNS ( 'Table'[ProcessOrderNbr], 'Table'[PVColumnName] )
    VAR _t1 =
        DISTINCT (
            SELECTCOLUMNS (
                ADDCOLUMNS (
                    _t,
                    "a",
                        CONCATENATEX (
                            FILTER (
                                _t,
                                [PVColumnName] <> "Fail"
                                    && [ProcessOrderNbr] = EARLIER ( [ProcessOrderNbr] )
                            ),
                            [PVColumnName],
                            ""
                        )
                ),
                "Pro", [ProcessOrderNbr],
                "PVC", [a]
            )
        )
    VAR _t2 =
        DISTINCT ( SELECTCOLUMNS ( _t, "Pro", [ProcessOrderNbr], "PVC", "Fail" ) )
    RETURN
        UNION ( _t1, _t2 )

    2. En Power Query:

    • Nueva tabla1: Duplicar la tabla original-->Seleccionar columnas-->Filtro PVC "Error"-->Eliminar duplicado:

    1.11.3.1.gif

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjYwNrMwM1bSUTIAARdTJ4sQA1Mg1y0xM0cpVod4FaaYKkL1jc0cdYCkhaOClYJTqJOTjyslOiwNYDpMjD0sTAyMMFxBhAozTBWhugYWjjoKobqGBkDLdQ0NHQmpNzQGKzQBk6aOeiDHOroo+DhGuQYp+DoGeSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, ProcessOrderNbr = _t, PVColumnName = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"ProcessOrderNbr", type text}, {"PVColumnName", type text}}),
        #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"ProcessOrderNbr", "PVColumnName"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each ([PVColumnName] = "Fail")),
        #"Removed Duplicates" = Table.Distinct(#"Filtered Rows")
    in
        #"Removed Duplicates"

    • Nueva tabla2: Duplicar la tabla original-->Seleccionar columnas-->Filtro PVC<>"Fail"-->Then as @Ashish_Mathur suggested, use Text.Combine() para agrupar filas.

    1.11.3.2.gif

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjYwNrMwM1bSUTIAARdTJ4sQA1Mg1y0xM0cpVod4FaaYKkL1jc0cdYCkhaOClYJTqJOTjyslOiwNYDpMjD0sTAyMMFxBhAozTBWhugYWjjoKobqGBkDLdQ0NHQmpNzQGKzQBk6aOeiDHOroo+DhGuQYp+DoGeSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, ProcessOrderNbr = _t, PVColumnName = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"ProcessOrderNbr", type text}, {"PVColumnName", type text}}),
        #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"ProcessOrderNbr", "PVColumnName"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each [PVColumnName] <> "Fail"),
        #"Grouped Rows" = Table.Group( #"Filtered Rows", {"ProcessOrderNbr"}, {{"PVColumnName", each Text.Combine(List.Distinct([PVColumnName]), ", "), type text}})
    in
        #"Grouped Rows"

    • Por fin, anexe estas dos nuevas tablas.

    La salida final se muestra a continuación:

    1.11.3.3.PNG

    Saludos
    Eyelyn Qin
    Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

5 Replies

  • Hola

    ¿Desea ver solo 2 filas: una para cada ProcessOrderNbr? Comparte el enlace desde donde puedo descargar tu archivo PBI.

    • Anonymous's avatar
      Anonymous
      Not applicable

      No, solo quiero ver una fila para cada número de proceso. La fila debe tener Fail y el comentario en la misma celda. No puedo compartir el archivo porque es información confidencial.

      • Ashish_Mathur's avatar
        Ashish_Mathur
        Icon for Super User rankSuper User

        Hola

        Este código M funciona

        let
            Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
            #"Grouped Rows" = Table.Group(Source, {"Process OrderNbr"}, {{"All names", each Text.Combine(List.Distinct([PVColumnName]), ", "), type text}}),
            Joined = Table.Join(Source, "Process OrderNbr", #"Grouped Rows", "Process OrderNbr"),
            #"Removed Columns" = Table.RemoveColumns(Joined,{"PVColumnName"}),
            #"Removed Duplicates" = Table.Distinct(#"Removed Columns")
        in
            #"Removed Duplicates"

        Espero que esto ayude.

        Untitled.png

  • Anonymous's avatar
    Anonymous
    Not applicable

    No @a9c4vzz ,

    Según mi entendimiento, quieres combinar los valores de cada categoría, ¿verdad?

    Lo hice de dos maneras, se podría echar un vistazo al archivo pbix aquí.

    1. Utilice la siguiente fórmula para crear una nueva tabla:

    Table 2 =
    VAR _t =
        SUMMARIZECOLUMNS ( 'Table'[ProcessOrderNbr], 'Table'[PVColumnName] )
    VAR _t1 =
        DISTINCT (
            SELECTCOLUMNS (
                ADDCOLUMNS (
                    _t,
                    "a",
                        CONCATENATEX (
                            FILTER (
                                _t,
                                [PVColumnName] <> "Fail"
                                    && [ProcessOrderNbr] = EARLIER ( [ProcessOrderNbr] )
                            ),
                            [PVColumnName],
                            ""
                        )
                ),
                "Pro", [ProcessOrderNbr],
                "PVC", [a]
            )
        )
    VAR _t2 =
        DISTINCT ( SELECTCOLUMNS ( _t, "Pro", [ProcessOrderNbr], "PVC", "Fail" ) )
    RETURN
        UNION ( _t1, _t2 )

    2. En Power Query:

    • Nueva tabla1: Duplicar la tabla original-->Seleccionar columnas-->Filtro PVC "Error"-->Eliminar duplicado:

    1.11.3.1.gif

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjYwNrMwM1bSUTIAARdTJ4sQA1Mg1y0xM0cpVod4FaaYKkL1jc0cdYCkhaOClYJTqJOTjyslOiwNYDpMjD0sTAyMMFxBhAozTBWhugYWjjoKobqGBkDLdQ0NHQmpNzQGKzQBk6aOeiDHOroo+DhGuQYp+DoGeSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, ProcessOrderNbr = _t, PVColumnName = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"ProcessOrderNbr", type text}, {"PVColumnName", type text}}),
        #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"ProcessOrderNbr", "PVColumnName"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each ([PVColumnName] = "Fail")),
        #"Removed Duplicates" = Table.Distinct(#"Filtered Rows")
    in
        #"Removed Duplicates"

    • Nueva tabla2: Duplicar la tabla original-->Seleccionar columnas-->Filtro PVC<>"Fail"-->Then as @Ashish_Mathur suggested, use Text.Combine() para agrupar filas.

    1.11.3.2.gif

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjYwNrMwM1bSUTIAARdTJ4sQA1Mg1y0xM0cpVod4FaaYKkL1jc0cdYCkhaOClYJTqJOTjyslOiwNYDpMjD0sTAyMMFxBhAozTBWhugYWjjoKobqGBkDLdQ0NHQmpNzQGKzQBk6aOeiDHOroo+DhGuQYp+DoGeSvFxgIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, ProcessOrderNbr = _t, PVColumnName = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"ProcessOrderNbr", type text}, {"PVColumnName", type text}}),
        #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"ProcessOrderNbr", "PVColumnName"}),
        #"Filtered Rows" = Table.SelectRows(#"Removed Other Columns", each [PVColumnName] <> "Fail"),
        #"Grouped Rows" = Table.Group( #"Filtered Rows", {"ProcessOrderNbr"}, {{"PVColumnName", each Text.Combine(List.Distinct([PVColumnName]), ", "), type text}})
    in
        #"Grouped Rows"

    • Por fin, anexe estas dos nuevas tablas.

    La salida final se muestra a continuación:

    1.11.3.3.PNG

    Saludos
    Eyelyn Qin
    Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      charliej31_0-1653052832332.png

      Quiero crear una nueva columna con el valor de la fila 1 "Glasgow" que combina los valores de Glasgow Norte y Glasgow Sur y renombra la fila uno como Glasgow. En la fila 1, recibo un error al sumar los valores porque se espera un número, no un texto. ¿Hay alguna manera de agregar los valores numéricos y cambiar el nombre de los campos de texto?