Copilot API метрик использования не публикуют единого предварительно агрегированного командного отчёта. Метрики на уровне команд строятся путём объединения отчёта пользовательских команд (в котором указаны членства каждого пользователя в команде за определённый день) с отчётом по метрикам использования на пользователя (который содержит активность Copilot каждого пользователя за этот день). Агрегирование объединённых строк даёт team_id метрики на уровне команды.
Один и тот же рецепт объединения поддерживает любой командный срез: по (team, day), за (team, day, language), каждый (team, day, IDE), над вращающимися окнами и так далее.
Доставка отчётов
Два отчёта, упомянутые в этом руководстве, скачиваются в два шага. Сначала позвоните в конечную точку REST на нужный вам день. Конечная точка возвращает подписанные URL с ограничением времени, с которых можно скачать файлы отчёта. Затем скачайте JSON-файлы, на которые указывают эти URL. Строки команды пользователей и для каждого пользователя находятся в этих JSON-файлах; они не возвращаются в строке конечной точкой REST.
| Отчет | Endpoint |
|---|---|
| Пользовательские команды организации | GET /orgs/{org}/copilot/metrics/reports/user-teams-1-day?day=YYYY-MM-DD |
| Корпоративные пользовательские команды | GET /enterprises/{enterprise}/copilot/metrics/reports/user-teams-1-day?day=YYYY-MM-DD |
| Показатели использования организации на пользователя | GET /orgs/{org}/copilot/metrics/reports/users-1-day?day=YYYY-MM-DD |
| Метрики использования корпоративного предприятия на пользователя | GET /enterprises/{enterprise}/copilot/metrics/reports/users-1-day?day=YYYY-MM-DD |
Каждая конечная точка возвращает ответ в виде:
{
"download_links": [
"https://example.com/copilot-user-teams-report-1.json"
],
"report_day": "2026-05-07"
}
Скачайте файл по каждому URL в окне истечения срока действия ссылки, чтобы получить строки для этого отчёта.
Полные схемы запросов и ответов, требования к аутентификации и связанные конечные точки см. Конечные точки REST API для метрик использования Copilot. Для обзора того, как определяются отдельные поля метрик использования, см. Данные, доступные в метриках использования Copilot.
В течение нескольких дней звоните на ежедневные конечные точки один раз в день и агрегируйте ежедневные результаты. См. ниже отчёты команд по строительству с скользящим окном .
Задействованные отчёты
Метрики на уровне команд формируются за счёт объединения двух семейств отчетов: отчёты пользовательских команд по членству в команде и отчёты по метрикам использования на пользователя для активности.
Отчёты пользовательских команд
В этих отчётах указаны членства каждого пользователя в команде за определённый день.
| Отчет | Объем | Ключевые поля |
|---|---|---|
organization_user_teams_1_day | Членство в организационной команде на день. Включает только организационные команды. | |
user_id, , user_login``organization_id``day``team_id,slug | ||
enterprise_user_teams_1_day | Членство в команде Enterprise на сегодня. Включает как корпоративные, так и бизнес-команды. | |
user_id, , user_login``enterprise_id``day``team_id,slug |
Пользователь, входящий в несколько команд в один день, появляется в нескольких строках — по одной строке на пару (user, team) .
Внимание
Команды с менее чем 5 сидящими Copilot пользователями исключаются из отчётов пользовательских команд.
Последствия:
- Команда с менее чем 5 сидящими пользователями в определённый день не появится в отчёте команд пользователей этого дня, даже если у её членов есть Copilot активность. Активность всё ещё присутствует в отчёте по метрикам использования пользователя, но в результате join нет командной строки.
- Команда, которая пересекает порог в течение нескольких дней, присутствует в одни дни и отсутствует в другие. Только дни, когда команда превысила этот порог, влияют на итоговые очки.
- Если суммировать ряды команд вместе, чтобы сравнить с общей суммой предприятия или организации, сумма будет меньше, чем сумма сущности. Недостаток — это активность пользователей, которые принадлежат только командам ниже порога — у них нет рядки команд в результате присоединения, поэтому их активность не отображается ни в одном командном агрегате.
Отчёты по метрикам использования на пользователя
Эти отчёты содержат активность Copilot каждого пользователя за определённый день.
| Отчет | Объем | Ключевые поля |
|---|---|---|
organization_users_1_day | Одна строка с (user_id, day, organization_id)Copilot активностью пользователя в этой организации за день. | |
user_id, day, organization_id``enterprise_id, , счётчики активности, массивы разбоя | ||
users_1_day | Одна строка с (user_id, day, enterprise_id) активностью пользователя Copilot в этом предприятии за день. | |
user_id, day, enterprise_id, счётчики активности, массивы разбоя |
Полный список полей, доступных в этих отчетах, см. Данные, доступные в метриках использования Copilot.
Предупреждение
Не объединяйте текущие 28-дневные отчеты на пользователя (users_28_day, organization_users_28_day) с ежедневным отчетом команд пользователей. Отчёт пользовательских команд отражает членство в команде в один день, поэтому объединение 28 дней активности к однодневному снимку членства приписывает все 28 дней активности тем командам, к которым принадлежит пользователь в день присоединения. Это ошибочно приписывает активность неправильным командам, когда состав команд менялся в течение окна. Всегда объединяйте ежедневную активность с командами пользователей, а затем агрегируйте в нужное окно.
Отчёты на уровне сущности
Отчёты на уровне организации (enterprise_28_day, organization_28_day, enterprise_1_day``organization_1_day, ) — это заранее агрегированные итоги для всего предприятия или организации. Они не содержат user_id или team_id, и не могут быть объединены с отчётом пользовательских команд для создания разбивки по командам. Используйте их напрямую, когда вам нужны корпоративные или корпоративные итоги; Для итоговых показателей на уровне команды используйте присоединение Daily User-Teams + ежедневные метрики на пользователя, описанное ниже.
Пример
Этот минимальный сквозной пример даёт один день метрик организации и команды. JSON, показанный ниже для каждого входного отчёта, представляет собой образец строк, которые вы найдёте в файле, загруженном из одного из этих отчётов download_links (см. раздел «Получение отчётов » выше).
Два пользователя имеют Copilot активность на 07.05.2026 в 999организации:
- Алиса (
user_id=1001) принадлежит двум командам в тот день:frontend(team_id=42) иbackend(team_id=43). - Боб (
user_id=1002) принадлежитfrontendтолько к (team_id=42)
Ввод: organization_user_teams_1_day
{"user_id": 1001, "user_login": "alice", "day": "2026-05-07", "organization_id": "999", "team_id": 42, "slug": "frontend"}
{"user_id": 1001, "user_login": "alice", "day": "2026-05-07", "organization_id": "999", "team_id": 43, "slug": "backend"}
{"user_id": 1002, "user_login": "bob", "day": "2026-05-07", "organization_id": "999", "team_id": 42, "slug": "frontend"}
Алиса появляется дважды — по одному ряду в каждой команде, к которой она принадлежит.
Ввод: organization_users_1_day
{"user_id": 1001, "user_login": "alice", "day": "2026-05-07", "organization_id": "999", "enterprise_id": "13213",
"user_initiated_interaction_count": 50, "code_generation_activity_count": 40, "code_acceptance_activity_count": 12,
"loc_suggested_to_add_sum": 200, "loc_added_sum": 88, "used_chat": true, "used_agent": true, ...}
{"user_id": 1002, "user_login": "bob", "day": "2026-05-07", "organization_id": "999", "enterprise_id": "13213",
"user_initiated_interaction_count": 30, "code_generation_activity_count": 25, "code_acceptance_activity_count": 7,
"loc_suggested_to_add_sum": 80, "loc_added_sum": 24, "used_chat": true, "used_agent": false, ...}
Один ряд на (user, day, organization). Итоги активности за день суммируются по всем поверхностям.
Объединённый и агрегированный результат
Соедините два отчёта внутрь (user_id, day, organization_id), затем группируем по team_id и агрегируем. Столбец active_users ниже — это агрегационный результат (COUNT(DISTINCT user_id)), а не поле в отчёте для каждого пользователя; оставшиеся числовые столбцы — это суммы соответствующих полей отчёта.
| team_id | слизняк | active_users | code_acceptance_activity_count | loc_added_sum |
|---|---|---|---|---|
| 42 | frontend | 2 | 19 | 112 |
| 43 | серверная часть | 1 | 12 | 88 |
Два ряда в день команды, по одному на команду. В ряде frontend собраны данные как Алисы, так и Боба. В backend ряду содержится только активность Алисы.
Деятельность Алисы способствует развитию обеих команд. 12 и 88 из её ряда засчитываются в frontend и снова в backend. Это соответствует замыслу метрик на уровне команд — каждая команда видит активность своих участников — но суммирование двух рядов команд в одну организацию даёт двойной подсчёт, Алиса. Для итоговых данных организации отправляйте organization_users_1_day запросы напрямую без присоединения пользовательских команд.
Как построить метрики на уровне команды
Для любого среза командного уровня действуют те же четыре шага.
-
Выберите пару отчётов.
- Для организационных команд сочетайте
organization_user_teams_1_dayсorganization_users_1_day. Идентификатор общей сущности —organization_id. - Для корпоративных и бизнес-команд сочетайте
enterprise_user_teams_1_dayсusers_1_day. Идентификатор общей сущности —enterprise_id.
- Для организационных команд сочетайте
-
Внутреннее соединение двух отчётов о
(user_id, day, entity_id). Все три ключа должны совпадать. Присоединение осуществляется по принципу «один к многим» на стороне команды — пользователь в нескольких командах совпадает с несколькими рядами пользовательских команд. -
Фильтруйте по
dayДо того дня, который ты захочешь. Оба отчёта имеют одинаковуюdayценность. -
Группа по
team_id(иslugдля отображённого имени команды) и агрегат. Использование:COUNT(DISTINCT user_id)для различных пользователей, таких как активные пользователи.SUM(...)для счетчиков объёмов, такихcode_generation_activity_countкак ,loc_added_sum, иuser_initiated_interaction_count.
Соединение является внутренним объединением: команда появляется в результате за определённый день только если хотя бы один из её участников был активен в тот день. Чтобы указать команды, у которых не было активности в день, используйте left-join из отчета пользовательских команд и считайте нулевые счётчики нулем.
Монтаж по языку, IDE, функциям или модели
Разбивки по измерениям находятся в полях массива на каждой строке пользователя (totals_by_ide, totals_by_language_feature, totals_by_language_model, totals_by_model_feature). Чтобы сгруппировать по измерению, разверните соответствующий массив в составе объединения, добавьте столбцы размерности в группировку и агрегируйте счётчики по элементам, охватённые по этому измерению.
language и ide находятся в отдельных массивах, поэтому кросс-вкладка на уровне (language × ide) команды принимает два запроса, объединённых в вашем приложении.
Отчёты команды с скользящим окном
Для создания отчёта команды с скользящим окном (например, 28-дневного сводного отчета):
- Звоните на ежедневные конечные точки каждого дня в окне.
- Присоединяйтесь к отчёту по метрикам использования пользователя за каждый день (
organization_users_1_dayилиusers_1_day) с отчётом команд пользователей того же дняorganization_user_teams_1_day(илиenterprise_user_teams_1_day) на(user_id, day, entity_id). - Отфильтруйте
dayк окну и выбросьтеdayиз группировки.
Счётчики объёмов добавляются по дням; Подведите итоги над окном. Количество отдельных пользователей должно оцениваться по COUNT(DISTINCT user_id) объединённым строкам полного окна — их нельзя суммировать по дневным подсчётам.
Ежедневное присоединение — это то, что гарантирует, что активность каждого дня приписывается командам, в которых был пользователь в тот день. Без него изменения в составе команды в окне тихо ошибочно приписывают активность неправильным командам.
Ограничения и оговорки
- Пользователи нескольких команд вносят вклад в каждую команду, к которой они принадлежат. Будьте осторожны при объединении рядов команд обратно в организационный или корпоративный итог — многокомандные пользователи будут считаться более одного раза. Используйте отчёт для пользователя напрямую (без присоединения пользовательских команд) для итогов организации или предприятия.
- Команды с подпороговым уровнем отсутствуют в отчёте пользовательских команд. Команды с менее чем 5 сидящими Copilot пользователями в определённый день исключаются, поэтому их активность не отображается в результатах на уровне команды, даже если активность остаётся в отчёте для каждого пользователя.
- Разные числа пользователей нельзя суммировать по дням. При сводке в течение многодневного окна оценивайте
COUNT(DISTINCT user_id)по объединённым строкам за всё окно, а не суммируйте ежедневные счёты. - Отслеживается ещё больше поверхностей объектов. Счетчики объёмов (
code_generation_activity_count,code_acceptance_activity_countиloc_*счётчики) агрегируют активность по нескольким Copilot поверхностям — встроенные IDE-завершения, действия в чат-панели и (для считателей принятых строк) агент Copilot редактирования. Для подробностей покрытия поверхности по стойке см. Данные, доступные в метриках использования Copilot. Если вы ранее использовали похожие метрики с поверхности, которая учитывала только встроенные IDE-завершения, ожидайте более высокие значения в этих счётчиках и пересмотре базы, а не дифференциации по отрезу. - Воспользуйтесь новыми измерениями. Для каждой строки пользователя доступны разбивки по IDE, по функциям, по
(language, feature)``(language, model)параметрам и по(model, feature)пользователям, что позволяет отчёты на уровне команд, которые ранее не поддерживали поверхности метрик команды.
Дальнейшие действия
- Полная схема и ссылка на поле для отчёта по метрикам использования пользователя см. Данные, доступные в метриках использования Copilot.
- Например, полезные нагрузки JSON из конечных точек метрик использования см. Пример схемы для метрик использования Copilot.
- Для получения рекомендаций по согласованию метрик на панели управления, API и экспорте см. Согласование метрик использования Copilot на панелях мониторинга, API и в отчетах.