You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Phoenix查询HBase表中JSON字段指定键并统计

解决方案

Phoenix 4.10及以上版本自带JSON字段解析能力,可直接提取REQUEST列中的merchant值并分组统计,具体实现如下:

推荐查询语句(依赖JSON函数)

SELECT
  JSON_EXTRACT_STRING(REQUEST, '$.template.merchant') AS merchant,
  COUNT(*) AS count
FROM
  你的表名 -- 替换为实际表名
WHERE
  JSON_EXTRACT_STRING(REQUEST, '$.template.merchant') IS NOT NULL
GROUP BY
  JSON_EXTRACT_STRING(REQUEST, '$.template.merchant')

语句说明

  • JSON_EXTRACT_STRING(REQUEST, '$.template.merchant'):根据JSON路径提取目标值,这里的路径对应你提供的JSON结构——外层template对象下的merchant键。
  • GROUP BY + COUNT(*):按提取出的merchant唯一值分组,统计每个值的出现次数。
  • WHERE子句:可选,用于过滤无merchant字段的记录,避免统计NULL值。

低版本Phoenix兼容方案(字符串截取)

如果你的Phoenix版本低于4.10,不支持JSON函数,可通过字符串截取实现(需保证JSON格式稳定,merchant值无嵌套双引号):

SELECT
  SUBSTR(REQUEST, INSTR(REQUEST, '"merchant":"') + 12, INSTR(REQUEST, '"', INSTR(REQUEST, '"merchant":"') + 12) - (INSTR(REQUEST, '"merchant":"') + 12)) AS merchant,
  COUNT(*) AS count
FROM
  你的表名
WHERE
  REQUEST LIKE '%"merchant":"%'
GROUP BY
  SUBSTR(REQUEST, INSTR(REQUEST, '"merchant":"') + 12, INSTR(REQUEST, '"', INSTR(REQUEST, '"merchant":"') + 12) - (INSTR(REQUEST, '"merchant":"') + 12))

内容的提问来源于stack exchange,提问作者Santhoshhadoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:52:33