免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Apache Superset 1.0 版本深度解读:用户体验、异步查询、ECharts 与功能开关全面解析

Apache Superset 1.0 版本深度解读:用户体验、异步查询、ECharts 与功能开关全面解析 Apache Superset 1.0 版本深度解读用户体验、异步查询、ECharts 与功能开关全面解析【免费下载链接】supersetApache Superset is a Data Visualization and Data Exploration Platform项目地址: https://gitcode.com/gh_mirrors/supers/supersetApache Superset 1.0 是该开源数据可视化与探索平台仓库根目录 README.md 描述为Data Visualization and Data Exploration Platform的里程碑式大版本围绕用户体验、开发者体验、性能、新特性、功能开关与稳定性六大主题发布。本文以仓库中 Superset 1.0 发布说明 为骨架结合 配置文件、异步事件模块api.py、async_query_manager.py、告警报表模型 等源码实现为你系统梳理 1.0 的核心能力、开关配置与背后的实现原理助你完成升级评估、功能开启与二次开发。为什么说 1.0 是一个里程碑Superset 1.0 在发布说明中被定位为 huge milestone它确立了比以往任何版本都更高的质量标准并为后续版本设定了标杆。这次发布在**可用性Usability**上大幅提升同时带来了用户期待已久的五大主题功能用户体验User Experience更简单、更直观的 UI开发者体验Developer Experience更易构建、部署与维护性能Performance图表与 SQL Lab 的异步数据加载新特性New Features新可视化插件架构、Apache ECharts 集成、告警报表重构等功能开关Feature Flags默认关闭的新功能及对应开关稳定性与 Bug 修复Stability and Bugfixes数百项修复下面逐一展开。用户体验从卡片视图到 SQL Lab ↔ Explore 的双向流转缩略图卡片视图图表Charts与仪表盘Dashboards的列表新增了**缩略图网格thumbnail grid**展示模式让用户在实例中存在大量图表/仪表盘时可以更快地发现与定位目标。当前前端代码中ListView组件ListView.tsx内置了卡片视图CardView图标切换入口而LISTVIEWS_DEFAULT_CARD_VIEW开关见 config.py可控制列表视图默认是否以卡片形式呈现。Explore 控件现代化重构可视化控件Visualization controls经过全面重构内容/标签/排序、样式以及交互与布局均被统一与简化为后续版本拖拽式控件与动态填充控件输入打好了基础。SQL Lab ↔ Explore 双向联动用户现在可以从SQL Lab创建并命名一个新数据集dataset或在进入Explore时更新已有数据集返回 SQL Lab 时数据集底层的查询会重新展示出来方便随时修改并同步更新数据集。这一流程在 1.0 中由SaveDatasetModal组件对应 PR #11861支撑体现了SQL 查询结果直接沉淀为可视化数据集的顺畅体验。开发者体验现代化组件库、Storybook 与 REST API 增强1.0 在现代化、整合、简化前端界面元素上迈出一大步高频使用的组件获得视觉更新被重构进现代组件库并集成React Storybook以获得立即可见的组件展示同时合并了测试与样式。这让开发者构建、部署和维护 Superset 功能更加容易也带来更一致、更现代的用户观感。与此同时REST API持续演进新增了一批端点并改进了既有端点。仓库中大量模块如 charts/api.py、dashboards/api.py、databases/api.py都基于 Flask-AppBuilder 的BaseSupersetModelRestApi提供标准的 CRUD 端点。1.0 文档已启用Swagger UI来探索与在线调试这些接口相关页面位于文档站点docs/api.mdx。性能图表与 SQL Lab 的异步数据加载1.0 是当时最具性能表现的版本在大量细节调优之外Charts 与 SQL Lab 双双支持异步数据加载asynchronous data loading。当仪表盘内图表很多或查询长时间运行时加载查询结果的主观体验显著提升。从当前仓库源码结构看这背后是SIP-39Global Async Query SupportPR #11499的实现体系前端通过轮询或 WebSocket 从后端拉取事件后端以 AsyncEventsRestApiresource_name async_event端点GET /api/v1/async_event/作为入口从 Redis 事件流中读取事件AsyncQueryManager 负责核心逻辑它根据GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX构造流名第 110 行用redis.xadd写入scoped_stream_name按用户 channel 隔离与full_stream_namefirehose 全量流并用redis.xrange按last_event_id增量读取第 230–256 行。Redis Streams要求 Redis 5.0作为事件总线是这套异步架构的关键基础设施。相关配置项见下文功能开关一节。新特性ECharts、注解、新首页、过滤器状态与告警报表新可视化插件架构 动态插件加载 Apache ECharts1.0 引入的新可视化插件架构让构建、测试、样式化与配置自定义可视化变得更简单**动态可视化插件导入Dynamic viz plugin import**允许 Superset 按需从 Web 任意位置加载数据可视化插件方便开发者使用或分享自定义插件。同时 Superset 采纳Apache ECharts作为新可视化插件的核心图表库。仓库中的开关DYNAMIC_PLUGINS见 config.py控制动态插件导入后端提供 DynamicPluginsViewroute_base /dynamic-plugins用于管理插件元数据key、url等字段并有 DynamicPlugin 模型 持久化plugin-chart-echarts 则是当前仓库中 ECharts 系插件的实现含 BoxPlot、时间序列等多种图表。1.0 中一个直观示例是使用 ECharts 绘制的 Prophet 时间序列预测图注解Annotations能力增强配合 ECharts 集成1.0 引入了一套更强的注解功能Formula annotation公式注解在图表上绘制任意数学函数Interval and Event annotations区间与事件注解为时间序列趋势添加上下文Line annotation线条注解以预定义图表作为注解来源。对应 PR #11665为 chart data endpoint 增加 event/interval 注解支持。这些注解类型在仓库的时间序列相关图表控件与数据请求层均有对应字段支撑。全新首页与内容发现重构后的首页为登录用户提供个性化落地页personalized landing page展示与用户相关的内容图表、仪表盘、保存的查询等并作为发现内容、快速访问近期项目的枢纽。对应 PR #11206home screen MVP及后续一系列样式与加载状态优化#11557、#11650 等。前端实现位于 src/pages/Home 与 src/features/home。仪表盘过滤器状态可视化仪表盘上的图表现在会清晰显示过滤器filters的生效范围、是否已应用、是否出错。选中过滤器时高亮受影响的图表并提升不兼容过滤器图表的可见性为过滤器变更提供更多上下文。告警与报表Alerts Reporting重构Alerts 和 Reporting获得了稳健的后端与 UI 重构。当前仓库的 reports/models.py 中可见其领域模型已相当完备ReportScheduleTypeALERT与REPORT两种类型第 50–52 行ReportRecipientTypeEmail、Slack、SlackV2三种通知渠道第 62–65 行ReportStateSuccess、Working、Error、Not triggered、On Grace第 68–73 行ReportDataFormatPDF、PNG、CSV、TEXT第 76–80 行。后端 REST 端点为 ReportScheduleRestApi任务调度由 tasks/scheduler.py 配合 Celery 与 celery beat 执行。功能开关默认关闭的新特性及其依赖1.0 的部分新特性默认关闭每个特性在config.py中都有一个 feature flag部分特性还需要额外后端依赖Celery、SMTP、Redis 等。下表是发布说明给出的开关清单并结合当前仓库 config.py 中的DEFAULT_FEATURE_FLAGS做了补充说明特性功能开关依赖说明结合源码Global Async QueriesGLOBAL_ASYNC_QUERIES: TrueRedis 5.0、已配置并运行的 celery workers底层依赖 AsyncQueryManager 读写 Redis Streams相关配置见下方GLOBAL_ASYNC_QUERIES_*系列Dashboard Native FiltersDASHBOARD_NATIVE_FILTERS: True无仪表盘原生过滤器filter box 的现代化替代Alerts ReportingALERT_REPORTS: TrueCelery workers 及 celery beat 进程领域模型见 reports/models.py后端 API 见 reports/api.py告警/报表执行超时、执行人等行为由ALERT_REPORTS_*系列配置控制Homescreen ThumbnailsTHUMBNAILS: TrueTHUMBNAIL_CACHE_CONFIG如{CACHE_TYPE: null, CACHE_NO_NULL_WARNING: True}selenium、pillow 7、celery缩略图由 tasks/thumbnails.py 配合浏览器截图生成当前默认关闭config.pyDynamic Viz Plugin ImportDYNAMIC_PLUGINS: True无后端管理视图见 views/dynamic_plugins.py数据模型见 models/dynamic_plugins.py说明DASHBOARD_NATIVE_FILTERS在发布说明中列出当前版本仓库中过滤器相关能力已演进见 filters 目录此处以 1.0 发布说明为准。开关配置方式功能开关统一在config.py的DEFAULT_FEATURE_FLAGS中定义默认值用户可通过superset_config.py中的FEATURE_FLAGS字典覆盖合并见 config.py 的注释说明。例如启用全局异步查询与告警报表# superset_config.py FEATURE_FLAGS { GLOBAL_ASYNC_QUERIES: True, ALERT_REPORTS: True, THUMBNAILS: True, }全局异步查询的配套配置开启GLOBAL_ASYNC_QUERIES后config.py 中还有一整套配套参数值得关注GLOBAL_ASYNC_QUERIES_REDIS_CONFIGRedis 连接配置需 Redis 5.0GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX事件流前缀默认async-events-GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT/..._FIREHOSE每用户流与全量流firehose的最大长度默认 1000 / 1000000GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME与GLOBAL_ASYNC_QUERIES_JWT_SECRET用于在轮询/WS 请求中携带并校验用户身份的 JWT 配置GLOBAL_ASYNC_QUERIES_TRANSPORT传输方式polling轮询或wsWebSocketGLOBAL_ASYNC_QUERIES_WEBSOCKET_URLWebSocket 服务地址默认ws://127.0.0.1:8080/对应仓库中的 superset-websocket 独立服务。告警报表的常用配套配置开启ALERT_REPORTS后config.py 提供了一组行为控制参数例如ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT默认工作超时3600 秒ALERT_REPORTS_WORKING_TIME_OUT_KILL超时是否强制结束任务ALERT_REPORTS_DEFAULT_CRON_VALUE默认 cron 表达式0 0 * * *每天ALERT_REPORTS_DEFAULT_RETENTION执行日志保留天数90 天ALERT_REPORTS_NOTIFICATION_DRY_RUN是否以 dry-run 模式运行通知ALERT_REPORTS_QUERY_EXECUTION_MAX_TRIES查询执行最大重试次数。稳定性与 Bug 修复1.0 包含数百项bug 修复与稳定性增强发布说明强调后续大版本会继续把稳定、无 bug 的体验作为重点。升级前请留意向后不兼容变更见仓库根目录 UPDATING.md。1.0 PR 亮点速览发布说明按主题罗列了本次更新的代表性 PR完整列表见 CHANGELOG.md用户体验User Experience样式与细节恢复菜单高亮#12024、eslint curly 规则#11913、移除 react bootstrap fade 组件#11843、暗色过滤器弹层背景#11611Explore 控件全局导航菜单 hover 展开#12025、数据集健康检查 hook#11970、仪表盘/图表/数据集/数据库导入弹窗#11924/#11956/#11910/#11884、Explore 结果表#11854、告警/报表 CRUD 列表#11802、CRUD 列表筛选我的#11683、Explore 新数据源页签#12008、时间选择器增强#11418、指标与过滤器控件重设计#12095、保存按钮文案调整#11281、数据源下拉排序#11424SQL Lab自定义错误消息#12080、缺失参数提示#12049、SQL Lab 到 Explore 体验改进#11755、Postgres SQL 校验器#11538、BigQuery 单语句执行#11904、SaveDatasetModal 组件#11861、查询历史列表筛选#11702、SQL 预览弹窗#11634、Query History CRUD 列表#11574、saved_query 增加 UUID 列#11397、保存查询携带执行信息#11391、保存查询预览弹窗#11135、保存查询权限简化#11764文档安全角色页恢复#11978、Docker 配置路径修复#11703、PR 标题语义化前缀#11398、Swagger UI API 文档页#11154、Apache 毕业相关发布流程更新#12117开发者体验Developer Experience新格式导出保存查询端点#11447组件库cypress 5.5.0#11603、less/emotion/core/core-js/lodash 等依赖升级、nvd3 插件版本升级#11947、pypi cryptography 升级#11511性能Performance缓存仪表盘 bootstrap 数据#11234、UUID 列生成加速#11209、API info 性能优化#11346Global Async Query SupportSIP-39图表异步查询支持#11499新特性New Features数据可视化改进event/interval 注解支持#11665、ECharts BoxPlot 图表#11199、sankey 按指标排序#11626发现与导航首页链接#11851、首页加载状态与 API 调用优化#11557、告警/报表执行日志列表#11937、首页 MVP#11206告警与报表图标与列序更新#12081、cron 选择器#12032、新增/编辑弹窗#11770、列表筛选#11900、not null 条件选项#12077、移除 SIP_34_UI 开关#12085、刷新动作#12071、删除与批量删除#12053结语Apache Superset 1.0 通过六大主题奠定了后续版本的基础更直觉的卡片视图与 Explore 控件、SQL Lab 与 Explore 的无缝联动、基于 Redis Streams 与 Celery 的全局异步查询、拥抱 ECharts 的插件化可视化体系、覆盖告警/报表/缩略图/动态插件的功能开关矩阵以及数百项稳定性修复。对正在评估升级或准备二次开发的团队建议按上文功能开关一节逐项核对所需特性与后端依赖Redis 5.0、Celery/beat、SMTP、Selenium 等并在升级前审阅 UPDATING.md 与 CHANGELOG.md即可平滑获得 1.0 的全部红利。【免费下载链接】supersetApache Superset is a Data Visualization and Data Exploration Platform项目地址: https://gitcode.com/gh_mirrors/supers/superset创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表