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 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 gastos | Orden de trabajo captial DCC | Orden de trabajo de capital MCC | Gasto WO relacionado con Cap DCC |
00510452 | |||
00507539 | 436506 | 436507 | |
507528 | 475601 |
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
Solved! Go to Solution.
Hola @ixdutt ,
A continuación se combinarán estos datos en Power Query. Vueltas
en esto:
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.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI Reporting@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.
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.
Hola @ixdutt ,
A continuación se combinarán estos datos en Power Query. Vueltas
en esto:
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.
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?
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingBien @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?
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.
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 DCC | Cap WO DCC2 | Cap WO MCC | Cap WO MCC2 | Exp WO | Exp WO Secondary | Exp WO DCC | Exp WO Cap MCC | Cap\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?
Gracias por la respuesta. Así que mi conjunto de datos tiene este aspecto:
Nombre del proyecto | Cap WO DCC | Cap WO DCC2 | Cap WO MCC | Cap WO MCC2 | Exp WO | Explosivo WO Secundario | Exp WO Cap MCC | |
Alfa-Omega | Tapa WO DCC 3528 | Cap WO MCC 375 | Cap 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
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.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingEso 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í. 😁
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.
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 | |
1 | |
1 |