如何在Excel Power Query编辑器中处理Azure DevOps API端点并关联项目列表与对应测试计划用于Excel组合框
关联Azure DevOps项目与对应测试计划的Power Query方案
我明白你现在的需求:已经通过Power Query拿到了项目列表和测试计划列表,现在要把它们关联起来,得到每个项目对应的测试计划集合,方便后续绑定到Excel组合框。咱们一步步来调整你的Power Query代码:
步骤1:获取并整理测试计划数据
首先,在现有查询里补充获取TestPlans表的数据,它和Projects表通过ProjectId做关联。我们只保留测试计划的关键字段,比如名称、ID以及关联的项目ID,避免冗余数据。
步骤2:关联项目与测试计划表
用嵌套连接的方式,把两个表按ProjectId关联起来,这样每个项目都会带上对应的测试计划列表,正好适配组合框的层级展示需求。
完整的Power Query代码
let // 连接Azure DevOps Analytics OData源 Fonte = OData.Feed("https://analytics.dev.azure.com/{organization}/_odata/v1.0/", null, [Implementation="2.0"]), // 获取项目表并保留关联所需的核心字段 Projects_table = Fonte{[Name="Projects",Signature="table"]}[Data], #"整理项目表" = Table.SelectColumns(Projects_table, {"ProjectName", "ProjectId"}), // 获取测试计划表并保留核心字段 TestPlans_table = Fonte{[Name="TestPlans",Signature="table"]}[Data], #"整理测试计划表" = Table.SelectColumns(TestPlans_table, {"TestPlanName", "TestPlanId", "ProjectId"}), // 按ProjectId关联两个表,将测试计划嵌套到对应项目下 #"关联项目与测试计划" = Table.NestedJoin(#"整理项目表", {"ProjectId"}, #"整理测试计划表", {"ProjectId"}, "关联的测试计划", JoinKind.LeftOuter), // 可选:将嵌套的测试计划转换为仅含名称的简化表,方便后续使用 #"提取测试计划名称" = Table.TransformColumns(#"关联项目与测试计划", {{"关联的测试计划", each Table.SelectColumns(_, {"TestPlanName"})}}) in #"提取测试计划名称"
代码细节说明
- 保留
ProjectId作为关联键,比项目名称更可靠(毕竟项目名称存在重复的可能)。 - 使用
JoinKind.LeftOuter确保即使某个项目没有测试计划,也会保留在结果里,不会被过滤掉。 - 最后一步的
提取测试计划名称是可选操作:如果需要给组合框展示层级结构,可以保留嵌套表格式;如果需要扁平结构用于联动组合框,可以再加一步展开嵌套表:
// 追加在之前代码的最后 #"展开测试计划" = Table.ExpandTableColumn(#"提取测试计划名称", "关联的测试计划", {"TestPlanName"}, {"测试计划名称"})
展开后得到每行对应一个项目+测试计划的扁平表,非常适合做“先选项目,再选对应测试计划”的联动组合框。
内容的提问来源于stack exchange,提问作者Paulo Roberto
相关产品推荐
相关产品推荐

