跳到主要内容
跳到主要内容

使用 chDB 开始

在本指南中,我们将快速上手 chDB 的 Python 版本。 我们将首先查询存储在 S3 上的 JSON 文件,然后根据 JSON 文件在 chDB 中创建一个表,并对数据执行一些查询。 我们还将看到如何让查询以不同格式返回数据,包括 Apache Arrow 和 Pandas,最后我们将学习如何查询 Pandas DataFrames。

设置

让我们首先创建一个虚拟环境:

现在我们将安装 chDB。 确保您安装的版本为 2.0.3 或更高:

现在我们将安装 ipython

我们将使用 ipython 来运行指南中的命令,您可以通过运行以下命令来启动它:

在本指南中,我们还将使用 Pandas 和 Apache Arrow,所以让我们也安装这些库:

查询 S3 中的 JSON 文件

现在让我们看看如何查询存储在 S3 存储桶中的 JSON 文件。 YouTube 不喜欢的数据集 包含了超过 40 亿行关于 YouTube 视频的“不喜欢”记录(截至2021年)。 我们将使用该数据集中的一个 JSON 文件。

导入 chdb:

我们可以写以下查询来描述其中一个 JSON 文件的结构:

我们还可以计算该文件中的行数:

该文件包含稍超过 300,000 条记录。

chdb 还不支持传入查询参数,但我们可以提取路径并通过 f-String 传入。

危险

这样做的变量定义在程序中是可以的,但不要使用用户提供的输入,否则您的查询可能会面临 SQL 注入攻击。

配置输出格式

默认的输出格式为 CSV,但我们可以通过 output_format 参数更改它。 chDB 支持 ClickHouse 数据格式,以及 它自己的一些格式,包括 DataFrame,它返回一个 Pandas DataFrame:

或者如果我们想要返回 Apache Arrow 表:

从 JSON 文件创建表

接下来,让我们看看如何在 chDB 中创建一个表。 我们需要使用不同的 API 来完成这一点,所以让我们先导入它:

接下来,我们将初始化一个会话。 如果我们希望会话持久化到磁盘,我们需要提供一个目录名称。 如果我们留空,则数据库将在内存中,Python 进程结束后会丢失。

接下来,我们将创建一个数据库:

现在我们可以创建一个基于 JSON 文件模式的 dislikes 表,使用 CREATE...EMPTY AS 技术。 我们将使用 schema_inference_make_columns_nullable 设置,以便列类型不是全部 Nullable

然后我们可以使用 DESCRIBE 子句检查模式:

接下来,让我们填充该表:

我们也可以一次完成这两个步骤,使用 CREATE...AS 技术。 让我们使用该技术创建一个不同的表:

查询表

最后,让我们查询该表:

假设我们接着添加一个额外的列到 DataFrame 中以计算点赞与点踩的比率。 我们可以写如下代码:

查询 Pandas DataFrame

然后我们可以从 chDB 查询该 DataFrame:

您还可以阅读更多关于查询 Pandas DataFrames 的内容,可以参考 查询 Pandas 开发者指南

下一步

希望本指南能为您提供有关 chDB 的良好概述。 要了解如何使用它,请参阅以下开发者指南: