傾向データのクエリ

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

データの傾向を調べ、期間を超えて比較することは、レポートとデータ分析の重要な側面です。 分析では、これらの機能がサポートされています。

Note

Analytics サービスは、すべての Azure DevOps Services で自動的に有効になり、運用環境でサポートされます。 Power BI の統合 と、Analytics サービスの OData フィード へのアクセスが一般公開されています。 お使いいただき、フィードバックをお寄せください。 使用可能なデータはバージョンによって異なります。 サポートされている最新バージョンは v2.0、最新のプレビュー バージョンです v4.0-preview。 詳細については、OData API のバージョン管理に関するページを参照してください

Note

Analytics サービスは、Azure DevOps Server 2020 以降のすべての新しいプロジェクト コレクションに対して、運用環境で自動的にインストールされ、サポートされます。 Power BI の統合 と、Analytics サービスの OData フィード へのアクセスが一般公開されています。 お使いいただき、フィードバックをお寄せください。 Azure DevOps Server 2019 からアップグレードした場合は、アップグレード中に Analytics サービスをインストールできます。

使用可能なデータはバージョンによって異なります。 サポートされている最新バージョンは v2.0、最新のプレビュー バージョンです v4.0-preview。 詳細については、OData API のバージョン管理に関するページを参照してください

Note

Analytics サービスは、Azure DevOps Server 2019 のプレビュー段階です。 プロジェクト コレクションに対して有効またはインストールできますPower BI の統合 と Analytics サービスの OData フィード へのアクセスはプレビュー段階です。 お使いいただき、フィードバックをお寄せください。

使用可能なデータはバージョンによって異なります。 サポートされている最新バージョンは v2.0、最新のプレビュー バージョンです v4.0-preview。 詳細については、OData API のバージョン管理に関するページを参照してください

傾向データは、WorkItemSnapshot エンティティ セットと WorkItemBoardSnapshot エンティティ セットで公開されます。 作成された日から今日まで、すべての作業項目が 1 日ごとに存在するように構築されます。 1 年前に作成された作業項目が 1 つだけの組織の場合、このエンティティには 365 行があります。 大規模なプロジェクトの場合、これらのエンティティはクライアント ツールで使用するのは実用的ではありません。

ソリューションとは 集計拡張機能を使用します

この記事では、次のことについて説明します。

  • 傾向データの基本的なクエリを作成する方法

OData 集計拡張機能を使用すると、レポートに役立つ Azure DevOps から集計データを返すことができます。 たとえば、3 月のバグ傾向を表示できます。 バグの傾向は、プロジェクトをすぐに適切に使用できるように、プロジェクトを管理する上で一般的で重要な部分です。

Note

このドキュメントに示されている例は、Azure DevOps Services の URL に基づいています。Azure DevOps サーバーの URL に置き換える必要があります。

https://{servername}:{port}/tfs/{OrganizationName}/{ProjectName}/_odata/{version}/

傾向データの基本的なクエリを作成する

WorkItemSnapshot テーブルを効果的に照会するために必要な基本的な要件がいくつかあります。

  • 日付でデータをフィルター処理します。
  • 集計は、少なくとも日付ごとにグループ化する必要があります。 そうでない場合は、応答に警告が表示されます。

バグ傾向レポートを作成するクエリは、次の例のようになります。

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(DateValue ge 2016-03-01Z and DateValue le 2016-03-31Z and WorkItemType eq 'Bug')/
    groupby((DateValue,State), aggregate($count as Count))
  &$orderby=DateValue

次の例のような結果が返されます。

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 2666
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-03-01T00:00:00-08:00",
      "Count": 51408
    }
  ]
}

このクエリは最大 31 * (number of bug states)で生成されます。 既定のバグには、次の 3 つの状態があります。

  • アクティブ
  • 解決済み
  • Closed

このクエリでは、実際に何千ものレコードが存在する場合でも、最大で 93 行が返されます。 これは、データを返すはるかにコンパクトな形式を提供します。

この例のバリエーションを見てみましょう。 あるイテレーションで始まり、別のイテレーションで終わるイテレーションまたはリリースのバグ傾向を確認する必要があります。

そのクエリを作成するには、次の例を実行します。

https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//WorkItemSnapshot?
  $apply=
    filter(WorkItemType eq 'Bug')/
    filter(Iteration/IterationName eq 'Sprint 99')/
    filter(DateValue ge Iteration/StartDate and (Iteration/EndDate eq null or DateValue le Iteration/EndDate))/
    groupby((DateValue, State), aggregate($count as Count))
  &$orderby=DateValue

次の例のような結果が返されます。

{
  "@odata.context": "https://analytics.dev.azure.com/{OrganizationName}/{ProjectName}/_odata/{version}//$metadata#WorkItemSnapshot(DateValue,State,Count)",
  "value": [
    {
      "@odata.id": null,
      "State": "Active",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 320
    },
    {
      "@odata.id": null,
      "State": "Closed",
      "DateValue": "2016-04-04T00:00:00-07:00",
      "Count": 38
    }
  ]
}

このクエリでは、主に 2 つの違いがあります。 特定のイテレーションにデータをフィルター処理するフィルター句を追加しました。日付はイテレーションの開始日と終了日とハードコーディングされた日付と比較されています。

Note

スナップショット テーブルのクエリで集計が使用されていない場合、応答に "指定したクエリには、すべてのクエリに推奨される$select句または$apply句が含まれていません" という警告が表示されます。