问题描述
我正在构建Power BI报表以显示Azure DevOps的测试执行(本地)。该数据未通过OData公开,因此我必须使用与TFS Analysis实例的实时连接。由于Power BI中的实时连接,因此我无法根据需要添加到数据模型。我已经写了一些查询来从我需要的数据仓库中检索数据,但是我注意到FactTestResult表中有很多额外的行,其中包含 PointId和ChangeNumber的值-不能确定这些记录是什么因为我无法在用户界面中看到它们-Azure DevOps Server 2020 。添加过滤器ResultCount = 1将删除这些其他行,从而得到单行。但是,仅剩下一行, AreaSK和IterationSK均为空-与我刚刚过滤掉的列不同。理想情况下,我可以加入Area和Iteration,并且可以解决此问题,我想了解这些额外行的目的是什么-PointID和ChangeNumber,并且有更好的方法编写Test执行历史记录在下面查询。
SELECT *
FROM [Tfs_Warehouse].[dbo].[vFactTestResultOverlay] FTRO
join vDimTestRunOverlay DTRO on
DTRO.TestRunSK = FTRO.TestRunSK
where DTRO.TestRunId = "testRunID" and
TeamProjectCollectionSK = "projectCollectionID"
解决方法
TFS数据仓库在提取测试运行历史记录时遇到问题-FactTestResult表中的多余行(PointID,ChangeNumber)
对于PointID
,我们可以知道它是测试点的ID。确实,我们无法在UI上直接看到它,但是可以通过REST API来获取它:
GET https://dev.azure.com/{organization}/{project}/_apis/test/Plans/{planId}/Suites/{suiteId}/points?api-version=6.0
我们可以在UI上看到点:
对于ChangeNumber
,我也没有得到太多的信息,只是有关它的文档:
使用类似于以下的代码,我设法排序并找到了最近的记录,而没有迭代和区域的空条目。最后没有明确提到changeNumber。
select
*,Row_Number() over (partition by FTR.TeamProjectSK,FTR.TestSuiteSK,FTR.TestCaseId,FTR.ConfigurationSK order by FTR.ResultDate desc) as TestResultsPerTestCaseOrderedDesc
from [Tfs_Warehouse].[dbo].[FactTestResult] FTR
where PointrecordCount = 1