快速结论:该报错发生在 Langfuse 自托管部署从 v3.155.1 升级到 v3.192.2 之后,traces metrics 查询在 ClickHouse 开启 enable_analyzer=1 时失败。优先排查 PR #12546 引入的 ORDER BY...LIMIT 1 BY 去重查询形态与 ClickHouse 分析器的兼容性。
适用环境:Langfuse 自托管 v3.192.2(升级前版本 v3.155.1);ClickHouse 环境;查询路径为 packages/shared/src/server/services/traces-ui-table-service.ts;SDK 未涉及。
最快修复方案:暂无确认的一步修复方案。Issue 中提出的应用侧最小改动(将查询包裹在外层 SELECT * FROM (...) 中,让 ORDER BY...LIMIT 1 BY 在独立外层执行)在测试中有效,但尚未合入官方修复。
注意事项:该方案仅为测试验证通过的工作区形态,尚未经过 Langfuse 官方验证;设置 CLICKHOUSE_DISABLE_LAZY_MATERIALIZATION=true 可尝试但可能无效,因为它针对的是不同的分析器问题。
问题场景
用户在自托管 Langfuse 部署中从 v3.155.1 升级到 v3.192.2 后,运行 traces metrics 查询时触发失败。该查询经过 traces-ui-table-service.ts,默认按 timestamp 排序,并包含 observation 和 score 聚合 CTE 的 JOIN。触发条件为 ClickHouse 开启 enable_analyzer=1。
报错原文
Code: 53. DB::Exception: Unsupported types to CAST AS Map. Left type: UInt64, right type: Map(String, Decimal(38, 12)): while converting source column ...
原因分析
可能原因:PR #12546 为优化性能,将 traces metrics 查询从原来的 FINAL 路径改为 ORDER BY ... LIMIT 1 BY id, project_id 去重路径。该查询形态在 ClickHouse 的 enable_analyzer=1 下触发了分析器的类型推断问题,导致在 JOIN 和 CTE 场景下出现 CAST AS Map 类型不匹配。该问题不属于 Langfuse 聚合逻辑错误,而是查询形态与 ClickHouse 分析器/查询计划的兼容性问题。
环境排查
- 确认 Langfuse 版本:升级前 v3.155.1,升级后 v3.192.2
- 确认 ClickHouse 版本:Issue 中未明确指出,建议补充确认是否为 26.x 版本
- 确认 ClickHouse 是否开启
enable_analyzer=1 - 确认查询路径是否经过
traces-ui-table-service.ts,且包含 observation 和 score 聚合 CTE
解决步骤
- 临时验证(可优先尝试):在 web 和 worker 容器上设置
CLICKHOUSE_DISABLE_LAZY_MATERIALIZATION=true,注意该方案针对的是不同的分析器问题,可能无法解决当前报错。 - 应用侧工作区:将受影响的 traces metrics 查询包裹在外层
SELECT * FROM (...) result中,使ORDER BY...LIMIT 1 BY在独立的外层查询块中执行,保留 PR #12546 的分区裁剪优化,同时避开分析器对 JOIN 和 CTE 的类型推断问题。此方案已在测试中验证通过。 - 长期修复:关注 Langfuse 项目是否合入基于该工作区的官方修复 PR;Issue 报告者表示愿意提交最小改动 PR。
验证方法
在升级后的 v3.192.2 环境中运行 traces metrics 查询,确认不再出现 Unsupported types to CAST AS Map 报错;再用 enable_analyzer=0 对比验证查询结果一致,确认语义未被破坏。
参考来源
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


