英国房产价格数据集
该数据集包含英格兰和威尔士房地产的成交价格信息。该数据自 1995 年起提供,未压缩形式的数据集大小约为 4 GiB(在 ClickHouse 中仅约为 278 MiB)。
- 数据来源: https://www.gov.uk/government/statistical-data-sets/price-paid-data-downloads
- 字段说明: https://www.gov.uk/guidance/about-the-price-paid-data
- 包含 HM Land Registry 数据 © Crown copyright and database right 2021。本数据依据 Open Government Licence v3.0 授权许可使用。
创建数据表
预处理并插入数据
我们将使用 url 函数将数据流式写入 ClickHouse。首先需要对部分传入数据进行预处理,包括:
- 将
postcode拆分为两个不同的列——postcode1和postcode2,这样在存储和查询方面更高效 - 将
time字段转换为日期类型,因为它只包含 00:00 的时间 - 忽略 UUID 字段,因为我们不需要它进行分析
- 使用 transform 函数将
type和duration转换为更易读的Enum字段 - 将
is_new字段从单字符字符串(Y/N)转换为取值为 0 或 1 的 UInt8 字段 - 删除最后两列,因为它们的值都相同(均为 0)
url 函数会将数据从 Web 服务器流式传输到 ClickHouse 表中。以下命令会向 uk_price_paid 表中插入 500 万行数据:
等待数据插入完成;根据网络速度,这可能需要一到两分钟。
验证数据
通过查看插入了多少行来验证是否生效:
在运行此查询时,数据集包含 27,450,499 行。我们来看一下该表在 ClickHouse 中占用的存储空间:
请注意,这张表的大小只有 221.43 MiB!
运行一些查询
我们来运行一些查询来分析数据:
查询 1:各年份的平均价格
查询 2:伦敦每年的平均价格
2020 年房价发生了点变化!不过这大概不算什么意外……
查询 3:最昂贵的街区
使用投影(Projections)加速查询
我们可以通过使用投影(Projections)来加速这些查询。参见《投影(Projections)》以查看针对该数据集的示例。
在 Playground 中测试
该数据集也可在 在线 Playground 中使用。