首页/数据/NoSQL 速查/JSON 提取函数与 JSONEachRow
本包目录(322 条)
MongoDB99 条Elasticsearch89 条
ClickHouse56 条
时序与列式28 条选型与架构50 条

JSON 提取函数与 JSONEachRow

把半结构化数据存成 String 列时用 JSONExtract 系列按路径取值:JSONExtractString/Int/Float/Bool 以及 JSONExtractKeys 等;导入导出常用 JSONEachRow 格式。

NoSQL 速查数据更新于 2026-10-12
取值函数JSONExtractString(json, 'a', 'b')、JSONExtractInt、JSONExtractFloat、JSONExtractBool
结构探测JSONExtractKeys、JSONExtractArrayRaw、JSONHas
格式FORMAT JSONEachRow 每行一个 JSON 对象,适合日志与事件数据

示例

示例
SELECT
    JSONExtractString(props, 'device') AS device,
    JSONExtractInt(props, 'level') AS level
FROM events
WHERE JSONHas(props, 'device')
LIMIT 10;

-- 直接查询 JSONEachRow 文件
SELECT JSONExtractString(line, 'name') FROM file('data.jsonl', 'JSONEachRow', 'line String');
较新版本提供原生 JSON 类型与 JSON 子列访问,但多数存量表仍采用 String + JSONExtract 方案,行为更可控。

易错点

  • 嵌套路径要按层级依次传入参数或使用点号字符串,层级写错返回空值而不是报错
  • 高频过滤的 JSON 字段建议在导入时抽成独立列并做物化列,查询函数逐行解析成本高

数据来源与参考

  • ClickHouse Docs: JSON functions
  • ClickHouse Docs: JSONEachRow
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌