You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI中通过API批量获取Azure DevOps工作项数据?

批量从Azure DevOps获取工作项到Power BI

要批量获取所有工作项,无需手动罗列ID,推荐使用**Azure DevOps的WIQL(工作项查询语言)**先获取目标工作项的ID列表,再批量拉取详细信息,具体实现步骤如下:

1. 用WIQL获取工作项ID列表

WIQL是Azure DevOps专属的工作项查询语法,支持按项目、类型、状态等条件过滤,能一次性返回所有符合要求的工作项ID,替代手动罗列的繁琐操作。

对应M脚本(获取ID列表)

新建空白查询,替换脚本中的组织名、项目名和个人访问令牌(PAT):

let
    // WIQL查询语句:获取当前项目下所有工作项ID,可按需修改过滤条件
    WIQLQuery = "SELECT [System.Id] FROM WorkItems",
    // WIQL API地址
    APIUrl_WIQL = "https://dev.azure.com/你的组织名/你的项目名/_apis/wit/wiql?api-version=7.1-preview.2",
    // 个人访问令牌(需授予工作项读取权限)
    PAT = "你的个人访问令牌",
    // 构造请求头,PAT需转Base64编码(格式为":" + PAT)
    Headers = [
        #"Content-Type" = "application/json",
        #"Authorization" = "Basic " & Binary.ToText(Text.ToBinary(":" & PAT), BinaryEncoding.Base64)
    ],
    // 发送POST请求执行WIQL查询
    WIQL_Response = Json.Document(Web.Contents(APIUrl_WIQL, [Headers=Headers, Content=Text.ToBinary(Json.FromValue([query=WIQLQuery]))])),
    // 提取工作项ID列表
    WorkItemIds = List.Transform(WIQL_Response[workItems], each _[id]),
    // 将ID列表转为逗号分隔的字符串,用于后续批量查询
    IdString = Text.Combine(List.Transform(WorkItemIds, Text.From), ",")
in
    IdString

2. 批量获取工作项详细信息

基于上述步骤得到的ID字符串,调用批量获取工作项的API,一次性拉取所有工作项的结构化数据:

完整整合脚本(直接生成工作项表格)

将两步逻辑整合,直接得到可使用的工作项数据表:

let
    // --- 第一步:获取工作项ID列表 ---
    WIQLQuery = "SELECT [System.Id] FROM WorkItems",
    APIUrl_WIQL = "https://dev.azure.com/你的组织名/你的项目名/_apis/wit/wiql?api-version=7.1-preview.2",
    PAT = "你的个人访问令牌",
    Headers = [
        #"Content-Type" = "application/json",
        #"Authorization" = "Basic " & Binary.ToText(Text.ToBinary(":" & PAT), BinaryEncoding.Base64)
    ],
    WIQL_Response = Json.Document(Web.Contents(APIUrl_WIQL, [Headers=Headers, Content=Text.ToBinary(Json.FromValue([query=WIQLQuery]))])),
    WorkItemIds = List.Transform(WIQL_Response[workItems], each _[id]),
    IdString = Text.Combine(List.Transform(WorkItemIds, Text.From), ","),

    // --- 第二步:批量获取工作项详细信息 ---
    APIUrl_WorkItems = "https://dev.azure.com/你的组织名/你的项目名/_apis/wit/workitems?ids=" & IdString & "&api-version=7.1-preview.3&$expand=All",
    WorkItems_Response = Json.Document(Web.Contents(APIUrl_WorkItems, [Headers=Headers])),
    // 将返回的工作项数组转为表格
    WorkItems_Table = Table.FromList(WorkItems_Response[value], Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    // 展开工作项基础信息
    Expanded_Fields = Table.ExpandRecordColumn(WorkItems_Table, "Column1", {"id", "fields"}, {"ID", "字段详情"}),
    // 展开需要的具体字段(可按需添加更多字段)
    Expanded_Details = Table.ExpandRecordColumn(Expanded_Fields, "字段详情", 
        {"System.Title", "System.AssignedTo", "System.State", "System.CreatedDate"},
        {"标题", "负责人", "状态", "创建日期"}
    )
in
    Expanded_Details

关键注意事项

  • PAT权限:个人访问令牌需在Azure DevOps的「用户设置」-「个人访问令牌」中创建,至少授予Work Items (Read)权限。
  • WIQL自定义:若不需要所有工作项,可修改WIQL条件,比如过滤用户故事:SELECT [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'User Story'。
  • 批量上限处理:批量API默认最多返回200条数据,若工作项超过200条,可拆分ID列表为多个批次(如每200个ID一批),循环调用API后合并结果。
  • 字段扩展:脚本中仅展开了常用字段,可在Expanded_Details步骤中添加更多System.开头的系统字段,或自定义字段。

内容的提问来源于stack exchange,提问作者Cheries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:10:22