数据集
数据探索
clickhouse-local 这一小型命令行工具,
它提供了完整的 ClickHouse 引擎,不过你也可以使用
ClickHouse Cloud、clickhouse-client,甚至 chDB。
运行以下查询,从存放数据的 S3 bucket 中查询数据:
Query
Response
ᴺᵁᴸᴸ,因此我们可以在
查询中添加一些额外条件,以返回更实用的数据:
Query
DESCRIBE 查看自动推断的数据 schema:
Query
Response
将数据加载到 ClickHouse
clickhouse-server
或 ClickHouse Cloud。
要创建该表,请运行以下命令:
Query
LowCardinality
数据类型,这会将这些数据类型的内部表示
改为字典编码。对字典编码的数据进行操作,可显著
提升许多应用中 SELECT 查询的性能。
此外,还会创建两个 UInt32 MATERIALIZED 列 mercator_x 和 mercator_y,
用于将经纬度坐标映射到 Web Mercator projection,
以便更轻松地将地图划分为多个瓦片:
longitude + 180将经度范围从 [-180, 180] 平移到 [0, 360]- 再除以 360,将其归一化为 0 到 1 之间的值
- 再乘以
0xFFFFFFFF(十六进制表示的 32 位无符号整数最大值) ,将这个归一化后的值缩放到 32 位整数的完整范围
latitude + 90将纬度范围从 [-90, 90] 平移到 [0, 180]- 除以 360 并乘以 pi(),将其转换为三角函数所需的弧度值
log(tan(...))这一部分是墨卡托投影公式的核心- 乘以
0xFFFFFFFF会将其缩放到完整的 32 位整数范围
MATERIALIZED 可确保 ClickHouse 在我们 INSERT 数据时为这些
列计算好值,而无需在 INSERT statement 中显式指定这些列 (因为它们并不属于
原始 data schema) 。
该表按 mortonEncode(mercator_x, mercator_y) 排序,这会生成
mercator_x、mercator_y 的 Z-order 空间填充曲线,从而显著
提升地理空间查询性能。这种 Z-order 曲线排序可确保数据
按空间邻近关系进行物理组织:
minmax 索引: