Superset二次开发之筛选器native Filters 水平布局

ops/2024/9/25 5:10:33/
引言

Apache Superset作为一个功能强大的开源数据探索和可视化平台,提供了丰富的配置选项来定制化用户体验。其中,HORIZONTAL_FILTER_BAR 是一个重要的配置项,专注于优化和改进Superset中的筛选器条布局与交互。

什么是HORIZONTAL_FILTER_BAR

HORIZONTAL_FILTER_BARSuperset中用于控制筛选器条(Filter Bar)水平布局的配置项。默认情况下,Superset的筛选器条是垂直排列的,即筛选器以列的形式堆叠在仪表板或图表的左侧或右侧。而当配置项 HORIZONTAL_FILTER_BAR 被启用时,筛选器条将以水平的方式显示在仪表板的顶部或底部,以更好地适应特定的布局需求和用户偏好。

效果展示

配置前

配置后

重点  "HORIZONTAL_FILTER_BAR": True,

python">FEATURE_FLAGS = {**FEATURE_FLAGS,"foo": "bar","KV_STORE": True,"SHARE_QUERIES_VIA_KV_STORE": True,"ENABLE_TEMPLATE_PROCESSING": True,"ALERT_REPORTS": True,"DASHBOARD_NATIVE_FILTERS": True,"DRILL_TO_DETAIL": True,"DRILL_BY": True,"HORIZONTAL_FILTER_BAR": True,
}

 

从技术角度来看,SupersetHORIZONTAL_FILTER_BAR 功能涉及几个关键组件和概念:

1. 前端组件和布局

  • FilterBox组件:这是一个主要的前端组件,用于显示和管理过滤器。HORIZONTAL_FILTER_BAR 实际上是对 FilterBox 组件布局的调整,从传统的垂直布局改为水平布局。

  • CSS 样式:水平过滤器栏的实现依赖于自定义的 CSS 样式。通过调整 FilterBox 组件的 CSS 属性,如 display, flex-direction, margin, 和 padding 等,可以实现水平排列过滤器。

  • 布局配置:在仪表板的JSON配置中,可以定义布局方式和组件排列。这需要开发人员在配置中明确指定使用水平过滤器栏。一个典型的配置可能包括调整过滤器组件的 positionsize 参数。

2. 过滤器的管理和交互

  • 状态管理:前端使用 Redux 或类似的状态管理库来管理过滤器的状态。用户在水平过滤器栏中选择或修改过滤器时,这些更改会更新 Redux 状态树,并触发相关的重新渲染或数据请求。

  • URL参数同步Superset 通常通过 URL 参数来保持过滤器的状态,以便用户可以共享特定过滤条件下的仪表板视图。启用 HORIZONTAL_FILTER_BAR 后,过滤器的状态依然需要与 URL 参数同步,这需要对前端代码进行适当的调整和处理。

3. 后端逻辑和数据处理

  • 查询生成:当用户在水平过滤器栏中选择或更改过滤器时,Superset 的后端需要重新生成 SQL 查询。这涉及解析前端传来的过滤器条件,并将它们转换为数据库查询的一部分。

  • 数据缓存和优化:为提高性能,后端可能会对常见的过滤条件进行数据缓存。启用 HORIZONTAL_FILTER_BAR 后,可能会增加特定过滤组合的查询频率,因此需要有效的缓存策略来减少数据库压力。

4. 可扩展性和定制化

  • 插件机制Superset 允许通过插件机制扩展和定制功能。如果需要进一步定制 HORIZONTAL_FILTER_BAR 的行为或样式,可以开发自定义插件。这些插件可以包括新的前端组件、定制的过滤器逻辑或新的数据处理方法。

  • API集成:在某些场景中,可能需要集成外部API来获取或处理过滤器数据。例如,如果过滤器涉及动态获取数据选项(如下拉列表),则可能需要与后端API交互来实时更新这些选项。

5. 安全性和权限控制

  • 基于角色的访问控制(RBAC):对于不同用户或角色,可能需要限制他们可以看到或使用的过滤器。例如,某些敏感数据的过滤器可能只对特定权限的用户开放。

  • 审计和日志记录:为了确保数据安全和系统稳定性,可以在后端记录用户使用 HORIZONTAL_FILTER_BAR 的操作日志,包括哪些过滤器被使用、何时使用等信息。这有助于在出现问题时进行追溯和分析。

总的来说,HORIZONTAL_FILTER_BAR 的实现需要前端和后端的协同工作,以及对性能、安全性和用户体验的综合考虑。


http://www.ppmy.cn/ops/86000.html

相关文章

秋招复习笔记——八股文部分:网络TCP

TCP 三次握手和四次挥手 TCP 基本认识 序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。 确认应答号&#xf…

Matlab M_map工具箱绘制Interrupted Mollweide Projection

GMT自带了许多的地图投影,但是对于Interrupted Mollweide投影效果却不好。 作为平替的m_map工具箱中带有的投影类型可完美解决这一问题。 Interrupted Mollweide Projection长这样 全球陆地 全球海洋 使用Matlab工具箱m_map展示全球海平面变化的空间分布 addpath(…

C++ 代码实现socket 类使用TCP/IP进行通信 (windows 系统)

C 代码实现socket 类使用TCP/IP进行通信 (windows 系统) TCP客户端通信常规步骤: 1.初始换socket环境 2.socket()创建TCP套接字。 3.connect()建立到达服务器的连接。 4.与客户端进行通信,recv()/send()接受/发送信息&#xff0…

51单片机和STM32区别

51单片机和 STM32 区别 51单片机和 STM32 是两种常见的微控制器,它们在架构、性能、外设接口、功耗和开发环境等方面有所不同。 1. 架构差异 51单片机基于传统的哈佛总线结构,采用 CISC 架构,而 STM32 基于 ARM Cortex-M 系列的32位处理器核…

Redisson中RQueue的使用场景附一个异步的例子

RQueue 是一个基于 Redis 的分布式作业队列系统,它允许开发者在 Ruby 应用程序中实现异步任务处理和计划任务调度。由于 Redis 提供了高性能的内存数据结构存储,RQueue 可以快速地存储和检索队列中的任务,这使得它非常适合于高并发和低延迟的…

pytorch backbone

1 简介 在PyTorch深度学习中,预训练backbone(骨干网络)是一个常见的做法,特别是在处理图像识别、目标检测、图像分割等任务时。预训练backbone通常是指在大型数据集(如ImageNet)上预先训练好的卷积神经网络…

后端开发工程师vue2初识的学习

博客主页:音符犹如代码系列专栏:JavaWeb关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 什么是Vue? Vue (通常指 Vue.js)是一个用…

【概率论】第一章:概率论基本概念

文章目录 一. 随机事件与空间样本二. 事件间的关系与事件的运算三. 概率、条件概率、事件独立性与五大公式1. 概率2. 条件概率3. 事件独立性4. 五大公式 四. 古典型、几何型概率、伯努利试验 确定现象:磁极同性相斥 随机现象:在单次实验结果中呈现出不确…