在 10 分钟内通过 ClickHouse Cloud 查询端点给应用程序增加数据分析功能

图片

本文字数:10769;估计阅读时间:27 分钟

作者:Dale McDiarmid

本文在公众号【ClickHouseInc】首发

图片

引言

ClickHouse 的开发速度常常令新用户感到惊喜,最近的发布周中,我们推出了许多新功能,使得使用 ClickHouse 变得更加简单。作为一个热衷于在 ClickHouse 上构建分析应用程序的人,这些新功能中,我特别关注了 API 端点。在尝试这一功能后,我发现许多演示代码可以显著简化,同时新功能的开发也变得更快速。

API 端点(目前处于测试阶段)允许您创建一个安全的 HTTP 端点,它可以接收参数并使用这些参数填充和执行预定义的 SQL 查询。

API 端点不仅简化了接口,还实现了关注点的分离。这意味着,更新应用程序查询时无需修改或重新部署代码,团队可以轻松暴露分析功能,而无需编写 SQL 或直接与其他团队管理的 ClickHouse 数据库交互。

为了演示这一点,我们更新了演示应用程序 ClickPy,在几分钟内添加了新的 GitHub 分析功能。我们希望这些经验能够帮助您更轻松地在自己的 ClickHouse 应用程序中添加新功能。

为配合本博客,我们还附上了一套示例代码,包含了博客中提到的可视化功能的独立代码。

什么是 ClickPy?

今年早些时候,我们推出了 ClickPy——一个简单的实时仪表板,用户可以查看 Python 包的下载统计信息。这个应用程序基于 PyPI 数据,每发生一次 Python 包下载就会在 ClickHouse 中生成一行记录!每次您运行 pip install,ClickHouse 就会收到一行数据!

图片

目前,这个数据集已经超过了一万亿行,且每天增加约 12 亿行,完美展示了如何利用 ClickHouse 进行大数据分析。

ClickPy 应用程序本身相对简单,使用了 React、NextJs 和 Apache ECharts。我们在开源代码库中详细记录了它的秘诀:通过使用 ClickHouse 的物化视图在插入时计算聚合,确保查询能在毫秒级内响应,从而提供快速且流畅的用户体验。

添加新数据集

许多 Python 包是开源的,通常会有自己的 GitHub 仓库。PyPi 数据通过项目表中的 homepage 和 project_urls 列捕捉这些信息,例如 ClickHouse 的官方 Python 客户端 clickhouse-connect 和 boto3 库。


SELECT
  name,
  argMax(home_page, upload_time) AS home_page,
  argMax(project_urls, upload_time) AS project_urls
FROM pypi.projects
WHERE name IN ('clickhouse-connect', 'boto3')
GROUP BY name
FORMAT Vertical

Row 1:
──────
name:       boto3
home_page:  https://github.com/boto/boto3
project_urls: ['Documentation, https://boto3.amazonaws.com/v1/documentation/api/latest/index.html','Source, https://github.com/boto/boto3']

Row 2:
──────
name:       clickhouse-connect
home_page:  https://github.com/ClickHouse/clickhouse-connect
project_urls: []

2 rows in set. Elapsed: 0.018 sec. Processed 27.48 thousand rows, 2.94 MB (1.57 million rows/s., 167.52 MB/s.)
Peak memory usage: 26.51 MiB.

用户常用的另一个数据集是 GitHub 事件,它捕获了 GitHub 上的每个星标、问题、拉取请求、评论和分叉事件,截至 2024 年 6 月,约有 77.5 亿个事件。该数据集由 GitHub 提供,并每小时更新,成为我们 PyPi 数据集的完美补充。


CREATE TABLE github.github_events
(
  `file_time` DateTime,
  `event_type` Enum8('CommitCommentEvent' = 1, 'CreateEvent' = 2, 'DeleteEvent' = 3, 'ForkEvent' = 4, 'GollumEvent' = 5, 'IssueCommentEvent' = 6, 'IssuesEvent' = 7, 'MemberEvent' = 8, 'PublicEvent' = 9, 'PullRequestEvent' = 10, 'PullRequestReviewCommentEvent' = 1
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值