You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Apache Superset中添加临时动态过滤文本框?

在Apache Superset中实现自由文本输入过滤(参数化SQL查询)

核心方案:用Superset原生参数+Jinja模板实现自由文本搜索

你要的临时文本输入过滤框,完全可以通过Superset自带的参数功能实现,不用额外开发,步骤如下:

  1. 在SQL Lab编写带参数的查询
    打开SQL Lab,写包含Jinja参数的SQL语句,用来接收用户输入的序列号(支持模糊匹配):
SELECT *
FROM your_table_name
WHERE serial_number LIKE CONCAT('%', {{ filter_values('serial_input', '') }}, '%')
  • filter_values('serial_input', ''):定义名为serial_input的参数,默认值为空字符串(空值时返回所有数据)
  • CONCAT('%', ..., '%'):实现模糊匹配,用户输入部分序列号也能返回相关结果
  1. 保存为数据集
    执行查询确认结果正常后,把查询保存为新数据集,参数会自动关联到这个数据集。

  2. 创建可视化并配置文本输入控件

  • 基于刚才的数据集创建可视化(比如表格/网格)
  • 进入可视化的「过滤器」配置页,找到serial_input参数
  • 把该参数的控件类型从默认的「下拉框」改成「文本输入框(Text Input)」
  • 可以设置输入框的提示文本(比如“输入或粘贴序列号”)
  1. 添加到仪表盘并使用
    把配置好的可视化加到仪表盘,仪表盘上会显示对应的文本输入框:
  • 用户输入或粘贴序列号(支持部分内容)
  • 点击「应用过滤器」按钮,数据网格会自动执行参数化查询并更新结果

进阶优化建议

  • 性能优化:给serial_number列加索引,避免500万行数据的LIKE查询卡顿
  • 批量匹配支持:如果需要支持多个序列号(逗号分隔),可以修改SQL为:
SELECT *
FROM your_table_name
WHERE serial_number IN (
    SELECT TRIM(value) FROM STRING_TO_ARRAY({{ filter_values('serial_input', '') }}, ',') AS value
)

注:该语法适用于PostgreSQL,其他数据库需调整字符串分割函数

内容的提问来源于stack exchange,提问作者Mzmrizu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:05:01