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
He estado al acecho alrededor del foro durante un tiempo aprendiendo mucho de usted y he pasado por una serie de los tutoriales proporcionados :). Tengo un problema que me can't parecer resolver sin embargo y I'm esperando que alguien puede ayudarme.
Extraes datos de la API de Jira y esto devuelve un registro de entradas. Cada ticket puede tener varios valores de 'componente' y también varios valores de 'etiqueta'. Los datos de PowerBI muestran una fila para cada combinación de estos (ejemplo truncado a continuación)
Ticket URL | Número de billete | Etiquetas | Componentes |
url/123 | ABC-123 | Etiqueta 1 | Componente 1 |
url/123 | ABC-123 | Etiqueta 1 | Componente 2 |
url/321 | ABC-321 | Etiqueta 2 | Componente 1 |
url/321 | ABC-321 | Etiqueta 3 | Componente 2 |
url/321 | ABC-321 | Etiqueta 1 | Componente 1 |
url/222 | ABC-222 | Etiqueta 2 | Componente 1 |
Me gustaría tener sólo una fila para cada número de ticket y combinar las diversas etiquetas en valores separados por comas en otras columnas.
Ticket URL | Número de billete | Matriz de etiquetas | Matriz de componentes |
url/123 | ABC-123 | Etiqueta 1 | Componente 1, Componente 2 |
url/321 | ABC-321 | Etiqueta 1, Etiqueta 2, Etiqueta 3 | Componente 1, Componente 2 |
También he compartido algunos datos reales en formato Excel y pbix - en estos verá que hay un número de otras columnas que necesito mantener. ¡Si alguien puede ayudar, lo apretaría mucho!
Hola
Prueba este código M
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKi3K0Tc0MlbSUXJ0ctaFsHwSk1JzFAyBLOf83IL8vNS8EiAvVod41UZw1cZGhlDVEBZEtREOs7GrNibJbFzuNjIygqqGsHC4JBYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Ticket URL" = _t, #"Ticket Number" = _t, Labels = _t, Components = _t]),
#"Grouped Rows" = Table.Group(Source, {"Ticket URL"}, {{"All labels", each Text.Combine(List.Distinct([Labels]), ", "), type text}}),
Joined = Table.Join(Source, "Ticket URL", #"Grouped Rows", "Ticket URL"),
#"Grouped Rows1" = Table.Group(Joined, {"Ticket URL"}, {{"All components", each Text.Combine(List.Distinct([Components]), ", "), type text}}),
Joined1 = Table.Join(Joined, "Ticket URL", #"Grouped Rows1", "Ticket URL"),
#"Removed Columns" = Table.RemoveColumns(Joined1,{"Labels", "Components"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Columns")
in
#"Removed Duplicates"
Espero que esto ayude.
Gracias por proporcionar el pbix. Eso hace que sea más fácil ayudar. Esto se hace más fácilmente en la consulta, así que copié la tabla final (ya que no pude actualizar con el origen) y la puse en una nueva consulta para demostrarla. Puede ver cómo hacerlo con el código M siguiente y realizar los mismos pasos en la consulta original. Para ver cómo funciona, simplemente cree una consulta en blanco, vaya a Editor avanzado y reemplace el texto allí con el código M a continuación. Los pasos clave son agrupar en la columna de número de ticket, pero mantener todas las filas y, a continuación, usar las funciones de lista y text.combine para crear la cadena de valores.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("zdddb4IwFAbgv0K4nZae1vLRuznNErMPM9iV8QJnN4mTGqju76/qptkcxCEICYECITw5b3MKo5E5U2qZcst6lRJNwgTFQlmJSJUVLiPrPVSbYZSmK2EBBQ8cs2X2h36bUpvpYXf1trug9wQT3AbcJhCAzTHllCDPgSsMGOvb92IarRZ6sNsCafTk7lmje/1sjlvNsNz0/f9bXAp7S2fzgiBM58cYHECHU4dTijxMvzF38kPvh4mc6sNAzmJ96MlYnFOcEkC+SNbRi3jYnpTEYtjes0hWZsA2mTGXA0Gu6x5l9lWpMuZQhZ5C86hCz+NTtybPj4nUmNTyVPVll6cqlCDpsL0Ke1kqEgDmTPcBG2Gb/NmYygiuKkxNlSl9YldLqqlKUaxEsoiUErFqTJ3yUQUrRQ8oNx8FnGHkgJPVuwdSGL7YrrhibZy76l5EVqhnXkR2m4RTMZFyXpPv14dU45I9zVdfvqf5iqeMXeYdlE6GEnsBUE5A/0wggCq/Sqv0FEmxSs+2044/AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Ticket URL" = _t, #"Ticket Number" = _t, #"Ticket Type" = _t, #"JIRA Project (?)" = _t, #"Created Date" = _t, Priority = _t, Labels = _t, Assignee = _t, Status = _t, Components = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Ticket URL", type text}, {"Ticket Number", type text}, {"Ticket Type", type text}, {"JIRA Project (?)", type text}, {"Created Date", type datetimezone}, {"Priority", type text}, {"Labels", type text}, {"Assignee", type text}, {"Status", type text}, {"Components", type text}}),
#"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"Ticket Number", "Labels", "Components"}),
#"Grouped Rows" = Table.Group(#"Removed Other Columns", {"Ticket Number"}, {{"AllRows", each _, type table [Ticket Number=nullable text, Labels=nullable text, Components=nullable text]}}),
#"Added Custom" = Table.AddColumn(#"Grouped Rows", "Labels", each Text.Combine(List.Distinct([AllRows][Labels]), ", ")),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Components", each Text.Combine(List.Distinct([AllRows][Components]), ", ")),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"AllRows"})
in
#"Removed Columns"
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
Muchas gracias por su respuesta! Funciona muy bien para el formato de tabla de salida que mostré en la pregunta. ¿Sabe cómo podría mantener también las otras columnas en los datos (asignado, estado, etc.)?
Hola
¿A quién estás respondiendo? Si es a mí a quien está respondiendo, entonces comparta las otras columnas y muestre el resultado exacto.
@Ashish_Mathur lo siento, me golpeó respuesta a continuación su respuesta, pero parece no haber asociado los dos, lo siento mi culpa 🙂
La lista completa de columnas es la siguiente, las que están en negrita son las columnas que se modifican en la solución, las demás no necesitan modificarse, pero deben seguir estando presentes en la salida. Hay una versión pbix y Excel de los datos reales al final de la pregunta orginal si eso también ayuda?
Ticket URL
Número de billete
Tipo de entrada
Proyecto JIRA (?)
Fecha de creación
Prioridad
Etiquetas
Cesionario
Estado
Componentes
Resumen
Hola
Este código M parece funcionar
let
Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Ticket URL"}, {{"All labels", each Text.Combine(List.Distinct([Labels]), ", "), type text}}),
Joined = Table.Join(Source, "Ticket URL", #"Grouped Rows", "Ticket URL"),
#"Grouped Rows1" = Table.Group(Joined, {"Ticket URL"}, {{"All components", each Text.Combine(List.Distinct([Components]), ", "), type text}}),
Joined1 = Table.Join(Joined, "Ticket URL", #"Grouped Rows1", "Ticket URL"),
#"Removed Columns" = Table.RemoveColumns(Joined1,{"Labels", "Components"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Columns")
in
#"Removed Duplicates"
Espero que esto ayude.
@Ashish_Mathur gracias - Lo intenté pero obtengo un error 'Expression.Error: No pudimos encontrar una tabla de Excel llamada 'Data'.'. Intenté intercambiar el origen de la última consulta con el origen de la consulta anterior, pero eso solo dio las mismas columnas limitadas que anteriormente.
¿Es que necesito enumerar todas las columnas aquí:
Source : Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKi3K0Tc0MlSUXJ0ctaFsHwSk1JzFAyBlOf83IL8vNS8EiAvVod41UZw1cZGhlDVEBZETREOs7GrNibJbFzui ygqqGsHC4BYJS", BinaryEncoding.Base64), Compression.Deflate)),
let _t á ((tipo de texto que acepta valores NULL) meta [Serialized.Text ? true]) en la tabla de tipos ['URL de ticket' ''_t'URL de ticket'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''_t _t _t''''''''''''''
Hola
Puede descargar mi archivo PBI desde aquí.
Espero que esto ayude.
@Ashish_Mathur muchas gracias por su ayuda continua. Cuando ejecuto tu archivo obtengo un duplicado del ticket 3340, ¿verdad?
También (y lo siento si se trata de una pregunta realmente novato) - ¿cómo modifico correctamente la fuente para que apunte a mi consulta
Al ejecutar esto, se produce un error 'Expression.Error: el nombre '_t' no se ha reconocido. Asegúrese de que está escrito correctamente.' en la etapa de origen y en la etapa de cambio de tipo y error 'Expression.Error: No podemos convertir un valor de tipo Table al tipo List.
Detalles:
Valor[Tabla]
Tipo [Tipo]'
Hola
De nada. las filas 334o aparecen dos veces debido a diferentes entradas en la columna Resumen. Una vez que los haces iguales, la fila duplicada desaparece. Ver la imagen
@Ashish_Mathur muchas gracias! ¿Y puede aconsejar cómo intercambiar el origen a la consulta que se muestra en la imagen?
Sólo reemplaza el nombre allí.
OK, así que desde el PBIX que proporcionó la fuente es:
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("1dVPb4IwGAbwr9JwncDbliJwm3+ybNnUCDsZD81stBkWA2Xbx1/Rzc2o4bAtqxf6AqH55cmTMps5K603VeL7Rb3hS5kLj+ucV5XkylNC+6WotM830s+5bkZZVbXwMcUx7jodZzhJXUpDZsZevdw9MFcCBFwMLsEZDhOgCSVe3MVXgAHM6wexkPXaDKrO868lK9Cg2O2BetePZppMxwPkogl1EbophVBIizeNnHnHWnh/mP4RPKJ4Dw8aTcar52M5ZDhIaDeh1IuBfsrvi9eGVRYLs9wVK2WWQaHEQdy3oz6GGCAg/y5NRfkin8Roe9PqpT/iMgj3XHKuEZg1jWBRgokXRdFRIz6iTXnJVye73GCx+ch8ZjN2198LwY6nPcuwB729jDK0ku2rRCv5V4tBArYnQ3yOTDIMCTOnWehBSE6eu2f/c1soMLO9tdBvidoAPWiA/bm2cS1LVyotyrXUWih9Efm2g48Tnr8D", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Ticket URL" = _t, #"Ticket Number" = _t, #"Ticket Type" = _t, #"JIRA Project (?)" = _t, #"Created Date" = _t, Priority = _t, Labels = _t, Assignee = _t, Status = _t, Components = _t, Summary = _t]),
Basado en esto y la documentación que he modificado para:
Origen: Table.FromRows((('EPS BAU (2)''URL de entrada' ' _t', ''Número de ticket' '_t'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''"Tipo de ticket" , _t, "Proyecto JIRA (?)" , _t, "Fecha de creación" , _t, "Prioridad_t, "Etiquetas" _t, "Asignado" , _t, "Estado" _t, Componentes, _t, " Resumen, _t) y " _t), "Estado"
Pero obtengo un error de sintaxis 'Token, coma esperada' en 'como tabla),'
Mi comprensión de los documentos es que la función FromRows toma una lista (¿asumir matriz?) pero no puedo encontrar la manera de obtener esta lista de 'EPS BAU (2)'
Hola
No creo que pueda ayudarte más allá de esto. Un último intento sería copiar todas las líneas (después de la línea de código fuente) en el código M de mi solución y pegarlas después de la línea de origen de la tabla EPS BAU (2). Las ortografías (incluidas las mayúsculas y minúsculas de los encabezados en el tabel EPS BAU (2) deben ser las mismas que en mi tabla).
Espero que esto ayude.
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 |