Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Syndicate_Admin
Administrator
Administrator

Combinación condicional de columnas

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 Acolumna A*columna de resultados
5nulo5
666
474
nulo88

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

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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"

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

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!

Syndicate_Admin
Administrator
Administrator

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"
Syndicate_Admin
Administrator
Administrator

No @tmul,

En el editor de PQ podrías probar algo como esto.

Payeras_BI_0-1626964170176.png

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

image.png

y también lo contrario:

= Table.AddColumn(#"Changed Type", "Custom", each List.Last(List.RemoveLastN(Record.ToList(_), each _ = null),null))

image.png

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.