← Cloudflare Stream / stream / getting-analytics
GraphQL Analytics API
Stream предоставляет аналитику как по прямым трансляциям, так и по видео, загруженному в Stream, через описанный ниже GraphQL API, а также на странице Stream Аналитика странице дашборда Cloudflare.
Перейдите в Аналитика ↗Stream Analytics API использует Cloudflare GraphQL Analytics API, который применяется в разных продуктах Cloudflare. Подробнее о GraphQL, лимитах запросов, фильтрах и сортировке см. в Документация Cloudflare GraphQL Analytics API.
Начало работы
-
На панели управления Cloudflare перейдите к разделу Токены API аккаунта страницу.
Перейдите в Токены API аккаунта ↗ -
Создайте API-токен с помощью Account Analytics разрешение.
-
Используйте любой GraphQL-клиент по вашему выбору, чтобы выполнить свой первый запрос. Postman ↗ включает встроенный клиент GraphQL, который поможет вам выполнить первый запрос и изучить схему GraphQL, чтобы понять доступные возможности.
См. разделы ниже, где перечислены доступные метрики, измерения, поля и примеры запросов.
Аналитика на стороне сервера
Stream собирает данные о количестве минут видео, доставленных зрителям, для всех прямых трансляций и видео по запросу, воспроизводимых через HLS или DASH, независимо от того, используете ли вы Stream Player.
Фильтры и измерения
| Поле | Описание |
|---|---|
date |
Дата |
datetime |
DateTime |
uid |
UID видео |
clientCountryName |
двухбуквенный код страны ISO 3166 alpha2 клиента, просмотревшего видео |
creator |
Creator ID связанные с отдельными видео, если они есть |
Некоторые фильтры, например date, можно использовать с операторами, например gt (больше) и lt (меньше), как показано в примере запроса ниже. Дополнительные варианты фильтрации описаны в фильтрация.
Метрики
| Node | Поле | Описание |
|---|---|---|
streamMinutesViewedAdaptiveGroups |
minutesViewed |
Минуты доставленного видео |
Пример
Получение количества минут просмотра по странам
query StreamGetMinutesExample($accountTag: string!, $start: Date, $end: Date) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
streamMinutesViewedAdaptiveGroups(
filter: { date_geq: $start, date_lt: $end }
orderBy: [sum_minutesViewed_DESC]
limit: 100
) {
sum {
minutesViewed
}
dimensions {
uid
clientCountryName
}
}
}
}
}{
"data": {
"viewer": {
"accounts": [
{
"streamMinutesViewedAdaptiveGroups": [
{
"dimensions": {
"clientCountryName": "US",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 2234
}
},
{
"dimensions": {
"clientCountryName": "CN",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 700
}
},
{
"dimensions": {
"clientCountryName": "IN",
"uid": "73c514082b154945a753d0011e9d7525"
},
"sum": {
"minutesViewed": 553
}
}
]
}
]
}
},
"errors": null
}Пагинация
GraphQL API поддерживает seek-пагинацию: с помощью фильтров можно указать последний UID видео, чтобы в ответе содержались данные только о видео, идущих после этого UID.
Запрос ниже вернёт данные для 2 видео, следующих за видео с UID 5646153f8dea17f44d542a42e76cfd:
query StreamPaginationExample(
$accountTag: string!
$start: Date
$end: Date
$uId: string
) {
viewer {
accounts(filter: { accountTag: $accountTag }) {
videoPlaybackEventsAdaptiveGroups(
filter: { date_geq: $start, date_lt: $end, uid_gt: $uId }
orderBy: [uid_ASC]
limit: 2
) {
count
sum {
timeViewedMinutes
}
dimensions {
uid
}
}
}
}
}Ниже описаны шаги для реализации пагинации:
- Выполните первый запрос без фильтра uid_gt, чтобы получить первую группу видео
- Возьмите последний UID видео из ответа на первый запрос
- Для следующего запроса укажите свойство uid_gt и присвойте ему значение последнего video UID: это вернёт следующую группу видео
Подробнее о пагинации см. в Документация Cloudflare GraphQL Analytics API.
Ограничения
- Максимальный интервал запроса в одном запросе составляет 31 день
- Максимальный срок хранения данных составляет 90 дней