次の方法で共有


Analytics のデータ モデル

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

Azure DevOps の Analytics データ モデルはエンティティ セットで構成され、そのメンバー (エンティティ) には、フィルター処理、集計、集計できるプロパティが含まれています。 さらに、エンティティを相互に関連付ける ナビゲーション プロパティ を含み、選択、フィルター処理、グループ化のための他のプロパティへのアクセスを提供します。

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 のバージョン管理に関するページを参照してください。

Analytics データ モデルについて

Analytics サービスは、OData エンドポイントを介して Azure DevOps データにアクセスするための構造化されたアプローチを提供します。 このデータ モデルを使用すると、次のことが可能になります。

  • 作業追跡データのクエリ: 作業項目、領域、イテレーション、および関連メタデータにアクセスする
  • パイプライン情報の分析: ビルド およびリリース パイプライン データのクエリを実行する
  • テスト結果に関するレポート: テストの実行と計画データにアクセスする
  • カスタム レポートの作成: Power BI レポートとその他の分析ソリューションを構築する

スキーマ名前空間

Analytics データ モデルは、次の 2 つのスキーマ名前空間で動作します。

  • Microsoft.VisualStudio.Services.Analytics.Model
  • Microsoft.VisualStudio.Services.Analytics

これらの名前空間はエンティティを整理し、その構造を定義し、さまざまな Azure DevOps 機能間で一貫したデータ アクセス パターンを確保します。

エンティティ セットとエンティティ型

エンティティ型は、キーを持つ名前付き構造化型です。 各エンティティの名前付きプロパティとリレーションシップを定義します。 EntityType のキーは、WorkItemIdPipelineIdReleasePipelineId などのプリミティブプロパティのサブセットおよびエンティティ型のその他のプロパティから構成されます。

エンティティ セットは、エンティティの名前付きコレクションです。 たとえば、 WorkItems は、 WorkItem エンティティを含むエンティティ セットです。 エンティティのキーは、エンティティ セット内のエンティティを一意に識別します。 複数のエンティティ セットで同じエンティティ型が使用されている場合、キー値の同じ組み合わせを複数のエンティティ セットに表示し、異なるエンティティ (このキーの組み合わせが表示されるエンティティ セットごとに 1 つ) を識別できます。 これらのエンティティはそれぞれ異なるエンティティ ID を持っています。エンティティ セットは、データ モデルへのエントリ ポイントを提供します。

エンティティ セットは OData メタデータで記述され、プロジェクトによって異なります。 プロジェクトの OData メタデータを要求することで、エンティティ セット、エンティティ型、プロパティの完全な一覧を調べることができます。 方法については、「 Analytics の OData クエリを作成するを参照してください。

複合エンティティ

複合エンティティは、特定のシナリオをサポートします。 システムは、より単純なエンティティからそれらを構成し、多くの場合、生成するコンピューティング リソースを増やす必要があり、より大きな結果セットを返す可能性があります。 最適なパフォーマンスを実現し、不要な調整を回避するには、シナリオに合わせて正しいエンティティに対してクエリを実行してください。

たとえば、WorkItemSnapshotWorkItemRevisionsDatesを組み合わせて、各日付に作業項目ごとに 1 つのリビジョンが設定されるようにします。 この表現は、フィルター処理された一連の作業項目の傾向データに焦点を当てる OData クエリをサポートします。 ただし、この複合エンティティを使用して作業項目の現在の状態を照会しないでください。 代わりに、 WorkItems エンティティ セットを使用して、より迅速に実行されるクエリを生成する必要があります。

同様に、一部のエンティティにはすべての履歴値が含まれる場合もあれば、現在の値のみを含むエンティティもあります。 WorkItemRevisions にはすべての作業項目履歴が含まれています。現在の値が関心のあるシナリオでは使用しないでください。

リレーションシップ

より複雑なクエリ結果を生成するには、リレーションシップを使用してエンティティを結合します。 リレーションシップを使用して、データの拡張、フィルター処理、集計を行うことができます。

一部のナビゲーション プロパティでは 1 つのエンティティが生成され、その他のプロパティはエンティティのコレクションになります。 次の図は、選択エンティティとそのナビゲーション プロパティを示しています。 わかりやすくするために、一部の複合エンティティとリレーションシップは省略されています。

Analytics データ モデルのリレーションシップ図。

エンティティのリレーションシップについて

Analytics データ モデルでは、いくつかの種類のリレーションシップが使用されます。

  • 一対多: 単一の親エンティティが複数の子エンティティに関連します(例:1つの領域から多くの作業項目)。
  • 多対一: 複数のエンティティが1つの親エンティティに関連する(例: 多数のWorkItemが1つの領域に関連する場合)
  • 1 対 1: 1 つのエンティティが、他の 1 つのエンティティに正確に関連付けられます
  • 多対多: 複数のエンティティが複数の他のエンティティに関連します(例: WorkItems が Tags に関連する場合)

リレーションシップ キー

外部ツールがエンティティを結合できるように、エンティティリレーションシップも外部キーとして表されます。 これらのプロパティにはサフィックス "SK" があり、整数または GUID のデータ型です。 日付プロパティには、 YYYYMMDDという形式の、対応する整数の日付キー プロパティがあります。

作業追跡エンティティの種類とエンティティ セット

指定された API バージョンでは、次のエンティティ型とエンティティ セットがサポートされています。 完全なリファレンスについては、「 Work tracking metadata reference for Azure Boards Analytics(Azure Boards Analytics の作業追跡メタデータ リファレンスを参照してください。

EntityType/EntitySet 説明 v1.0 v2.0 v3.0 プレビュー v4.0-プレビュー
領域/
領域
作業項目 エリア パス。エリア階層別にグループ化およびフィルター処理するためのプロパティが含まれます。 ✔️ ✔️ ✔️ ✔️
反復/
イテレーション
作業項目 イテレーション パス。イテレーション階層によるグループ化とフィルター処理のプロパティが含まれます。 ✔️ ✔️ ✔️ ✔️
BoardLocation/
BoardLocations
ボード列、スイムレーン、および分割によって識別されるボード セルの場所には、履歴ボードの設定が含まれます。 各ボード フィールドの説明については、「 ワークフローフィールドとボード フィールドを参照してください。 ✔️ ✔️ ✔️ ✔️
CalendarDate/
日付
リレーションシップを使用して他のエンティティをフィルター処理およびグループ化するために使用される日付。 ✔️ ✔️ ✔️ ✔️
プロジェクト/
プロジェクト
organization (クラウド) またはプロジェクト コレクション (オンプレミス) に対して定義されているすべてのプロジェクト。 ✔️ ✔️ ✔️ ✔️
処理/
プロセス
作業項目と作業項目の種類を展開またはフィルター処理するために使用されるバックログ情報。 プロセスを使用してレポートをフィルター処理する例については、「要件追跡サンプル レポート」を参照してください。 ✔️ ✔️ ✔️
タグ/
タグ
各プロジェクトのすべての作業項目タグ。 タグを使用してレポートをフィルター処理する例については、「リリース バーンダウン サンプル レポート」を参照してください。 ✔️ ✔️ ✔️ ✔️
チーム/
チーム
プロジェクトに対して定義されているすべてのチーム。 Teams を使用してレポートをフィルター処理する例については、「Power BI レポートにチーム スライサーを追加する」を参照してください。 ✔️ ✔️ ✔️ ✔️
利用者/
ユーザー
さまざまな作業項目のプロパティ ( 割り当て済み作成者など) を展開またはフィルター処理するために使用するユーザー情報。 ✔️ ✔️ ✔️ ✔️
ワークアイテムボードスナップショット/
作業項目ボードスナップショット
(複合)傾向レポートの生成に使用される、ボードの場所を含む各カレンダー日付の各作業項目の状態。 サンプル レポートについては、「 累積フローダイアグラム (CFD) サンプル レポート」を参照してください。 ✔️ ✔️ ✔️ ✔️
WorkItemLink/
WorkItemLinks
作業項目間のリンク ( 関連など)。 リンクの最新のリビジョンのみを含み、履歴は含まない。 ハイパーリンクは含まれません。 ✔️ ✔️ ✔️ ✔️
WorkItemRevision/
WorkItemRevisions
現在のリビジョンを含むすべての履歴作業項目のリビジョン。 削除された作業項目は含まれません。 ✔️ ✔️ ✔️ ✔️
WorkItemSnapshot/
WorkItemSnapshot
(複合)傾向レポートをサポートするために使用される、各カレンダー日付の各作業項目の状態。 サンプル レポートについては、「 バグ傾向のサンプル レポート」を参照してください。 ✔️ ✔️ ✔️ ✔️
Workitem/
Workitem
作業項目の現在の状態。 状態レポートをサポートするために使用されます。 サンプル レポートについては、「 子作業項目の値を親サンプル レポートにロールアップする」を参照してください。 ✔️ ✔️ ✔️ ✔️
WorkItemTypeField/
作業項目タイプフィールド
作業項目の種類とプロセスごとの作業項目のプロパティ。 レポートの作成をサポートするために使用されます。 ✔️ ✔️ ✔️ ✔️

レポート用の主要な作業追跡エンティティ

レポートを作成するときは、次のプライマリ エンティティ セットを検討してください。

  • 現在の状態レポート: 現在の作業項目の状態に WorkItems を使用する
  • 履歴傾向レポート: 時間の経過に伴う傾向分析に WorkItemSnapshot を使用する
  • 詳細な変更追跡: 包括的な履歴に WorkItemRevisions を使用する
  • ボード固有のレポート: かんばんボード分析に WorkItemBoardSnapshot を使用する

パイプライン エンティティの種類とエンティティ セット

v3.0-preview または v4.0-preview Analytics バージョンでは、次のエンティティ型とエンティティ セットがサポートされています。 完全なリファレンスについては、「 パイプラインメタデータリファレンス」を参照してください

EntityType/EntitySet 説明 v3.0 プレビュー v4.0-プレビュー
支店/
ブランチ
テストまたはパイプラインで使用されるブランチに関する基本情報。 サンプル レポートについては、 Progress 状態のサンプル レポートを参照してください。 ✔️ ✔️
ParallelPipelineJobsSnapshot/
ParallelPipelineJobsSnapshot
(複合)並列パイプラインの使用の理解をサポートします。 並列パイプライン テストの詳細については、「 Visual Studio テスト タスクを使用して並列でテストを実行するを参照してください。 ✔️
パイプライン/
パイプライン
パイプラインのプロパティ。 ✔️ ✔️
PipelineJob/
PipelineJobs
パイプライン実行内の特定のジョブの個々の実行結果。 ✔️ ✔️
PipelineRun/
PipelineRuns
パイプラインの実行情報。 サンプル レポートについては、「 Pipeline pass rate trend sample reportを参照してください。 ✔️ ✔️
PipelineRunActivityResult/
PipelineRunActivityResults
特定のパイプライン実行内のすべてのステージ、ステップ、ジョブ、およびタスクのマージされたログ。 サンプル レポートについては、 Pipeline タスク期間のサンプル レポートを参照してください。 ✔️ ✔️
PipelineTask/
PipelineTasks
パイプライン内で使用するタスクのプロパティ。 ✔️ ✔️
TaskAgentプールサイズスナップショット/
TaskAgentPoolSizeSnapshots
(複合)プール サイズ、パイプライン ジョブ、コンカレンシーの理解をサポートします。 エージェント プールの Historical グラフ は、このエンティティ セットを使用する方法を示しています。 ✔️
TaskAgentRequestSnapshot/
TaskAgentRequestSnapshots
(複合)エージェント要求パターンと時間の経過に伴うリソース使用率に関する分析情報を提供します。 ✔️

パイプライン エンティティの使用パターン

さまざまなパイプライン エンティティが、特定のレポート シナリオに対応します。

  • パイプラインの概要レポート: PipelinesPipelineRuns を使用して高レベルのメトリックを取得する
  • パフォーマンス分析: PipelineRunActivityResults を使用して詳細なタイミング分析を行う
  • リソース使用率: 容量計画に TaskAgentPoolSizeSnapshot を使用する
  • エラー分析: ジョブ レベルの成功/失敗の追跡に PipelineJobs を使用する

エンティティの種類とエンティティ セットをテストする

v3.0-preview または v4.0-preview Analytics バージョンでは、次のエンティティ型とエンティティ セットがサポートされています。 完全なリファレンスについては、 Test メタデータ リファレンスを参照してください。

EntityType/EntitySet 説明 v3.0 プレビュー v4.0-プレビュー
TestConfiguration/
TestConfigurations
テスト 計画の構成情報。 テストの構成の詳細については、「 異なる構成のテストを参照してください。 ✔️ ✔️
TestResult/
TestResults
TestRun に関連付けられた特定の Test に対する個々の実行結果。 ✔️ ✔️
TestResultsDaily/
TestResultsDaily
TestResult 実行の毎日のスナップショット集計。Test でグループ化されます (TestRun ではありません)。 サンプル レポートについては、 概要傾向のサンプル レポートを参照してください。 ✔️ ✔️
TestRun/
TestRuns
テストの実行情報は、TestResult の集計データを含むパイプラインで実行されます。 ✔️ ✔️
テスト/
テスト
テスト名やテスト所有者など、テスト ケースのプロパティ。 テスト ケースの定義の詳細については、 手動テスト ケースの作成を参照してください。 ✔️ ✔️
TestPoint/
TestPoints
テスト ポイントの実行情報。 テスト ポイントは、テスト ケース、テスト スイート、構成、テスターの一意の組み合わせです。 サンプル レポートについては、 Progress 状態のサンプル レポートを参照してください。 ✔️ ✔️
TestPointHistorySnapshot/
TestPointHistorySnapshots
(複合)時間の経過に伴うテスト ポイントの実行データの履歴。 サンプル レポートについては、 Manual テスト実行傾向のサンプル レポートを参照してください。 ✔️ ✔️
TestSuite/
TestSuites
テスト スイートの情報。 テスト スイートの定義の詳細については、「 テスト 計画とテスト スイートの作成」を参照してください ✔️ ✔️

エンティティ レポートのシナリオをテストする

テスト エンティティは、さまざまなレポートのニーズをサポートします。

  • テスト実行の追跡: 詳細な実行データに TestResultsTestRuns を使用する
  • 計画メトリックのテスト: 計画範囲に TestPointsTestSuites を使用する
  • 傾向分析: 履歴傾向に TestResultsDailyTestPointHistorySnapshots を使用する
  • 構成範囲: マルチプラットフォーム テスト分析に TestConfigurations を使用する

Analytics データ モデルを使用するためのベスト プラクティス

パフォーマンスの最適化

  1. 適切なエンティティを選択する: 状態レポートに現在の状態エンティティ (WorkItems) を使用し、傾向のスナップショット エンティティを使用する
  2. 早期フィルター: データ取得後ではなくエンティティ レベルでフィルターを適用する
  3. データ範囲の制限: 日付フィルターを使用して履歴データ クエリを制限する
  4. 適切な集計を使用する: 可能な場合は組み込みの集計関数を活用する

クエリのデザイン パターン

現在の状態クエリ

/WorkItems?$filter=State ne 'Closed'&$select=WorkItemId,Title,State

履歴傾向クエリ

/WorkItemSnapshot?$filter=DateSK ge 20241001&$select=WorkItemId,State,DateSK

リレーションシップ ナビゲーション

/WorkItems?$expand=Area($select=AreaPath),AssignedTo($select=UserName)

回避する一般的な落とし穴

  • 現在の状態にリビジョン エンティティを使用する: WorkItemRevisionsで十分な場合はWorkItemsを使用しないでください
  • リレーションシップを拡張しすぎ: 必要なナビゲーション プロパティのみを展開する
  • 不足しているフィルター: 常に大きなエンティティ セットをフィルター処理してパフォーマンスを向上させる
  • 複合エンティティの無視: 傾向分析に WorkItemSnapshot などの複合エンティティを使用する

バージョンに関する考慮事項

API のバージョンが異なると、さまざまな機能が提供されます。

  • v1.0: 基本的な作業追跡エンティティ
  • v2.0: プロセスと強化されたフィルター機能を追加しました
  • v3.0-preview: パイプラインとテスト エンティティを追加しました
  • v4.0-preview: 強化された複合エンティティと追加のパイプライン メトリック

レポートの要件とアクセスする必要があるエンティティに基づいて、適切なバージョンを選択します。