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
Anonymous
Not applicable

concatenar el nombre de columna + el valor de celda

Hola a todos,

mi gerente me ha preguntado si es posible crear una sola columna que enumeraría la concatenación del [título de columna]+[valor de celda]. por ejemplo, mi conjunto de datos tiene el siguiente aspecto:

Orden de trabajo de gastosOrden de trabajo captial DCCOrden de trabajo de capital MCCGasto WO relacionado con Cap DCC
00510452
00507539436506436507
507528475601

Los resultados deben ser los siguientes:

Cuentas
Orden de trabajo de gastos 00510452
Orden de trabajo de gastos 00507539, Orden de trabajo captial DCC 436506, Orden de trabajo captial MCC 436507
Orden de trabajo de gastos 507528, orden de trabajo captial DCC 475601

Estoy familiarizado con la función CONCATENATE(), sin embargo, no estoy seguro de cómo combinar un título de columna y el valor de celda debajo de él por fila. ¿Alguna sugerencia?

ixdutt

2 ACCEPTED SOLUTIONS
edhans
Super User
Super User

Hola @ixdutt ,

A continuación se combinarán estos datos en Power Query. Vueltas

edhans_0-1598913133780.png

en esto:

edhans_1-1598913167900.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjAwNTQwMTVS0lFSgONYHbCEgbmpsSVQwMTYzNTADMYwhysBKTCyAImbm5oZGCK0xwIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Expense Work Order" = _t, #"Captial Work order DCC" = _t, #"Capital Work Order MCC" = _t, #"Expense WO related to Cap DCC" = _t]),
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Added Index", {"Index"}, "Attribute", "Value"),
    #"Merged Columns" = Table.CombineColumns(#"Unpivoted Other Columns",{"Attribute", "Value"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"),
    #"Filtered Rows" = Table.SelectRows(#"Merged Columns", each not Text.EndsWith([Merged], ", ")),
    #"Grouped Rows" = 
        Table.Group(
            #"Filtered Rows", 
            {"Index"}, 
            {
                {
                    "Test", 
                    each Text.Combine(
                        List.Transform(_[Merged], Text.From), ", "
                    )
                }
            }
        ),
    #"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Index"})
in
    #"Removed Columns"

Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.

No sé cómo harías esto en DAX. Tuve que despotabler las columnas para obtener las columnas a nivel de campo con las que trabajar. Me interesaría ver si alguien puede publicar código DAX que pueda devolver el nombre de campo en el que existe un valor.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

View solution in original post

@ixdutt - Bueno, podrías despoducar tus columnas. Eso pondría sus nombres en una sola columna. Y luego podría obtener una lista de ellos, pero no hay idea de lo que eso haría a su modelo de datos, etc. En el formato descrito actualmente, @edhans es 100% correcta.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

13 REPLIES 13
v-diye-msft
Community Support
Community Support

Hola @ixdutt

Si la ayuda de las publicaciones anteriores, por favor márquela como una respuesta para ayudar a otros a encontrarla más rápidamente. ¡Gracias!

Si no, por favor, amablemente elaborar más.

Community Support Team _ Dina Ye
If this post helps, then please consider Accept it as the solution to help the other members find it more
quickly.
edhans
Super User
Super User

Hola @ixdutt ,

A continuación se combinarán estos datos en Power Query. Vueltas

edhans_0-1598913133780.png

en esto:

edhans_1-1598913167900.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjAwNTQwMTVS0lFSgONYHbCEgbmpsSVQwMTYzNTADMYwhysBKTCyAImbm5oZGCK0xwIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Expense Work Order" = _t, #"Captial Work order DCC" = _t, #"Capital Work Order MCC" = _t, #"Expense WO related to Cap DCC" = _t]),
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Added Index", {"Index"}, "Attribute", "Value"),
    #"Merged Columns" = Table.CombineColumns(#"Unpivoted Other Columns",{"Attribute", "Value"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged"),
    #"Filtered Rows" = Table.SelectRows(#"Merged Columns", each not Text.EndsWith([Merged], ", ")),
    #"Grouped Rows" = 
        Table.Group(
            #"Filtered Rows", 
            {"Index"}, 
            {
                {
                    "Test", 
                    each Text.Combine(
                        List.Transform(_[Merged], Text.From), ", "
                    )
                }
            }
        ),
    #"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Index"})
in
    #"Removed Columns"

Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.

No sé cómo harías esto en DAX. Tuve que despotabler las columnas para obtener las columnas a nivel de campo con las que trabajar. Me interesaría ver si alguien puede publicar código DAX que pueda devolver el nombre de campo en el que existe un valor.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

@Greg_Deckler - ¿Está al tanto de una manera de hacer esto en DAX?



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Bien @edhans - Hasta el mejor de mis conocimientos no se pueden obtener los nombres de columna "dinámicamente" en DAX, ya tiene que saber cuáles son los nombres de columna. Supongo que si no promocionaba encabezados y usaba un índice podría identificar los nombres de las columnas, entonces serían filas con un índice de 1. Pero, es un pensamiento interesante y lo meditaré.

La otra cosa @ixdutt que reflexiono es que no puedo entender cómo ese formato de datos podría ser útil en un escenario de análisis. ¿Podrías iluminar?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Morning Greg, 

 

Thanks for your response. To answer your question, my report is designed to help users look up expense accounts related to various projects for the purposes of billing. My data sets are being imported from MS Projects, however when I create the matrix visualization it appears in my first example. I've added filters so the user can narrow down the information displayed down to the project(s) they are looking up, however it appears as multiple columns.

 

My manager has asked for the expense account listings to appear as a single column which prompted me to place this query. I can only assume that it would be more visually appealing if this report is printed out for upper management.

 

ixdutt

@ixdutt - Bueno, podrías despoducar tus columnas. Eso pondría sus nombres en una sola columna. Y luego podría obtener una lista de ellos, pero no hay idea de lo que eso haría a su modelo de datos, etc. En el formato descrito actualmente, @edhans es 100% correcta.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler ,

 

Thanks for the suggestion! I used your suggestion to unpivot the columns to align them in 2 columns only. I also took the extra steps of creating additional columns per account category and aggregate the table so place all of the account listings on to one line. 

Cap WO DCCCap WO DCC2Cap WO MCCCap WO MCC2Exp WOExp WO SecondaryExp WO DCCExp WO Cap MCCCap\Exp Acct
Cap WO DCC 1001 Cap WO MCC 1003 Exp WO 2001   Cap WO DCC 1001 Cap WO MCC 1003 Exp WO 2001

 

Cap\Exp Acct = [Cap WO DCC]&" "&[Cap WO DCC2]&" "&[Cap WO MCC]&" "&[Cap WO MCC2]&" "&[Exp WO]&" "&[Exp WO Secondary]&" "&[Exp WO DCC]&" "&[Exp WO Cap MCC]

 

The end result is:

Cap WO DCC 1001 Cap WO MCC 1003 Exp WO 2001

 

I've been asked to add a carriage break to seperate each account listing, so I added UNICHAR(10) in place of the " " in the code above, however it is creating spaces between the listed accounts. I'm looking for a way to list the accounts and avoid the breaks if one of the column values is BLANK.

 

Any ideas?

@Anonymous Fantastic!! Hmm, line breaks, I recall that the UNICODE route was the way to go but will have to research, any chance you can post an screen shot of what you are seeing?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler,

Gracias por la respuesta. Así que mi conjunto de datos tiene este aspecto:

Nombre del proyectoCap WO DCCCap WO DCC2Cap WO MCCCap WO MCC2Exp WOExplosivo WO SecundarioExp WO Cap MCC
Alfa-OmegaTapa WO DCC 3528 Cap WO MCC 375Cap WO MCC2 1515 Secundaria Exp WO 3185

A partir de ahí agredo el código para concatenar las columnas:

Captial - Cuenta de gastos - [Cap WO DCC]&UNICHAR(10)&[Cap WO DCC2]&UNICHAR(10)&[Cap WO MCC]&UNICHAR(10)&;[Cap WO MCC2]&UNICHAR(10)&[Exp WO]&UNICHAR(10)&[Exp WO Secondary]&UNICHAR(10)&[Exp WO Cap MCC]

Mi resultado es el siguiente:

Tapa WO DCC 3528

Cap WO MCC 375

Cap WO MCC2 1515

Secundaria Exp WO 3185

Estoy tratando de encontrar una manera de eliminar los espacios en blanco entre las pausas del carro.

ixdutt

Anonymous
Not applicable

Hola Greg,

Gracias por la sugerencia de despivoar las columnas, funcionó como un encanto!

ixdutt

¿Mis transformaciones anteriores ayudaron a @ixdutt - no hay manera de hacer eso en DAX que yo o @Greg_Deckler son conscientes de. DAX no es "autoconsc consciente" de los datos de columna en. Debe hacer referencia específicamente a las columnas. No es como Excel, donde puede usar las funciones CELL() y ADDRESS() para una fórmula para averiguar dónde está en la hoja de cálculo.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Eso es lo que estaba pensando @Greg_Deckler - pero la promoción de encabezados ocurre en Power Query, y si ya está allí, también podría implementar mi código anterior y hacerlo todo allí. 😁



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

@edhans - Difícil de discutir con esa lógica! Todavía estoy tratando de desconcertar a través de si hay alguna función DAX que puede devolver nombres de columna en una tabla sin que alread conocerlos, pero no se me ocurre ninguna. Sin embargo, siguen agregando nuevas funciones DAX todo el tiempo, por lo que es difícil realizar un seguimiento.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

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.