使用 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 的良好概述。 要了解如何使用它,请参阅以下开发者指南: