Модель данных для аналитики

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

Модель данных аналитики для Azure DevOps состоит из наборов сущностей, члены которых (сущности) содержат свойства, которые можно фильтровать, агрегировать и суммировать. Кроме того, они содержат свойства навигации, связанные с сущностями друг с другом, предоставляя доступ к другим свойствам для выбора, фильтрации и группировки.

Примечание.

Служба Аналитики автоматически включается и поддерживается в рабочей среде для всех служб в Azure DevOps Services. Интеграция Power BI и доступ к веб-каналу OData службы Аналитики общедоступны. Рекомендуется использовать поток данных OData для анализа и оставить отзыв.

Доступные данные зависят от версий. Последняя поддерживаемая версия API OData — v2.0, а последняя предварительная версия — v4.0-preview. Дополнительные сведения см. в разделе "Управление версиями API OData".

Примечание.

Служба Аналитики автоматически устанавливается и поддерживается в рабочей среде для всех новых коллекций проектов для Azure DevOps Server 2020 и более поздних версий. Интеграция Power BI и доступ к веб-каналу OData службы Аналитики общедоступны. Рекомендуется использовать поток данных OData для анализа и оставить отзыв. При обновлении с Azure DevOps Server 2019 можно установить службу Аналитики во время обновления.

Доступные данные зависят от версий. Последняя поддерживаемая версия API OData — v2.0, а последняя предварительная версия — v4.0-preview. Дополнительные сведения см. в разделе "Управление версиями API OData".

Общие сведения о модели данных Аналитики

Служба Аналитики предоставляет структурированный подход к доступу к данным Azure DevOps через конечные точки OData. Эта модель данных позволяет:

  • Запрос данных отслеживания работы: доступ к рабочим элементам, областям, итерациям и связанным метаданным
  • Анализ сведений о конвейере: запрос данных о сборке и выпуске конвейера
  • Отчет о результатах теста: доступ к данным о выполнении и планированию тестов
  • Создание настраиваемых отчетов: создание отчетов Power BI и других решений аналитики

Пространства имен схемы

Модель данных Аналитики работает с двумя пространствами имен схемы:

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

Эти пространства имен упорядочивают сущности и определяют их структуру, обеспечивая согласованность шаблонов доступа к данным в разных функциях Azure DevOps.

Наборы сущностей и типы сущностей

Типы сущностей называются структурированными типами с ключом. Они определяют именованные свойства и связи каждой сущности. Ключ EntityType формируется из подмножества примитивных свойств, например, WorkItemId, PipelineId, ReleasePipelineId, а также из других свойств типа сущности.

Наборы сущностей — это именованные коллекции сущностей. Например, это набор сущностей, WorkItems содержащий WorkItem сущности. Ключ сущности однозначно идентифицирует сущность в наборе сущностей. Если несколько наборов сущностей используют один и тот же тип сущности, то одно и то же сочетание значений ключей может отображаться в нескольких наборах сущностей и определяет разные сущности, по одному для каждого набора сущностей, где отображается это сочетание ключей. У каждой из этих сущностей есть другой идентификатор сущности. Наборы сущностей предоставляют точки входа в модель данных.

Наборы сущностей описаны в метаданных OData и зависят от проекта. Полный список наборов сущностей, типов сущностей и свойств можно просмотреть, запросить метаданные OData для проекта. Сведения о том, как можно узнать, как создать запросы OData для аналитики.

Составные сущности

Составные сущности поддерживают определенные сценарии. Система создает их из простых сущностей, часто требует больше вычислительных ресурсов для создания и может возвращать более крупные результирующие наборы. Чтобы обеспечить оптимальную производительность и избежать ненужных регулирования, убедитесь, что вы запрашиваете правильную сущность для вашего сценария.

Например, объединяется и WorkItemSnapshot такоеWorkItemRevisions, Dates что каждая дата имеет одну редакцию для каждого рабочего элемента. Это представление поддерживает запросы OData, ориентированные на данные тренда для отфильтрованного набора рабочих элементов. Однако эту составную сущность не следует использовать для запроса текущего состояния рабочих элементов. Вместо этого следует использовать набор сущностей WorkItems для создания более быстрого выполнения запроса.

Аналогичным образом некоторые сущности могут содержать все исторические значения, а другие могут содержать только текущие значения. WorkItemRevisions содержит все журналы рабочих элементов, которые не следует использовать в сценариях, где текущие значения являются интересующими.

Связи

Чтобы создать более сложные результаты запроса, можно объединить сущности с помощью связей. Вы можете использовать связи для расширения, фильтрации или сводки данных.

Некоторые свойства навигации приводят к одной сущности, а другие приводят к коллекции сущностей. На следующей схеме показаны сущности и их свойства навигации. Для ясности некоторые составные сущности и связи были опущены.

Схема отношений для модели данных Аналитики.

Общие сведения о связях сущностей

Модель данных Аналитики использует несколько типов связей:

  • Один ко многим: одна родительская сущность относится к нескольким дочерним сущностям (например, одна область ко многим рабочим элементам)
  • Многие к одному: несколько сущностей относятся к одной родительской сущности (например, многие WorkItems к одной области)
  • Один к одному: одна сущность относится ровно к одной другой сущности.
  • Многие ко многим: несколько сущностей связаны с несколькими другими сущностями (например, WorkItems и теги)

Ключи связи

Связи сущностей также представлены как внешние ключи, чтобы внешние инструменты могли присоединять сущности. Эти свойства имеют суффикс "SK" и являются целыми или целыми типами данных GUID. Свойства даты имеют соответствующие свойства ключа даты целочисленного числа со следующим форматом: ГГГГММДД.

Типы сущностей отслеживания работы и наборы сущностей

Следующие типы сущностей и наборы сущностей поддерживаются с указанными версиями API. Полный справочник см . в справочнике по метаданным отслеживания работы для Аналитики Boards Azure.

EntityType/EntitySet Описание Версия 1.0 Версия 2.0 Версия 3.0 (предварительная версия) версия 4.0-preview
Область/
Области
Путь к области рабочего элемента с свойствами для группировки и фильтрации по иерархии областей. ✔️ ✔️ ✔️ ✔️
Итерация/
Итераций
Пути итерации рабочего элемента с свойствами для группировки и фильтрации по иерархии итерации. ✔️ ✔️ ✔️ ✔️
BoardLocation/
BoardLocations
Расположения ячеек доски, как определено столбец доски, пловец и разделение, включают исторические параметры доски. Описание каждого поля доски см. в полях рабочего процесса и доски. ✔️ ✔️ ✔️ ✔️
CalendarDate/
Финики
Даты, используемые для фильтрации и группировки других сущностей с помощью связей. ✔️ ✔️ ✔️ ✔️
Проект/
Проекты
Все проекты, определенные для организации (облака) или коллекции проектов (локальная среда). ✔️ ✔️ ✔️ ✔️
Обработать/
Процессы
Сведения о невыполненной работе, используемые для расширения или фильтрации рабочих элементов и типов рабочих элементов. Пример, использующий процессы для фильтрации отчета, см . в примере отчета о отслеживании требований. ✔️ ✔️ ✔️
Тег/
Теги
Все теги рабочих элементов для каждого проекта. Пример, использующий теги для фильтрации отчета, см . в примере отчета о выпуске. ✔️ ✔️ ✔️ ✔️
Команда /
Рабочие группы
Все команды, определенные для проекта. Пример, использующий Teams для фильтрации отчета, см. в разделе "Добавление среза команды" в отчет Power BI. ✔️ ✔️ ✔️ ✔️
Пользователь/
Пользователи
Сведения о пользователе, которые используются для расширения или фильтрации различных свойств рабочего элемента, например "Назначено" и "Создано". ✔️ ✔️ ✔️ ✔️
WorkItemBoardSnapshot/
WorkItemBoardSnapshot
(Составной) Состояние каждого рабочего элемента на каждой дате календаря, включая расположение доски, используемое для создания отчетов о трендах. Пример отчета см . в примере отчета о накопительной схеме потоков (CF). ✔️ ✔️ ✔️ ✔️
WorkItemLink/
WorkItemLinks
Связи между рабочими элементами, например дочерними, родительскими и связанными. Включает только последнюю редакцию ссылок, журнал не содержит. Гиперссылки не включены. ✔️ ✔️ ✔️ ✔️
WorkItemRevision/
Изменения рабочих элементов
Все исторические редакции рабочих элементов, включая текущую редакцию. Не включает удаленные рабочие элементы. ✔️ ✔️ ✔️ ✔️
WorkItemSnapshot/
WorkItemSnapshot
(Составной) Состояние каждого рабочего элемента на каждой дате календаря, используемое для поддержки отчетов о трендах. Пример отчета см . в примере отчета об ошибках. ✔️ ✔️ ✔️ ✔️
Workitem/
WorkItems
Текущее состояние рабочих элементов. Используется для поддержки отчетов о состоянии. Пример отчета см. в разделе "Свертка значений дочерних рабочих элементов" для родительского примера отчета. ✔️ ✔️ ✔️ ✔️
ПолеТипаРабочегоЭлемента/
ТипРаботыТипПоля
Свойства рабочего элемента для каждого типа рабочего элемента и процесса. Используется для поддержки создания отчетов. ✔️ ✔️ ✔️ ✔️

Ключевые сущности учета работы для формирования отчетов

При создании отчетов рассмотрите эти основные наборы сущностей:

  • Текущие отчеты о состоянии: использование WorkItems для текущего состояния рабочего элемента
  • Исторические отчеты о трендах: использование WorkItemSnapshot для анализа тенденций с течением времени
  • Подробное отслеживание изменений: использование WorkItemRevisions для комплексной истории
  • Отчеты, относящиеся к доске: использование WorkItemBoardSnapshot для анализа доски Kanban

Типы сущностей конвейеров и наборы сущностей

Следующие типы сущностей и наборы сущностей поддерживаются в версии 3.0-preview или версии 4.0-preview Analytics. Полный справочник см. в справочнике по метаданным конвейера.

ТипСущности/НаборСущностей Описание Версия 3.0 (предварительная версия) версия 4.0-preview
Ветвь/
Ветви
Основные сведения о ветвях, используемых в тестах или конвейерах. Пример отчета см . в примере отчета о состоянии хода выполнения. ✔️ ✔️
ParallelPipelineJobsSnapshot/
ParallelPipelineJobsSnapshot
(Составной) Поддерживает понимание использования параллельных конвейеров. Дополнительные сведения о параллельных тестах конвейера см. в статье "Параллельное выполнение тестов" с помощью задачи "Тест Visual Studio". ✔️
Конвейер/
Конвейеры
Свойства конвейера. ✔️ ✔️
PipelineJob/
Задания конвейера
Отдельные результаты выполнения для определенного задания в рамках выполнения конвейера. ✔️ ✔️
PipelineRun/
PipelineRuns
Сведения о выполнении конвейеров. Пример отчета см . в примере отчета о скорости передачи конвейера. ✔️ ✔️
PipelineRunActivityResult/
PipelineRunActivityResults
Объединенный журнал всех этапов, шагов, заданий и задач в рамках определенного выполнения конвейера. Пример отчета см . в примере отчета о длительности задачи конвейера. ✔️ ✔️
PipelineTask/
PipelineTasks
Свойства задач, используемых в конвейере. ✔️ ✔️
TaskAgentPoolSizeSnapshot/
TaskAgentPoolSizeSnapshots
(Составной) Поддерживает понимание размера пула, заданий конвейера и параллелизма. График журнала для пулов агентов иллюстрирует, как можно использовать этот набор сущностей . ✔️
TaskAgentRequestSnapshot/
TaskAgentRequestSnapshots
(Составной) Предоставляет аналитические сведения о шаблонах запросов агента и использовании ресурсов с течением времени. ✔️

Шаблоны использования объектов конвейера.

Различные сущности потока данных служат определенным сценариям отчетности.

  • Отчеты об обзоре конвейера: используйте Pipelines и PipelineRuns для метрик высокого уровня
  • Анализ производительности. Использование PipelineRunActivityResults для подробного анализа времени
  • Использование ресурсов. Использование TaskAgentPoolSizeSnapshot ресурсов для планирования емкости
  • Анализ сбоев: использование PipelineJobs для отслеживания успешности и сбоя на уровне задания

Тестирование типов сущностей и наборов сущностей

Следующие типы сущностей и наборы сущностей поддерживаются в версии 3.0-preview или версии 4.0-preview Analytics. Полный справочник см. в справочнике по метаданным теста.

EntityType/EntitySet Описание Версия 3.0 (предварительная версия) версия 4.0-preview
TestConfiguration/
TestConfigurations
Сведения о конфигурации плана тестирования. Дополнительные сведения о настройке тестов см. в разделе "Тестирование различных конфигураций". ✔️ ✔️
TestResult/
TestResults
Отдельные результаты выполнения для определенного теста , связанного с TestRun. ✔️ ✔️
TestResultsDaily/
TestResultsDaily
Ежедневный агрегат моментальных снимков выполнения TestResult , сгруппированный по test (а не TestRun). Пример отчета см . в примере отчета с сводной тенденцией теста. ✔️ ✔️
TestRun/
TestRuns
Сведения о выполнении тестов в рамках конвейера с агрегированными данными о результатах тестирования. ✔️ ✔️
Тестирование/
Тесты
Свойства для тестового случая, например имя теста и владелец теста. Дополнительные сведения об определении тестовых случаев см. в статье "Создание тестовых случаев вручную". ✔️ ✔️
TestPoint/
TestPoints
Сведения о выполнении для точек тестирования. Точка тестирования — это уникальное сочетание тестового случая, набора тестов, конфигурации и тестировщика. Пример отчета см . в примере отчета о состоянии хода выполнения. ✔️ ✔️
TestPointHistorySnapshot/
TestPointHistorySnapshots
(Составной) Исторические данные выполнения для точек тестирования с течением времени. Пример отчета см . в примере отчета о тренде выполнения вручную. ✔️ ✔️
TestSuite/
TestSuites
Сведения о наборах тестов. Дополнительные сведения об определении наборов тестов см. в статье "Создание планов тестирования" и наборов тестов. ✔️ ✔️

Тестирование сценариев отчетов сущностей

Тестовые сущности поддерживают различные потребности в отчетах:

  • Отслеживание выполнения тестов: использование TestResults и TestRuns для получения подробных данных о выполнении
  • Метрики планирования тестов: используйте TestPoints и TestSuites для покрытия
  • Анализ трендов: использование TestResultsDaily и TestPointHistorySnapshots для исторических тенденций
  • Покрытие конфигурации: использование TestConfigurations для анализа многоплатформенного тестирования

Рекомендации по использованию модели данных Аналитики

Оптимизация производительности

  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: Основные элементы для отслеживания работы
  • версия 2.0. Добавлен процесс и расширенные возможности фильтрации
  • версия 3.0-preview: добавлены конвейеры и тестовые сущности
  • версия 4.0-preview: расширенные составные сущности и дополнительные метрики конвейера

Выберите соответствующую версию в зависимости от требований к отчетам и сущностей, к которым требуется доступ.