Last active
May 10, 2021 07:06
-
-
Save tdalon/8086c4968c057ceb1a880e9f38add735 to your computer and use it in GitHub Desktop.
Import Jira Filter to PowerBI (with Automatic Fields renaming) - List based approach
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// STEP: GetTotal | |
let | |
// Get total | |
Source = Json.Document(Web.Contents(JiraRootUrl&"/rest/api/2/search?jql=filter="&JiraFilterId&"&maxResults=1")), | |
total = if maxTotal = null then Source[total] else List.Min({maxTotal,Source[total]}) | |
in | |
total | |
// STEP: GetFilterColumns | |
let | |
// Get list of fields from Filter definition | |
FilterColumns = Json.Document(Web.Contents(JiraRootUrl&"/rest/api/2/filter/"&JiraFilterId&"/columns")), | |
#"Converted to Table" = Table.FromList(FilterColumns, Splitter.SplitByNothing(), null, null, ExtraValues.Error), | |
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"label", "value"}, {"label", "value"}) | |
in | |
#"Expanded Column1" | |
// STEP: GetFields | |
let | |
// Get list of fields from Filter definition | |
Fields = if JiraFields <> null then JiraFields else | |
let | |
FilterColumnsTable = GetFilterColumns, | |
Fields2 = Text.Combine(FilterColumnsTable[value],", ") | |
in | |
Fields2 | |
in | |
Fields | |
// STEP (function): StartAt | |
(start as number) => | |
let | |
maxRes = if (maxTotal=null) or (start + maxResults < maxTotal) then maxResults else maxTotal - start , | |
Fields = GetFields, | |
Source = Json.Document(Web.Contents(JiraRootUrl&"/rest/api/2/search?jql=filter="&JiraFilterId&"&maxResults="&Text.From(maxRes)&"&fields=["&Fields&"]"&"&startAt="&Text.From(start))), | |
issues = Source[issues], | |
#"Converted to Table" = Table.FromList(issues, Splitter.SplitByNothing(), null, null, ExtraValues.Error), | |
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"key", "fields"}, {"Column1.key", "Column1.fields"}) | |
in | |
#"Expanded Column1" | |
// STEP: GetIssues | |
let | |
total = GetTotal, | |
cnt = Number.RoundUp(total/maxResults) , | |
total1 = List.Numbers(0,cnt,maxResults), | |
#"Converted to Table" = Table.FromList(total1, Splitter.SplitByNothing(), null, null, ExtraValues.Error), | |
#"Changed Type" = Table.TransformColumnTypes(#"Converted to Table",{{"Column1", Int64.Type}}), | |
#"Invoked Custom Function" = Table.AddColumn(#"Changed Type", "Data", each StartAt([Column1])), | |
#"Removed Columns" = Table.RemoveColumns(#"Invoked Custom Function",{"Column1"}), | |
#"Expanded Data" = Table.ExpandTableColumn(#"Removed Columns", "Data", {"Column1.key", "Column1.fields"}, {"Column1.key", "Column1.fields"}), | |
Issues = if (JiraFields = null) then | |
let | |
FilterColumnTable = GetFilterColumns, | |
IssuesRenamed = Table.ExpandRecordColumn(#"Expanded Data", "Column1.fields", FilterColumnTable[value],FilterColumnTable[label] ) | |
in | |
IssuesRenamed | |
else | |
let | |
Fields = GetFields, | |
FieldsList = Text.Split(Fields,","), | |
IssuesNoRenamed = Table.ExpandRecordColumn(#"Expanded Data", "Column1.fields", FieldsList,FieldsList ) | |
//#"Expanded status" = Table.ExpandRecordColumn(#"Expanded fields", "status", {"name"}, {"status.name"}), | |
//#"Expanded project" = Table.ExpandRecordColumn(#"Expanded status", "project", {"name"}, {"project.name"}) | |
in | |
IssuesNoRenamed | |
in | |
Issues |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
See details https://tdalon.blogspot.com/2021/05/jira2powerbi-list.html
This solution was superseeded by https://tdalon.blogspot.com/2021/05/jira2powerbi.html