Apache Superset 3.1.1 补丁版本全解析:44 项修复背后的源码级改进 📅 发布时间:2026/9/18 11:19:34 👁 浏览次数: Apache Superset 3.1.1 补丁版本全解析44 项修复背后的源码级改进【免费下载链接】supersetApache Superset is a Data Visualization and Data Exploration Platform项目地址: https://gitcode.com/gh_mirrors/supers/superset本指南以 Apache Superset 3.1.1 的官方变更日志CHANGELOG/3.1.1.md为骨架系统梳理该补丁版本涵盖的 44 项修复与 3 项依赖更新并结合当前仓库的源码实现逐项解读其技术背景、影响范围与升级收益。读完本文你将能完整掌握 3.1.1 在查询执行、嵌入式集成、图表渲染、权限安全、导入导出与数据库引擎兼容性等维度的具体修复内容并可据此评估升级计划。版本概况一次聚焦稳定性的补丁发布Apache Superset 3.1.1 于2024 年 2 月 9 日UTC1发布是 3.1 系列的第二个补丁版本。该版本没有任何新增功能全部提交均为Fixes修复与Others构建/依赖/杂项两类体现了补丁版本只修不增、聚焦稳定的定位。其核心看点包括44 项修复覆盖后端查询引擎、SQL 解析、前端图表渲染、权限模型、导入导出、数据库驱动等多个层面Flask-AppBuilderFAB升级至 4.3.11PR #27039属于安全与稳定性相关的基础框架升级3 项依赖更新涉及前端csstype、Helm Chart 默认版本与 Prophet 时序预测库。下文按功能域对这些修复进行归类深读并结合仓库源码说明其实际实现与影响。查询执行与异步事件链路Drill by 与全局异步查询的兼容性PR #27066 修复了在开启GLOBAL_ASYNC_QUERIES特性标志时执行 Drill by下钻操作失败的问题。该特性标志在 superset/config.py 中默认关闭False开启后查询会改为通过异步事件通道返回结果。Drill by 与异步查询的组合在此前版本中未得到充分验证3.1.1 补上了这一链路。异步查询的核心实现位于 superset/async_events/async_query_manager.py它基于 Redis Stream 作为事件总线并通过 superset/charts/data/api.py 中的is_feature_enabled(GLOBAL_ASYNC_QUERIES)判断是否走异步通道。与之配套的配置项同样位于 superset/config.py包括配置项默认值说明GLOBAL_ASYNC_QUERY_MANAGER_CLASSsuperset.async_events.async_query_manager.AsyncQueryManager异步查询管理器实现类GLOBAL_ASYNC_QUERIES_REDIS_CONFIG{port: 6379, host: 127.0.0.1, password: , db: 0, ssl: False}Redis 连接参数GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIXasync-events-Redis Stream 键前缀GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT1000单流最大条目数GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE1000000全局火线流的条目上限GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAMEasync-token携带 JWT 的 Cookie 名GLOBAL_ASYNC_QUERIES_JWT_SECRETtest-secret-change-meJWT 签名密钥生产环境务必修改GLOBAL_ASYNC_QUERIES_TRANSPORTpolling传输方式可选polling或wsGLOBAL_ASYNC_QUERIES_POLLING_DELAY500毫秒轮询间隔GLOBAL_ASYNC_QUERIES_WEBSOCKET_URLws://127.0.0.1:8080/WebSocket 通道地址需要注意的是AsyncQueryManager在初始化时会对GLOBAL_ASYNC_QUERIES_JWT_SECRET做长度校验小于 32 字符会报错见 async_query_manager.py因此生产环境配置异步查询时必须设置足够强度的密钥。嵌入式场景下的异步查询支持PR #26332 解决了embedded嵌入式仪表板 异步查询的联动问题此前 Guest 用户嵌入式场景的匿名会话用户在异步查询模式下无法正常工作3.1.1 为其补齐了支持。嵌入式场景的入口路由位于 superset/views/dashboard/views.py/dashboard_id_or_slug/embedded而 Guest 用户的识别逻辑可见于 superset/views/utils.py 的security_manager.is_guest_user(user)分支。嵌入式相关配置如GUEST_ROLE_NAME、GUEST_TOKEN_JWT_SECRET、GUEST_TOKEN_JWT_ALGO定义于 superset/config.py。此修复意味着以嵌入式方式对外提供数据分析能力、同时需要开启异步查询以支撑大查询量的部署现在可以同时启用两项能力。下钻无数据返回与 NaN 值处理PR #27073修复了 Drill by 时无数据返回no rows returned的问题PR #26946修复了列值中出现NaN时的处理逻辑避免 NaN 值在查询结果中引发异常。这两项修复共同保障了数据质量较差含缺失值的数据集在下钻与常规查询中的稳定性。行数限制的硬编码问题PR #26807 修复了行数限制被硬编码Row limit hardcoded的问题使结果行数上限能够正确响应配置与图表设置而非固定写死。这直接影响大数据集查询时的资源控制与用户体验。用户写坏 SQL 不再返回 500PR #26638 与 PR #26355 均针对SQL Lab 中的用户输入鲁棒性#26638避免用户写出非法 SQL 时服务器返回 500 错误改为优雅的错误提示#26355修复 Trino 数据源在 SQL Lab 中表不存在table not found时的处理逻辑。配合这两项修复SQL Lab 对错误 SQL 的容错能力明显提升属于面向最终用户的直接体验改进。SQL 解析与文本兼容性CRLF 换行导致 sqlglot 解析失败PR #26911 修复了CRLF 行尾Windows 风格的\r\n导致 sqlglot 解析失败的问题。此前从 Windows 环境粘贴或导入的 SQL 文本可能因换行符差异触发解析错误该修复统一了换行处理提升了跨平台场景下的 SQL 解析稳定性。表解析能力改进PR #26476 对sqlparse模块的表解析逻辑进行了改进见 superset/sql_parse.py 相关实现使 Superset 在识别 SQL 语句中涉及的表名时更加准确从而改善 SQL Lab 中表级操作如权限检查、血缘追踪的正确性。图表渲染与前端界面修复Big Number 图表防止数字换行PR #27096 为Big Number大数字图表添加了white-space: nowrap样式防止大数值在卡片中被折行显示保证关键指标的视觉完整性。仪表板过滤器侧栏撑高问题PR #27069 修复了过滤器Filters侧栏拉伸仪表板高度的布局问题使带过滤条的仪表板在纵向布局上恢复正常。仪表板 PDF 导出排除表头控件PR #27068 修复了仪表板 PDF 导出时包含表头控件header controls的问题导出内容现在只包含图表主体避免无关控件进入正式输出文档。表格图表货币符号缺失与合计行对齐PR #27041修复了 Table Chart 在小数值格式small number format下丢失货币符号的问题PR #26964修复了滚动条出现时总计行与表头错位的问题。这两项共同提升了表格类图表在财务数据展示场景下的准确性与观感。横向条形图外边距与时间序列表格对比PR #26817修复了横向条形图外边距调整出错的问题对应 ECharts 图表的 margin 计算逻辑PR #26814修复了时间序列表格time-series table无法从时间范围起点开始对比的问题。Explore 自定义列格式化PR #27023 允许在自定义列格式化custom column formatting中使用自由的 d3 格式串free-form d3 format为高级用户提供了更灵活的数值/日期展示控制能力。旧版图表的 Time Grain 控件PR #26705 为legacy旧版图表恢复了 Time Grain时间粒度控件避免旧版图表升级后丢失时间粒度选择能力。权限、安全与会话草稿仪表板越权访问修复PR #27015 修复了普通用户可访问所有草稿draft仪表板的权限漏洞此前草稿仪表板的可见性控制存在缺陷3.1.1 收紧了访问规则确保非授权用户无法浏览他人的草稿内容。此项属于该版本中较重要的安全修复之一。禁止 Guest 用户修改指标PR #26749 禁止Guest嵌入式访客用户修改指标metrics堵住了嵌入式场景下的越权修改通道配合上述 #26332 的异步查询支持共同完善了嵌入式权限边界。隐藏嵌入式场景的全屏按钮PR #26412 在嵌入式上下文中隐藏仪表板的全屏fullscreen选项避免嵌入页面出现与宿主页面冲突的交互入口。警报消息的报错安全化PR #27019 将警报alerts中的错误消息改为更安全的文案避免将内部异常细节直接暴露给最终用户降低信息泄露风险。FAB 升级至 4.3.11PR #27039 将底层 Web 框架Flask-AppBuilderFAB升级到 4.3.11。Superset 的所有管理界面、认证与权限体系如 superset/security/manager.py都构建在 FAB 之上此次升级随之带来基础框架层的安全补丁与稳定性改进是 3.1.1 升级清单中优先级最高的一项。导入导出与图表数据模型图表 / 仪表板导入校验PR #26993修复了图表导入校验chart import validation问题PR #26887修复了仪表板导入校验dashboard import validation问题。导入流程的入口位于 superset/commands/chart/importers/v1/utils.py 的import_chart函数该校验逻辑会检查 UUID 冲突、覆盖权限等条件。两个修复共同提高了跨实例导入导出export/import的成功率与数据一致性。仅导入 FORMULA 类型注释PR #26652 调整了图表导入逻辑在导入时仅保留FORMULA类型的注释annotation。对应实现为 superset/commands/chart/importers/v1/utils.py 中的filter_chart_annotations它会遍历图表params中的annotation_layers仅保留annotationType AnnotationType.FORMULA的层。AnnotationType枚举定义于 superset/utils/core.py。这意味着依赖其他图表或注释层对象的注释暂不随图表导出需要独立处理源码中的 TODO 注释也印证了这一点。无 Schema 信息的保存查询导出PR #26889 允许在缺少 schema 信息的情况下导出保存的查询saved queries避免了因目标库 schema 字段缺失而导致导出失败提升了跨环境迁移的容错性。虚拟数据集创建校验PR #26625 修复了创建虚拟数据集virtual dataset时的校验问题确保用户提交的 SQL 视图定义在入库前得到正确验证降低创建非法数据集的风险。日志中的列过滤PR #26314 在日志记录时过滤掉未定义的列undefined columns避免日志系统在处理异常请求时因缺失列信息而二次报错。数据库引擎与连接兼容性BigQueryORDER BY 中的特殊字符PR #26461 修复了BigQuery 中列名/指标名含特殊字符时 ORDER BY 失效的问题对应 superset/db_engine_specs/bigquery.py使带引号或特殊字符的字段能够在排序子句中被正确处理。IBM DB2 连接改进PR #26744 提升了IBM DB2 连接支持见 superset/db_engine_specs/db2.py改善了该数据库方言下的连接与元数据交互行为。Pinot 时间戳转换方法名修正PR #26906 修复了Pinot 引擎中epoch_ms_to_dttm的方法名拼写错误确保毫秒级时间戳到日期时间的转换函数能被正确识别见 superset/db_engine_specs/pinot.py。数据库按 UUID 过滤PR #26469 允许在数据库列表/查询中按 UUID 过滤为多实例部署下精确标识数据库对象提供了便利。Google SDK 导入错误捕获PR #25550 对Google SDKBigQuery 等的可选依赖导入增加了ImportError捕获对应 superset/db_engine_specs/bigquery.py在未安装相关 SDK 的环境中Superset 不再因导入失败而整体报错而是优雅降级。标签系统、前端依赖与本地化带冒号的标签支持与系统标签过滤PR #26965改进了标签tags名称中包含冒号:时的支持避免解析歧义PR #26701在标签列表中过滤掉系统标签system tags只展示用户创建的标签。标签过滤的底层实现可见于 superset/tags/filters.py 的UserCreatedTagTypeFilter当查询参数custom_tag为True时仅返回TagType.custom标签为False时排除自定义标签即仅返回系统标签。Tag与TagType模型定义于 superset/tags/models.py。RLS 模态框样式PR #26634 修复了行级安全RLS配置模态框的样式问题改善了Row Level Security管理界面的可用性相关 API 位于 superset/row_level_security 模块。中文翻译修正PR #26645 修正了简体中文zh翻译中的错误对应翻译文件 superset/translations/zh/LC_MESSAGES/messages.po提升了中文用户界面的本地化质量。依赖更新与其他变更除上述修复外3.1.1 还包含 3 项非修复类变更PR #26716将superset-frontend中的csstype依赖从 2.6.9 升级到 3.1.3由 Dependabot 自动提交属于前端类型定义库的常规升级PR #26707将 Helm Chart 中默认的 Superset 镜像版本更新为3.1.0对应 helm/superset/values.yaml确保通过 Helm 安装的用户默认获得 3.1 系列版本PR #26431将Prophet时序预测库用于部分时序图表的前瞻预测功能升级到 1.1.5带来该库上游的稳定性改进。升级建议与注意事项综合 3.1.1 的修复内容以下几点值得在升级前重点核对优先升级 FABPR #27039 将 Flask-AppBuilder 升级到 4.3.11属于基础安全框架更新建议所有 3.1.x 用户尽快跟进确认异步查询配置若启用了GLOBAL_ASYNC_QUERIES请确认GLOBAL_ASYNC_QUERIES_JWT_SECRET已设置为 32 字符以上的强密钥校验逻辑见 async_query_manager.py否则初始化会失败留意导入行为变化PR #26652 后图表导入将仅保留 FORMULA 类型注释依赖外部注释层的图表在跨实例迁移时需要单独处理验证嵌入式场景同时使用嵌入式仪表板与异步查询的部署应在升级后对 Guest 会话的查询链路做回归验证数据库驱动兼容性使用 BigQuery、IBM DB2、Trino、Pinot 的用户建议升级后对各自引擎的查询与元数据操作做冒烟测试。从 CHANGELOG/3.1.1.md 出发可以看到3.1.1 是典型的小而稳补丁版本没有新特性但 44 项修复精准覆盖了查询执行、权限安全、导入导出、数据库兼容性与前端渲染等多个关键链路。对于已经运行 3.1.0 的生产环境这是一次低风险、高收益的升级对于仍停留在更早版本的用户也可以借此评估升级到 3.1 系列的整体收益。【免费下载链接】supersetApache Superset is a Data Visualization and Data Exploration Platform项目地址: https://gitcode.com/gh_mirrors/supers/superset创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考