#42926·superset

图表的存储查询上下文永远不会迁移,因此由旧版本保存的图表上的每个非"探索"路径 500 错误

作者: AryaKetanShCt创建于 2026年8月9日更新于 2026年9月17日
标签change:backend#bug:regressionapi:charts

QQ 错误描述

一张图表有两次:slices.params'持有图表的设置,而slices.query-context'持有从这些设置中构建的查询。 探索在每个渲染点重建“params”的查询,从不读取“query context”。 `query context'只有在用户保存图表时才写出,升级时没有任何内容重写。

每个消费者如果是 ** 不 ** 浏览器重放 存储查询逐字记录:

  • GET /api/v1/chart/<id>/data/'超级集/charts/data/api.py' does`json.loads(chart.query context)'
  • 警报和报告、缩略图、缓存取暖、CSV/Excel导出,通过同一端点
  • MCP服务器的图表数据工具

因此,存储的查询时间在查询引擎运行的同时,一个上次保存的图表将一个旧的查询交给了当前引擎. 结果是在所有这些路径上都有500条路程,而同样的图表在"探索"中则完美无缺. 这使得它看起来像一个数据或许可问题,而不是一个计划驱动问题.

这是与#33152("维兹迁移只迁移窗体 数据,而不是查询对象)相同的家族. 这有问题,因为缓存取暖或提醒等后端进程以及报告使用已保存的查询对象"")和#31872,但是它不需要导入,也不需要进行迁移来触发——只有时间.

• 症状1——一个已删除的后处理选项

"weery Object.exec post processing"将存储的选项直接通过:

df = gettr(熊猫 后处理,操作) (df, ** 选项)

枢轴'曾取平面-柱'和重置-索引'。 平板化后来成为它自己的 " 平板 " 操作,参数被去除,但在此之前保存的图表仍然被储存在所储存的query context'中。 重放一个给:

TypeError: pivot () 得到了一个出乎意料的关键词参数“ flatten  columns ”

存储的查询没有迁移,所以这些图表是永久的,直到有人在Explore中打开每一个并重新保存它。

还有一个缺陷 隐藏了这一点 任何基于反思的修复。 在超级集/utils/pandas 后处理/utils.py'返回def 包裹(df, ** options)',不使用`functools'。 包装,所以:

检查. 签名( 关键)
(df:对象,**选项:对象) - > 对象

十项业务使用该装饰(综合'、比较'、贡献'、累积'、发展'、支柱'、重名'、滚动'、选择'、选择')。 他们都报告一个‘kwargs'的签名,失去他们的‘ '和‘doc',不能被回顾。检查.unwrap ' 没有任何帮助,因为没有wraps'就没有wrapped'。

QQ 症状 2 — 无时间列的时间序列

由更古老的前端商店“is times系列: true”在查询中保存的图表,而时间柱在params'中作为granularity sqla'生存。 `超级集/模型/帮助.py'然后提出:

未作为部分表格配置提供的日期栏,按此类图表要求

同样,在探索中正确, 到处都是500个 . . . . . . .

内容来源: apache/superset