Ampliación de las descripciones de problemas de Jira.

Un usuario Pregunto ✅

mike282

Así que he estado tratando de conectar Power BI con Jira y no he usado el paquete de contenido listo para usar. A continuación se muestra el código de secuencia de comandos M completo para los pasos de transformación que he realizado. Tenga en cuenta el campo/columna «column1.field.description» que tuve que expandir dos veces.

let
    Source = Json.Document(Web.Contents("https://companyname.atlassian.net/rest/api/3/search?jql=project in ('TEST')", [Headers=[Authorization="Basic " & Credentials]])),
    issues = Source[issues],
    #"Converted to Table" = Table.FromList(issues, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"expand", "id", "self", "key", "fields"}, {"Column1.expand", "Column1.id", "Column1.self", "Column1.key", "Column1.fields"}),
    #"Expanded Column1.fields" = Table.ExpandRecordColumn(#"Expanded Column1", "Column1.fields", {"statuscategorychangedate", "issuetype", "parent", "timespent", "project", "fixVersions", "resolution", "resolutiondate", "watches", "lastViewed", "created", "priority", "timeestimate", "versions", "issuelinks", "assignee", "updated", "status", "components", "description", "summary", "creator", "duedate", "progress", "votes"}, {"Column1.fields.statuscategorychangedate", "Column1.fields.issuetype", "Column1.fields.parent", "Column1.fields.timespent", "Column1.fields.project", "Column1.fields.fixVersions", "Column1.fields.resolution", "Column1.fields.resolutiondate", "Column1.fields.watches", "Column1.fields.lastViewed", "Column1.fields.created", "Column1.fields.priority", "Column1.fields.timeestimate", "Column1.fields.versions", "Column1.fields.issuelinks", "Column1.fields.assignee", "Column1.fields.updated", "Column1.fields.status", "Column1.fields.components", "Column1.fields.description", "Column1.fields.summary", "Column1.fields.creator", "Column1.fields.duedate", "Column1.fields.progress", "Column1.fields.votes"}),
    #"Expanded Column1.fields.description" = Table.ExpandRecordColumn(#"Expanded Column1.fields", "Column1.fields.description", {"content"}, {"Column1.fields.description.content"}),
    #"Expanded Column1.fields.status" = Table.ExpandRecordColumn(#"Expanded Column1.fields.description", "Column1.fields.status", {"name"}, {"Column1.fields.status.name"}),
    #"Expanded Column1.fields.priority" = Table.ExpandRecordColumn(#"Expanded Column1.fields.status", "Column1.fields.priority", {"name"}, {"Column1.fields.priority.name"}),
    #"Expanded Column1.fields.project" = Table.ExpandRecordColumn(#"Expanded Column1.fields.priority", "Column1.fields.project", {"name"}, {"Column1.fields.project.name"}),
    #"Expanded Column1.fields.issuetype" = Table.ExpandRecordColumn(#"Expanded Column1.fields.project", "Column1.fields.issuetype", {"name"}, {"Column1.fields.issuetype.name"}),
    #"Expanded Column1.fields.progress" = Table.ExpandRecordColumn(#"Expanded Column1.fields.issuetype", "Column1.fields.progress", {"progress", "total"}, {"Column1.fields.progress.progress", "Column1.fields.progress.total"}),
    #"Expanded Column1.fields.creator" = Table.ExpandRecordColumn(#"Expanded Column1.fields.progress", "Column1.fields.creator", {"name"}, {"Column1.fields.creator.name"}),
    #"Expanded Column1.fields.description.content" = Table.ExpandListColumn(#"Expanded Column1.fields.creator", "Column1.fields.description.content"),
    #"Expanded Column1.fields.description.content1" = Table.ExpandRecordColumn(#"Expanded Column1.fields.description.content", "Column1.fields.description.content", {"type", "content"}, {"Column1.fields.description.content.type", "Column1.fields.description.content.content"}),
    #"Expanded Column1.fields.description.content.content" = Table.ExpandListColumn(#"Expanded Column1.fields.description.content1", "Column1.fields.description.content.content"),
    #"Expanded Column1.fields.description.content.content1" = Table.ExpandRecordColumn(#"Expanded Column1.fields.description.content.content", "Column1.fields.description.content.content", {"type", "text"}, {"Column1.fields.description.content.content.type", "Column1.fields.description.content.content.text"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Column1.fields.description.content.content1",{{"Column1.fields.statuscategorychangedate", type datetimezone}})
in
    #"Changed Type"

Decidí intentar usar la API web ingresando el punto final de la API y usando la autenticación básica. Esto extrajo la multa de JSON y he estado expandiendo los valores de JSON en una tabla utilizable. Me encontré con un inconveniente específicamente con el campo Descripción en Jira. Sale en una lista.

Figura 1. Problemas de Jira de un proyecto específico y estamos mirando el campo de descripción para problemasFigura 1. Problemas de Jira de un proyecto específico y estamos mirando el campo de descripción para problemas

Cuando sigue expandiendo los valores a nuevas filas, parece generar estos valores de columna extraños. Parece que Jira almacena texto en cada párrafo y salto de línea en filas separadas para un solo problema.

Figura 2. Lo que ve cuando expande el campo Descripción.  Tenga en cuenta las 2 columnas de tipo de contenido a la izquierdaFigura 2. Lo que ve cuando expande el campo Descripción. Tenga en cuenta las 2 columnas de tipo de contenido a la izquierda

¿Hay alguna manera de obtener estos valores de descripción y colocarlos en una sola fila contra una sola fila de problemas en lugar de expandir la tabla?

@Mike282

Puede seleccionar Extraer valores en lugar de Expandir en el Editor de consultas.

https://docs.microsoft.com/en-us/powerquery-m/text-combine

mike282

En respuesta a v-chuncz-msft

Hola @v-chuncz-msft.

Intenté eso. No puedo extraer el valor ya que hay valores nulos. Obtuve el siguiente error. La única otra forma es crear una tabla de referencia y expandir toda la descripción y vincularla a la tabla de datos principal, pero no estoy seguro de cómo concatenar todo ese texto.

imagen.png

Expression.Error: no podemos convertir el valor nulo al tipo List.
Detalles:
Valor=
Tipo=[Type]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *