如何在Power BI中获取YouTube频道分析数据并搭建仪表盘
在Power BI中获取YouTube频道分析数据的完整方案
1. 准备Google API凭证
- 登录Google Cloud Console,创建新项目
- 搜索并启用 YouTube Data API v3 和 YouTube Analytics API(两个都需要:前者获取视频基础信息,后者获取观看时长等核心分析数据)
- 创建凭证:
- 对于公开数据(如视频播放量、点赞数),可创建「API密钥」
- 对于私有分析数据(如观看时长、用户画像),创建「OAuth 2.0客户端ID」,应用类型选「桌面应用」,下载JSON凭证备用
2. 获取视频基础数据(播放量、点赞数)
打开Power BI Desktop,通过「获取数据」>「空白查询」进入Power Query编辑器,创建自定义函数拉取视频列表及基础统计:
let GetVideoStats = (channelHandle as text, apiKey as text) as table => let // 通过频道Handle获取频道ID(已知频道ID可跳过此段) channelUrl = "https://www.googleapis.com/youtube/v3/channels?part=id&forHandle=" & channelHandle & "&key=" & apiKey, channelResp = Web.Contents(channelUrl), channelJson = Json.Document(channelResp), channelID = channelJson[items]{0}[id], // 获取频道下的视频ID列表(单次最多50条) videoListUrl = "https://www.googleapis.com/youtube/v3/search?channelId=" & channelID & "&part=id&maxResults=50&type=video&key=" & apiKey, videoListResp = Web.Contents(videoListUrl), videoListJson = Json.Document(videoListResp), videoIDs = List.Transform(videoListJson[items], each _[id][videoId]), videoIDStr = Text.Combine(videoIDs, ","), // 拉取视频基础统计和标题信息 statsUrl = "https://www.googleapis.com/youtube/v3/videos?part=statistics,snippet&id=" & videoIDStr & "&key=" & apiKey, statsResp = Web.Contents(statsUrl), statsJson = Json.Document(statsResp), rawTable = Table.FromRecords(statsJson[items]), // 展开统计字段 expandedStats = Table.ExpandRecordColumn(rawTable, "statistics", {"viewCount", "likeCount", "commentCount"}, {"播放量", "点赞数", "评论数"}), // 展开视频基本信息 expandedSnippet = Table.ExpandRecordColumn(expandedStats, "snippet", {"title", "publishedAt", "videoId"}, {"视频标题", "发布时间", "视频ID"}), // 转换数据类型 convertedTypes = Table.TransformColumnTypes(expandedSnippet, { {"播放量", Int64.Type}, {"点赞数", Int64.Type}, {"评论数", Int64.Type}, {"发布时间", DateTime.Type} }) in convertedTypes in GetVideoStats
调用函数时,传入你的频道Handle(如@yourchannel)和API密钥即可获取数据。
3. 获取观看时长等核心分析数据
YouTube Analytics API需要OAuth授权(仅允许获取你有权限的频道数据),在Power Query中创建如下函数:
let GetWatchTimeData = (channelID as text, startDate as text, endDate as text) as table => let url = "https://youtubeanalytics.googleapis.com/v2/reports?ids=channel%3D" & channelID & "&startDate=" & startDate & "&endDate=" & endDate & "&metrics=watchTimeMinutes,views&dimensions=video", // 首次调用会弹出OAuth授权窗口,登录你的Google账号即可 response = Web.Contents(url), json = Json.Document(response), // 提取表头和数据行 headers = List.Transform(json[columnHeaders], each _[name]), dataRows = Table.FromRows(json[rows], headers), // 重命名列并转换类型 cleanedTable = Table.RenameColumns(dataRows, { ("watchTimeMinutes", "观看时长(分钟)"), ("views", "播放量"), ("video", "视频ID") }), convertedTypes = Table.TransformColumnTypes(cleanedTable, { {"观看时长(分钟)", Number.Type}, {"播放量", Int64.Type} }) in cleanedTable in GetWatchTimeData
调用时传入频道ID、起始日期(格式YYYY-MM-DD)和结束日期即可。
4. 合并数据并处理
- 将「视频基础数据表」和「观看时长数据表」通过「视频ID」列做合并查询,得到包含所有字段的完整数据集
- 处理分页:如果频道视频超过50条,需在视频列表拉取逻辑中添加循环,利用
nextPageToken获取全部视频
5. 搭建分析仪表盘
基于整理好的数据集,可快速搭建以下可视化组件:
- 卡片图:展示总播放量、总观看时长、总点赞数等核心指标
- 折线图:展示播放量/观看时长的每日/每周趋势
- 柱状图:Top10视频的播放量、点赞数对比
- 矩阵表:所有视频的详细数据(标题、发布时间、播放量、观看时长等)
- 饼图:各视频播放量占比
注意事项
- API配额限制:YouTube Data API v3每日配额为10000单位,Analytics API为1000单位,避免一次性拉取过多历史数据
- 数据更新:可设置Power BI的自动刷新(需在云端配置OAuth凭证)
- 权限验证:确保登录的Google账号拥有目标YouTube频道的管理权限
内容的提问来源于stack exchange,提问作者Syed Rehan Ali
相关产品推荐
相关产品推荐

