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.
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.
¿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?
v-chuncz-msft
@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.
Expression.Error: no podemos convertir el valor nulo al tipo List.
Detalles:
Valor=
Tipo=[Type]