实时分析数据仓库CloudOSS
概述
前置条件
1
创建新表
纽约市出租车数据集包含数百万次出租车行程的详细信息,涵盖小费金额、过路费、支付类型等列。创建一个表来存储这些数据。
-
连接到 SQL 控制台:
- 对于 ClickHouse Cloud,从下拉列表中选择一个服务,然后在左侧导航菜单中选择 SQL 控制台。
- 对于自管理 ClickHouse,请连接到
https://_hostname_:8443/play的 SQL 控制台。有关详细信息,请咨询 ClickHouse 管理员。
-
在
default数据库中创建以下trips表:
2
添加数据集
现在您已创建表,接下来从 S3 中的 CSV 文件导入纽约市出租车数据。
-
以下命令会从 S3 中的两个文件
trips_1.tsv.gz和trips_2.tsv.gz向trips表插入约 2,000,000 行数据: -
等待
INSERT完成。下载 150 MB 数据可能需要一些时间。 -
插入完成后,验证是否成功:
此查询应返回 1,999,657 行。
3
分析数据
运行一些查询来分析数据。可以参考以下示例,也可以尝试编写自己的 SQL 查询。
-
计算平均小费金额:
预期输出
-
根据乘客人数计算平均费用:
预期输出
passenger_count的取值范围为 0 到 9: -
计算每个社区每天的上车次数:
预期输出
-
计算每次行程的时长 (以分钟为单位) ,然后按行程时长对结果分组:
预期输出
-
按一天中的小时统计各社区的上车次数:
预期输出
-
检索前往拉瓜迪亚机场或肯尼迪机场的行程:
预期输出
4
创建字典
字典是存储在内存中的键值对映射。详情请参阅 字典在你的 ClickHouse 服务中创建一个与某个表关联的字典。
该表和字典基于一个 CSV 文件,文件中的每一行对应纽约市的一个社区。这些社区会映射到纽约市五个行政区的名称 (Bronx、Brooklyn、Manhattan、Queens 和 Staten Island) ,以及 Newark Airport (EWR)。以下是所用 CSV 文件的部分内容,以表格形式呈现。文件中的
LocationID 列对应 trips 表中的 pickup_nyct2010_gid 和 dropoff_nyct2010_gid 列:- 运行以下 SQL 命令,创建名为
taxi_zone_dictionary的字典,并使用 S3 中 CSV 文件的数据填充该字典。该文件的 URL 为https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv。
将
LIFETIME 设置为 0 可禁用自动更新,避免对我们的 S3 bucket 产生不必要的流量。其他情况下,您可能需要采用不同的配置。有关详情,请参阅使用 LIFETIME 刷新字典数据。-
验证是否成功。以下命令应返回 265 行,每个社区对应一行:
-
使用
dictGet函数 (或其变体) 从字典中获取值。需要传入字典名称、要获取的值以及键 (本例中,键为taxi_zone_dictionary的LocationID列) 。 例如,以下查询返回LocationID为 132 (即 JFK 机场) 的Borough:JFK 位于皇后区。请注意,检索该值几乎不耗时: -
使用
dictHas函数检查字典中是否存在某个键。例如,以下查询返回1(在 ClickHouse 中表示 “true”) : -
以下查询返回 0,因为 4567 不是字典中
LocationID的值: -
使用
dictGet函数在查询中获取行政区名称。例如:此查询汇总了终点为 LaGuardia 或 JFK 机场的各行政区出租车行程数量。结果如下所示。请注意,其中有不少行程的上车社区未知:
5
执行 JOIN
编写一些查询,将
taxi_zone_dictionary 与 trips 表联接。-
首先执行一个简单的
JOIN,其作用与前面机场查询类似:返回结果与dictGet查询完全相同:
请注意,上述
JOIN 查询的输出与前一个使用 dictGetOrDefault 的查询相同 (只是未包含 Unknown 值) 。实际上,ClickHouse 在后台会针对 taxi_zone_dictionary 字典调用 dictGet 函数,但 JOIN 语法对 SQL 开发者更为熟悉。- 此查询返回小费金额最高的 1000 次行程,然后将每一行与字典进行内联接:
通常应避免在 ClickHouse 中频繁使用
SELECT *。只应检索实际需要的列。后续步骤
- ClickHouse 主索引简介:了解 ClickHouse 如何利用稀疏主索引在查询时高效定位相关数据。
- 集成外部数据源:了解数据源集成选项,包括文件、Kafka、PostgreSQL、数据管道等。
- 在 ClickHouse 中可视化数据:将您常用的 UI/BI 工具连接到 ClickHouse。
- SQL 参考:浏览 ClickHouse 中可用于转换、处理和分析数据的 SQL 函数。