跳转到内容
搜索文档

GraphQL Analytics API

最后更新 查看 MarkdownAgent 设置

Stream 通过下方描述的 GraphQL API 以及 Cloudflare 仪表板的 Stream Analytics 页面提供直播视频和上传到 Stream 的视频的分析数据。

Go to Analytics ↗

Stream Analytics API 使用 Cloudflare GraphQL Analytics API,可用于许多 Cloudflare 产品。有关 GraphQL、速率限制、过滤和排序的更多信息,请参阅 Cloudflare GraphQL Analytics API 文档

快速入门

  1. 在 Cloudflare 仪表板中,前往 Account API tokens(账户 API 令牌) 页面。

    Go to Account API tokens ↗
  2. 生成具有 Account Analytics 权限的 API token。

  3. 使用您选择的 GraphQL 客户端发送第一个查询。Postman 内置 GraphQL 客户端,可帮助您运行第一个查询并 introspect GraphQL schema 以了解可用功能。

请参阅以下部分了解可用指标、维度、字段和示例查询。

服务端分析

Stream 收集通过 HLS 或 DASH 播放的所有直播和点播视频交付给观众的分钟数数据,无论您是否使用 Stream Player

过滤器和维度

字段 描述
date 日期
datetime 日期时间
uid 视频的 UID
clientCountryName 观看视频的客户端 ISO 3166 alpha2 国家代码
creator 与单个视频关联的 Creator ID(如有)

某些过滤器(如 date)可与 gt(大于)和 lt(小于)等运算符配合使用,如下面的示例查询所示。有关更多高级过滤选项,请参阅 过滤

指标

节点 字段 描述
streamMinutesViewedAdaptiveGroups minutesViewed 交付的视频分钟数

示例

按国家/地区获取观看分钟数

GraphQL requestgraphql
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 responsejson
{
	"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 分页:使用过滤器,您可以指定最后一个 video UID,使响应仅包含该 video UID 之后的视频数据。

以下查询将返回 video UID 5646153f8dea17f44d542a42e76cfd 之后 2 个视频的数据:

GraphQL querygraphql
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. 从第一个查询的响应中获取最后一个 video UID
  3. 调用下一个查询,指定 uid_gt 属性并将其设为最后一个 video UID。这将返回下一组视频

有关分页的更多信息,请参阅 Cloudflare GraphQL Analytics API 文档

限制

  • 单个查询的最大查询间隔为 31 天
  • 最大数据保留期为 90 天

这篇文档对您有帮助吗?