【问题标题】:OData Query to Only Return State Changes from Azure Devops仅从 Azure Devops 返回状态更改的 OData 查询
【发布时间】:2021-02-04 16:08:28
【问题描述】:

我有一个 OData 查询,用于将数据提取到 PowerBI 中,我正在努力提高效率。我正在从 Azure DevOps 做一份报告,并从 WorkItemRevisions 资源中提取数据。目前,我正在提取工作项的所有数据,然后在 PowerBI 中进行过滤,以便仅在状态发生更改时获取。我想将此过滤移动到 Odata 查询中,以便我可以最大限度地减少我拉入报告中的数据。

目前,我有如下查询(用于此问题的简化示例)

https://analytics.dev.azure.com/{Organization}/{Project}/_odata/v3.0-preview/WorkItemRevisions?
$select=Revision,WorkItemId,WorkItemType,Title,State,ChangedDate,LeadTimeDays,ParentWorkItemId

如何进行更新,以便只返回状态已更改(从 New 到 Active、Active 到 Done 等)的修订?

【问题讨论】:

    标签: azure-devops powerbi odata


    【解决方案1】:

    如何进行更新,以便仅返回状态已更改(从 New 到 Active、Active 到 Done 等)的修订?

    恐怕 OData Query 无法完美实现我们所需要的。

    有一个功能Revisions/any(r:r/state eq '{state}') 可以过滤过去有设置状态的工作项。

    例如:

    https://analytics.dev.azure.com/<Organization>/<Project>/_odata/v2.0//WorkItems?
      $filter=State eq 'Closed' and Revisions/any(r:r/State eq 'Active')
    

    此查询类似于使用 Was Ever 运算符的工作项查询。

    正如我所说,这可能不是一个完美的解决方案。那是因为它只能过滤工作项是否曾经有一个指定的状态,而不能准确地确定工作项的状态必须是从NewActiveActive到@ 987654326@。如果我们将工作项的状态从Active 更改为Resolved,则将其从Resolved 更改为Closed。那么这个工作项就会出现在查询结果中。

    另外,即使您使用UI查询,我们也无法准确查询到工作项状态从A变为B的结果。为了达到这个目的,我们需要使用REST API。

    所以,我们可以使用Revisions/any(r:r/state eq '{state}')这个特性,在一定程度上减少拉入报表的数据。

    【讨论】:

    • 从您的回复来看,我的问题并没有我想的那么清楚。我不想尝试仅针对特定状态更改(A 到 B)提取数据,而是仅在状态更改时查找数据。因此,如果记录上有 5 个更改。 1 状态 - 新 2. 状态 - 活跃 3. 状态 - 活跃 + 一些其他更改 4. 状态 - 已关闭 5. 状态 - 已关闭 + 其他一些更改 我只想从记录 1、2 和 4 中提取数据 抱歉延迟响应,因为这不是一个紧迫的问题,但现在由于数据量的原因加载报告的时间。
    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2021-08-01
    • 2019-07-21
    • 1970-01-01
    • 2012-11-21
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多