A día de hoy, el conector de JIRA con Power BI, no permite hacer consultas en formato JQL para obtener datos. Sería genial poder consultar lo que quieras desde Power BI a JIRA, ¿verdad? Pues te cuento como hacerlo. Solo tienes que seguir este tutorial.

Pasos

Abre Power BI  para escritorio y haz click en Obtener datos -> Consulta en blanco:

Añade dos parámetros con Administrar Parámetros -> Nuevo parámetro. El nombre de los parámetros debe ser:

  • JIRA_URL: La URL de tu instancia de JIRA
    • Por ejemplo: https://jira.atlassian.com
  • QUERY: La consulta que quieras hacer en formato JQL
    • Por ejemplo: project=CLOUD and fixVersion in (releasedVersions()) and type=Improvement and resolution=Fixed

Los parámetros serán de tipo “Texto“:

Haz click con el botón derecho sobre la consulta y ve a Editor Avanzado. Pega este código:

let
Source = Json.Document(Web.Contents(JIRA_URL & "/rest/api/2/search?jql=" & QUERY)),
#"Converted to Table" = Record.ToTable(Source),
#"Transposed Table" = Table.Transpose(#"Converted to Table"),
#"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"expand", type text}, {"startAt", Int64.Type}, {"maxResults", Int64.Type}, {"total", Int64.Type}, {"issues", type any}}),
#"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"total"}),
#"total" = #"Removed Other Columns"{0}[total],
#"startAt List" = List.Generate(()=>0, each _ < #"total", each _ +100),
#"Converted to Table1" = Table.FromList(#"startAt List", Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table1",{{"Column1", "startAt"}}),
#"Added Custom" = Table.AddColumn(#"Renamed Columns", "URL", each JIRA_URL & "/rest/api/2/search?maxResults=100&jql=" & QUERY & "&startAt=" & Text.From([startAt])),
data = List.Transform(#"Added Custom"[URL], each Json.Document(Web.Contents(_))),
#"Converted to TableQuery" = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded ColumnIssues" = Table.ExpandRecordColumn(#"Converted to TableQuery", "Column1", {"issues"}, {"issues"}),
#"Expanded issues" = Table.ExpandListColumn(#"Expanded ColumnIssues", "issues"),
#"Expanded issues1" = Table.ExpandRecordColumn(#"Expanded issues", "issues", {"id", "fields"}, {"id", "fields"})
in
#"Expanded issues1"

El crédito del script es para Tiago Machado, que lo compartió en el foro de Power BI. Yo solo le he añadido el uso de parámetros.

En este punto deberías ver algo como esto:

Haz click en el icono para expandir la columna “fields“. En este punto ya puedes seleccionar los valores que quieras importar de JIRA, en forma de columnas de datos.

Para este ejemplo yo he seleccionado “priority” y “resolutiondate“.

Al expandir, verás que el campo “priority” muestra Record en lugar de su valor.

La solución es volver a expandirlo y seleccionar “name” en la lista de columnas:

Pues ya casi está, sólo falta indicarle a Power BI que la columna resolutiondate es de tipo Fecha/Hora y la columna priority es de tipo texto.

Al hacer click en Cerrar y Aplicar, se ejecutará la consulta y se traerá los datos de JIRA.

Como ejemplo, puedes elegir un gráfico de Columnas Apiladas, y mostrar por años la prioridad de las mejoras desarrolladas:

Seguridad

Lo más probable es que tu instancia de JIRA pida nombre de usuario y contraseña para tener permisos para hacer consultas.

Para introducir tus credenciales debes ir a:

  • Configuración de origen de datos -> Selecciona tu URL de JIRA y Editar Permisos
  • En el apartado Credenciales, click en Editar
  • En la pantalla siguiente lo más habitual es el tipo Básico. Escribe tu nombre de usuario y contraseña
  • Personalmente utilizo el modo API Web con un token asociado a mi usuario, así no tengo que actualizar mi configuración cada vez que cambio la contraseña

Espero que esta guía te sea útil. ¡Hasta la próxima!