Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
hola
Tengo el siguiente problema de combinar columnas.
Tengo un conjunto de datos con alrededor de 70 columnas. Es el resultado de una combinación con otro conjunto de datos y algunas columnas contienen los mismos datos. Me gustaría combinar las columnas que muestran los mismos datos en una columna de una manera fácil y rápida.
Hay algunas condiciones, ya que una columna tiene el rol de un maestro.
Por lo tanto, la condición para rellenar la nueva columna es que siempre se debe usar la columna maestra (por ejemplo, la columna A) siempre debe usarse, excepto en el caso, la columna A está vacía y luego se debe usar la columna A*.
¿Hay algún consejo y truco que hacer de una manera eficiente?
ejemplo:
Columna maestra A | columna A* | columna de resultados |
5 | nulo | 5 |
6 | 6 | 6 |
4 | 7 | 4 |
nulo | 8 | 8 |
Anteriormente, usé las instrucciones If else para lograrlo, pero parece que no es muy eficiente si necesito hacerlo para 20 columnas.
Leí que algunos están usando las funciones unpivot y pivot, pero no estoy seguro de cómo usarlo, ya que el tipo de los encabezados de columna no conduciría a ninguna lógica.
Cualquier idea es muy apreciada.
gracias
Solved! Go to Solution.
Utilice Table.CombineColumns() para lograr su objetivo.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlXSUVKK1YlWMgMyzMAsEyDLHMwCMiyUYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Master column A" = _t, #"Sub column A" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Master column A", Int64.Type}, {"Sub column A", Int64.Type}}),
#"Combined Columns" = Table.CombineColumns(#"Changed Type", {"Master column A", "Sub column A"}, each if _{0} is null then _{1} else _{0}, "Combined column A")
in
#"Combined Columns"
Gracias a todos por la ayuda! Miré todas las soluciones propuestas y basándome en la prueba, la solución de @CNENFRNL se ajusta mejor, aunque si eso significa que necesito escribir esta línea de código con Table.CombineColumns alrededor de 20 veces ...
Pero gracias y que tengan un gran día!
Utilice Table.CombineColumns() para lograr su objetivo.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlXSUVKK1YlWMgMyzMAsEyDLHMwCMiyUYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Master column A" = _t, #"Sub column A" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Master column A", Int64.Type}, {"Sub column A", Int64.Type}}),
#"Combined Columns" = Table.CombineColumns(#"Changed Type", {"Master column A", "Sub column A"}, each if _{0} is null then _{1} else _{0}, "Combined column A")
in
#"Combined Columns"
No @tmul,
En el editor de PQ podrías probar algo como esto.
List.First(List.Select({[Master], [Column1], [Column2], [Column3],[Column4]}, each _ <> null))
Triste @tmul - leí mal vuestro correo y pensó necesitas un COALESCE solución de tipo para ~70 columnas. A continuación no parece lo que estás buscando. En su mayoría decidí 'tratar' de mejorar la fórmula cuando había más de unas pocas columnas (por ejemplo, ~ 70).
@Payeras_BI : intente esto en lugar de declarar todos los nombres de columna:
= Table.AddColumn(#"Changed Type", "Custom", each List.First(List.RemoveFirstN(Record.ToList(_), each _ = null),null))
y también lo contrario:
= Table.AddColumn(#"Changed Type", "Custom", each List.Last(List.RemoveLastN(Record.ToList(_), each _ = null),null))
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |