如何通过JIRA API在Power BI中获取指定版本故事及单个故事?
JIRA API + Power BI 问题解决方案
1. 获取指定版本下所有故事的JQL写法
你之前的JQL缺少版本过滤条件,所以拿不到目标版本的故事。在原有条件基础上添加版本匹配规则即可:
- 知道版本名称时:
project in (ROL1) AND issuetype = Story AND fixVersion = "你的版本名称"
(版本名称含空格或特殊字符时,必须用双引号包裹) - 知道版本ID时:
project in (ROL1) AND issuetype = Story AND fixVersion = 版本ID - 要匹配多个版本的话,换成
fixVersion in ("版本1", "版本2")
2. 处理超过100条结果的分页获取
JIRA API的maxResults上限是100,超过这个数量必须用startAt参数分页拉取:
- 第一页:
startAt=0&maxResults=100 - 第二页:
startAt=100&maxResults=100 - 后续每页递增100,直到返回的
total字段等于已获取的总条目数。
在Power BI里可以用自定义函数实现自动分页,示例M代码如下:
let // 定义获取单页数据的函数 GetJiraPage = (startAt as number) => let Source = Json.Document(Web.Contents("https://issues.xxx.com/rest/api/2/search?jql=project in (ROL1) AND issuetype=Story AND fixVersion=""你的版本名称""&startAt=" & Text.From(startAt) & "&maxResults=100")), Issues = Source[issues] in Issues, // 获取第一页数据 FirstPage = GetJiraPage(0), // 获取总条目数(仅请求元数据,maxResults设为0) TotalCount = Json.Document(Web.Contents("https://issues.xxx.com/rest/api/2/search?jql=project in (ROL1) AND issuetype=Story AND fixVersion=""你的版本名称""&maxResults=0"))[total], // 生成所有需要请求的startAt值列表 PageNumbers = List.Generate(()=>0, each _ < TotalCount, each _ + 100), // 批量调用函数获取所有页数据 AllPages = List.Transform(PageNumbers, each GetJiraPage(_)), // 合并所有页的结果 Combined = List.Combine(AllPages), // 转换为Power BI表格并展开字段 #"转成表格" = Table.FromList(Combined, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"展开字段" = Table.ExpandRecordColumn(#"转成表格", "Column1", {"key", "fields"}, {"IssueKey", "Fields"}) in #"展开字段"
3. 获取单个故事的API调用方式
不需要用search接口,直接调用issue详情接口更高效,URL格式为:https://issues.xxx.com/rest/api/2/issue/ROL1-5998
把这个URL直接填入Power BI的Web连接器,就能拿到该单个故事的完整数据,不需要额外的JQL参数。
内容的提问来源于stack exchange,提问作者user24765344
相关产品推荐
相关产品推荐

