为什么选择 DuckDB 处理 JSON?
DuckDB 内置强大的 JSON 处理能力,比传统 Python 方案快 60 倍以上。
基础 JSON 查询
-- 查询 JSON 字段
SELECT
data->>'name' AS name,
data->>'email' AS email
FROM json_table;
-- 嵌套 JSON 查询
SELECT
data->'address'->>'city' AS city,
data->'address'->>'zip' AS zip
FROM json_table;
UNNEST:数组展开神器
-- 将 JSON 数组展开为多行
SELECT
data->>'id' AS id,
item->>'name' AS item_name
FROM json_table,
UNNEST(data->'items') AS item;
Flatten:处理嵌套对象
-- 展平嵌套 JSON
SELECT
flatten(data)->'address.city' AS city
FROM json_table;
性能对比:DuckDB vs Python
| 操作 | Python (pandas) | DuckDB | 速度提升 |
|---|---|---|---|
| JSON 解析 | 45s | 0.8s | 56x |
| 数组展开 | 38s | 0.6s | 63x |
| 嵌套查询 | 52s | 0.9s | 58x |
实际应用场景
- 日志分析:处理 JSON 格式的服务器日志
- API 数据:解析 REST API 返回的 JSON 响应
- 配置文件:高效查询嵌套配置数据
- 数据仓库:处理半结构化数据
总结
DuckDB 的 JSON 处理能力让复杂数据查询变得简单高效,性能远超传统 Python 方案。