次の方法で共有


傾向データのクエリ

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

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

手記

Analytics サービスは、Azure DevOps Services 内のすべてのサービスに対して運用環境で自動的に有効になり、サポートされます。 Power BI の統合 と、Analytics サービスの OData フィード へのアクセスが一般公開されています。 Analytics OData フィードを使用し、フィードバックを提供することをお勧めします。

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

手記

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

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

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

解決策は何ですか? 集計拡張機能使用します。

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

手記

このドキュメントに示されている例は、Azure DevOps Services URL に基づいています。 必要に応じて、Azure DevOps Server URL を置き換えてください。

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

前提 条件

カテゴリ 必要条件
アクセスレベル プロジェクト メンバーを - します。
- 少なくとも ベーシック アクセス。
アクセス許可 既定では、プロジェクト メンバーには Analytics にクエリを実行してビューを作成する権限があります。 サービスと機能の有効化と一般的なデータ追跡アクティビティに関するその他の前提条件の詳細については、「アクセス許可と、Analyticsにアクセスするための前提条件」を参照してください。

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

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 つの状態があります。

  • アクティブ
  • 解決
  • クローズド

このクエリは、実際に何千ものレコードが存在する場合でも、最大で 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 つの違いがあります。 特定のイテレーションにデータをフィルター処理するフィルター句を追加しました。日付はイテレーションの開始日と終了日とハードコーディングされた日付と比較されています。

手記

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