Getting started with chDB
在本指南中,我们将使用 chDB 的 Python 变体进行快速入门。
我们将首先查询存储在 S3 上的 JSON 文件,然后根据该 JSON 文件在 chDB 中创建一个表,并对数据进行一些查询。
我们还将看到如何让查询以不同格式返回数据,包括 Apache Arrow 和 Pandas,最后,我们将学习如何查询 Pandas DataFrames。
Setup
让我们首先创建一个虚拟环境:
现在我们将安装 chDB。
确保您有版本 2.0.3 或更高版本:
接下来,我们将安装 ipython:
我们将使用 ipython
来运行本指南中的命令,您可以通过运行以下命令启动:
我们还将使用 Pandas 和 Apache Arrow,因此让我们也安装这些库:
Querying a JSON file in S3
现在让我们看看如何查询存储在 S3 存储桶中的 JSON 文件。
YouTube dislikes dataset 包含超过 40 亿行 YouTube 视频的“喜欢”数据,数据截至 2021 年。
我们将使用该数据集中其中一个 JSON 文件。
导入 chdb:
我们可以写以下查询来描述其中一个 JSON 文件的结构:
我们还可以计算该文件中的行数:
此文件包含略超过 300,000 条记录。
chdb 目前尚不支持传入查询参数,但我们可以提取路径并通过 f-String 传入。
这样做对于在程序中定义的变量是可以的,但不要对用户提供的输入这样做,否则您的查询将面临 SQL 注入的风险。
Configuring the output format
默认输出格式为 CSV
,但我们可以通过 output_format
参数进行更改。
chDB 支持 ClickHouse 数据格式,以及 它自己的一些格式,包括 DataFrame
,其返回 Pandas DataFrame:
或者如果我们想要返回 Apache Arrow 表:
Creating a table from JSON file
接下来,让我们看看如何在 chDB 中创建一个表。
我们需要使用不同的 API 来做到这一点,所以让我们首先导入它:
接下来,我们将初始化一个会话。
如果我们希望会话持久化到磁盘,则需要提供一个目录名称。
如果我们留空,则数据库将在内存中,且在我们终止 Python 进程时将丢失。
接下来,我们将创建一个数据库:
现在我们可以根据 JSON 文件的架构使用 CREATE...EMPTY AS
技术创建一个 dislikes
表。
我们将使用 schema_inference_make_columns_nullable
设置,以免所有列类型都变为 Nullable
。
然后我们可以使用 DESCRIBE
子句检查架构:
接下来,让我们填充该表:
我们也可以使用 CREATE...AS
技术一步完成这两个步骤。
让我们使用该技术创建一个不同的表:
Querying a table
最后,让我们查询该表:
假设我们随后向 DataFrame 添加一个额外的列,以计算喜欢和不喜欢的比例。
我们可以写以下代码:
Querying a Pandas DataFrame
然后我们可以从 chDB 查询该 DataFrame:
您还可以在 Querying Pandas developer guide 中阅读有关查询 Pandas DataFrames 的更多信息。
Next steps
希望本指南已经为您提供了 chDB 的良好概述。
要了解有关如何使用它的更多信息,请参见以下开发者指南: