Instructions for configuration/usage of the JIRA content pack for Microsoft Power BI?

A new content pack for Power BI was announced on a blog post today but there doesn't seem to be any guidance as to what it tries to do or how to configure it.

For example, it appears to try to query for every issue in the JIRA instance via the REST API. I have a limited test case i'd like to start with, so how do i change that behavior?

7 answers

2 votes

Are you using JIRA Cloud? According to the labels on your question, you don't.

There is a comment from the MS guys telling:

Hi Stephen, are you using on Premises JIRA or the cloud service? Currently the content pack will work only with the cloud version.

Interestingly, the Atlassian blog post does not make any mention about cloud vs. server, and they allow commenting, either.

I'm not using JIRA Cloud but I do have external access setup via HTTPS, have the REST APIs enabled and used Basic authentication with an account with view rights to the issues in the system.

Not the best circumstances but ok to take a look to start.

The comments also have links to a Power BI desktop template that matches what is on the site so I'm going to take a look at that as well.

Jack Brickey Community Champion Oct 24, 2016

yes. cloud only. I have it up and running now and seems pretty powerful albeit not overly intuitive at the moment.

0 votes
Jack Brickey Community Champion Oct 21, 2016


I saw the same and am giving it a try now but getting stuck early. Likely partly because it is new and partly because it is MS. In any event I set up the connection and it started importing (a few minutes) but then nothing. According to documentation it was going "to automatically create an out-of-the-box dashboard, report, and dataset with data from JIRA.". No sign of that yet. I will update here as I learn more.

Here is the doc I'm reading.

I let the package run late at night and it seems to have "worked" as it loaded enough data and build the report and dashboard.

The blog post on the Power BI side is much more active as they actually have comments enabled there...


One of the interesting things is that there is a template pack for the Power BI Desktop edition and that allows for the queries to be edited.

I'm going to try that out later on.

0 votes
Jack Brickey Community Champion Oct 21, 2016

thanks. maybe that is the issue for me. the "importing data" pop up disappears so I assumed it completed but maybe not. Will look at it later and see. Good luck!

Yes, the "importing data" message does not indicate that it's working or not. I noticed that the "dataset" in the left side pane is grayed out when it is trying to load.

As I'm admin on the JIRA side, i saw the activity in the log and figured out that it was querying for issues 500 at a time and trying to get through the entire set.

Got the content pack all up and running. I'm using it to create reports on JIRA Service Desk. But I cannot find the Organizations field anywhere. So hard to create reports based on customers, which is what I need. Also not getting my custom fields.

Any updates on this Content Pack planned?

Hi Espen,

Did you get custom fields working in the end? I've managed to get connected to Jira Cloud from PowerBI Desktop, but finding the same as you did with custom fields. Trying to decide if I should persevere or if it's going to take too much time and fiddling to get it to work!

Hi Brent,

We managed to figure out how to add our own custom fields and the Organizations field. The easiest way is to open the "Query Editor", and then go to "Advanced Editor"

There you can specify what you need using "M Formula". I am attaching an example of how we did it:

Source = FetchPages("", 500),
#"Expanded Column1" = Table.ExpandRecordColumn(Source, "Column1", {"expand", "id", "self", "key", "fields"}, {"expand", "id", "self", "key", "fields"}),
#"Expanded fields" = Table.ExpandRecordColumn(#"Expanded Column1", "fields", {"issuetype", "project", "aggregatetimespent", "resolutiondate", "created", "aggregatetimeoriginalestimate", "assignee", "updated", "status", "components", "description", "summary", "reporter", "customfield_12100", "customfield_11614", "customfield_11616"},{"issuetype", "project", "aggregatetimespent", "resolutiondate", "created", "aggregatetimeoriginalestimate", "assignee", "updated", "status", "components", "description", "summary", "reporter", "customfield_12100", "customfield_11614", "customfield_11616"}),
#"Changed type Organizations" = Table.TransformColumnTypes(#"Expanded fields",{"customfield_12100", type any}),
#"Expanded Organizations" = Table.ExpandListColumn(#"Changed type Organizations", "customfield_12100"),
#"Expanded project" = Table.ExpandRecordColumn(#"Expanded Organizations", "project", {"id", "key", "name"}, {"", "project.key", ""}),
#"Filtered Rows" = Table.SelectRows(#"Expanded project", each [id] <> null and [project.key] = "ASSIST"),
#"Expanded issuetype" = Table.ExpandRecordColumn(#"Filtered Rows", "issuetype", {"name"}, {""}),
#"Expanded status" = Table.ExpandRecordColumn(#"Expanded issuetype", "status", {"name"}, {""}),
#"Expanded components" = Table.ExpandListColumn(#"Expanded status", "components"),
#"Expanded components list" = Table.ExpandRecordColumn(#"Expanded components", "components", {"name"}, {""}),
#"Expanded reporter" = Table.ExpandRecordColumn(#"Expanded components list", "reporter", {"displayName"}, {"reporter.displayName"}),
#"Expanded assignee" = Table.ExpandRecordColumn(#"Expanded reporter", "assignee", {"displayName"}, {"assignee.displayName"}),
#"Expanded SeverityLevel" = Table.ExpandRecordColumn(#"Expanded assignee", "customfield_11614", {"value"}, {""}),
#"Expanded TTFR" = Table.ExpandRecordColumn(#"Expanded SeverityLevel", "customfield_11616", {"completedCycles"}, {"customfield_11616.completedCycles"}),
#"Expanded TTFR List" = Table.ExpandListColumn(#"Expanded TTFR", "customfield_11616.completedCycles"),
#"Expanded TTFR Record" = Table.ExpandRecordColumn(#"Expanded TTFR List", "customfield_11616.completedCycles", {"breached", "elapsedTime"}, {"customfield_11616.completedCycles.breached", "customfield_11616.completedCycles.elapsedTime"}),
#"Expanded TTFR elapsedTime" = Table.ExpandRecordColumn(#"Expanded TTFR Record", "customfield_11616.completedCycles.elapsedTime", {"millis"}, {"customfield_11616.completedCycles.elapsedTime.millis"}),
#"Calculated time spend" = Table.TransformColumns(#"Expanded TTFR elapsedTime", {{"aggregatetimespent", each _ / 86400, type number}}),
#"Changed time spend" = Table.TransformColumnTypes(#"Calculated time spend",{{"aggregatetimespent", type duration}}),
#"Calculated time estimate" = Table.TransformColumns(#"Changed time spend", {{"aggregatetimeoriginalestimate", each _ / 86400, type number}}),
#"Changed time estimate" = Table.TransformColumnTypes(#"Calculated time estimate",{{"aggregatetimeoriginalestimate", type duration}}),
#"Calculated time SLA" = Table.TransformColumns(#"Changed time estimate", {{"customfield_11616.completedCycles.elapsedTime.millis", each _ / 86400000, type number}}),
#"Changed time SLA" = Table.TransformColumnTypes(#"Calculated time SLA",{{"customfield_11616.completedCycles.elapsedTime.millis", type duration}}),
#"Duplicated Column" = Table.DuplicateColumn(#"Changed time SLA", "resolutiondate", "resolutiondate - Copy"),
#"Inserted Parsed Date" = Table.AddColumn(#"Duplicated Column", "ParseDate", each Date.From(DateTimeZone.From([#"resolutiondate - Copy"])), type date),
#"Inserted Month" = Table.AddColumn(#"Inserted Parsed Date", "resolution month", each Date.Month([ParseDate]), type number),
#"Inserted Year" = Table.AddColumn(#"Inserted Month", "resolution year", each Date.Year([ParseDate]), type number),
#"Renamed columns" = Table.RenameColumns(#"Inserted Year",{{"customfield_12100", "organizations"}, {"", "issuetype"}, {"", "status"}, {"", "components"}, {"reporter.displayName", "reporter"}, {"assignee.displayName", "assignee"}, {"", "severity level"}, {"customfield_11616.completedCycles.breached", "time to first response breached"}, {"customfield_11616.completedCycles.elapsedTime.millis", "time to first response elapsed time"}}),
#"Removed columns" = Table.RemoveColumns(#"Renamed columns", {"expand", "id", "self", "", "project.key", "", "ParseDate"})
#"Removed columns" 

What are the steps for downloading the JIRA content pack to Power BI desktop? I'm already set up with the content pack in the Power BI service, but can't seem to get the .PBIX file. 

Clayton, were you able to figure how to get the PBIX file? I have the same need.

Like 1 person likes this

Same here

I do need this file and not able to find it here

I don't think you can download PBIX from the online workspace yet.

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Nov 29, 2018 in Jira

How to set up an incident workflow from the VP of Engineering at Sentry

Hey Atlassian community, I help lead engineering at Sentry, an open-source error-tracking and monitoring tool that integrates with Jira. We started using Jira Software Cloud internally last year, a...

1,107 views 0 8
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you