Metabase提取JSON键下划线后值报错,请求技术协助
问题解决:适配json字段的jsonb_object_keys调用及数值提取
错误原因
报错核心是jsonb_object_keys函数仅支持jsonb类型参数,但你的outgoing字段是json类型,必须显式转换类型才能匹配函数要求。另外注意table是PostgreSQL关键字,查询时要替换成你的实际表名。
修正后的SQL查询
SELECT id, outgoing, substring(j.key FROM '_(\d+)$') AS extracted_number FROM your_actual_table_name, CROSS JOIN LATERAL jsonb_object_keys(outgoing::jsonb) AS j(key);
关键改动说明
outgoing::jsonb:将原json类型字段强制转换为jsonb类型,满足jsonb_object_keys的参数要求substring(j.key FROM '_(\d+)$'):用正则精准匹配最后一个下划线后的纯数字部分,比原正则_([^_]+)$更贴合你提取数值的需求(如果键名最后下划线后是其他字符,可换回原正则)- 替换
your_actual_table_name为你的数据表真实名称,避免关键字冲突
预期结果
针对你的测试数据,查询会返回:
| id | outgoing | extracted_number |
|---|---|---|
| 1 | {"a945248027_14454878":"processing"} | 14454878 |
| 2 | {"old.a945248027_14454878":"cancelled"} | 14454878 |
内容的提问来源于stack exchange,提问作者siraug22
相关产品推荐
相关产品推荐

