Forum Discussion
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
- Anonymous5 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:
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.
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:
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
- Ashish_Mathur
Super User
Hola
¿Desea ver solo 2 filas: una para cada ProcessOrderNbr? Comparte el enlace desde donde puedo descargar tu archivo PBI.
- AnonymousNot 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
Super 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.
- AnonymousNot 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:
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.
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:
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
Administrator
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?