INTEGRITY Документация

GraphQL Analytics API

Stream предоставляет аналитику как по прямым трансляциям, так и по видео, загруженному в Stream, через описанный ниже GraphQL API, а также на странице Stream Аналитика странице дашборда Cloudflare.

Перейдите в Аналитика ↗

Stream Analytics API использует Cloudflare GraphQL Analytics API, который применяется в разных продуктах Cloudflare. Подробнее о GraphQL, лимитах запросов, фильтрах и сортировке см. в Документация Cloudflare GraphQL Analytics API.

Начало работы

  1. На панели управления Cloudflare перейдите к разделу Токены API аккаунта страницу.

    Перейдите в Токены API аккаунта ↗
  2. Создайте API-токен с помощью Account Analytics разрешение.

  3. Используйте любой 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 Минуты доставленного видео

Пример

Получение количества минут просмотра по странам

запрос GraphQL
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
				}
			}
		}
	}
}
ответ GraphQL
{
	"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:

GraphQL-запрос
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
				}
			}
		}
	}
}

Ниже описаны шаги для реализации пагинации:

  1. Выполните первый запрос без фильтра uid_gt, чтобы получить первую группу видео
  2. Возьмите последний UID видео из ответа на первый запрос
  3. Для следующего запроса укажите свойство uid_gt и присвойте ему значение последнего video UID: это вернёт следующую группу видео

Подробнее о пагинации см. в Документация Cloudflare GraphQL Analytics API.

Ограничения