跳转到主要内容
2021 年 11 月,YouTube 移除了所有视频公开显示的 点踩 数。虽然创作者仍然可以看到点踩数量,但观众只能看到某个视频获得了多少 点赞
该数据集包含超过 45.5 亿条记录,因此除非你的资源能够承载如此规模的数据量,否则请谨慎直接复制粘贴下面的命令。下面的命令是在 ClickHouse Cloud生产环境实例上执行的。
这些数据采用 JSON 格式,可从 archive.org 下载。我们也已将相同的数据提供在 S3 上,以便更高效地将其下载到 ClickHouse Cloud 实例中。 以下是在 ClickHouse Cloud 中创建表并插入数据的步骤。
下面的步骤同样也适用于本地安装的 ClickHouse。唯一需要修改的是使用 s3 函数而不是 s3cluster (除非你已经配置了集群——在这种情况下,将 default 改为你的集群名称) 。

分步指南

1

数据探索

让我们看看这些数据的样子。s3cluster 表函数会返回一个表,因此我们可以对结果执行 DESCRIBE
ClickHouse 会从 JSON 文件中推断出以下 schema:
2

创建表

根据推断出的 schema,我们对数据类型进行了整理,并添加了主键。 定义如下表:
3

插入数据

以下命令会将 S3 文件中的记录流式写入 youtube 表。
这会插入大量数据——46.5 亿行。如果你不需要整个数据集,只需添加一个 LIMIT 子句,并指定所需的行数。
关于我们的 INSERT 命令,有几点说明:
  • 当传入的日期字段格式可能不正确时,parseDateTimeBestEffortUSOrZero 函数会很有用。如果 fetch_date 无法被正确解析,就会被设为 0
  • upload_date 列中既有有效日期,也有像 “4 hours ago” 这样的字符串——这显然不是有效日期。我们决定将原始值存储在 upload_date_str 中,并尝试用 toDate(parseDateTimeBestEffortUSOrZero(upload_date::String)) 对其进行解析。如果解析失败,结果就会是 0
  • 我们使用 ifNull 来避免表中出现 NULL 值。如果传入的值是 NULLifNull 函数会将其设为空字符串
4

统计行数

在 ClickHouse Cloud 的 SQL 控制台中打开一个新标签页 (或新开一个 clickhouse-client 窗口) ,观察计数持续增加。 插入 45.6 亿行需要一些时间,具体取决于服务器资源。 (如果不调整任何设置,大约需要 4.5 小时。)
5

探索数据

数据插入后,不妨统计一下你喜欢的视频或频道被点踩的次数。让我们看看 ClickHouse 上传了多少个视频:
上面的查询之所以运行得这么快,是因为我们将 uploader 选作主键的第一列,因此只需处理 23.7 万行。
下面来看看 ClickHouse 视频的点赞和点踩情况:
响应如下:
以下是对 titledescription 字段中包含 ClickHouse 的视频进行的搜索:
该查询需要处理每一行数据,还要解析两列 String。即便如此,性能仍然相当不错,达到 415 万行/秒:
结果如下:

常见问题

如果有人关闭评论功能,是否会降低人们实际去点“点赞”或“点踩”的可能性?

关闭评论后,人们是否更倾向于通过点赞或点踩来表达自己对视频的感受?
启用评论似乎与更高的互动率有关。

视频数量随时间如何变化——有哪些值得注意的事件?

新冠疫情前后,上传者数量明显激增

字幕是从什么时候开始逐渐增多的

随着语音识别技术的进步,给视频制作字幕比以往任何时候都更容易。YouTube 在 2009 年底推出了自动字幕功能——字幕数量的增长是从那时开始的吗?
数据显示,2009 年出现了一个峰值。显然,当时 YouTube 正在取消其社区字幕功能,该功能允许用户为他人的视频上传字幕。 这促成了一场非常成功的倡议活动,推动创作者为自己的视频添加字幕,方便听障和失聪观众观看。

主要上传者随时间变化

随着观看量增加,点赞率如何变化?

观看量是如何分布的?

最后修改于 2026年7月1日