Apache Superset中Preselect Filters功能失效问题求助
我用Handlebars图表设计了汇总仪表盘和详情仪表盘,点击汇总仪表盘的FilerID链接可跳转至详情仪表盘,但preselect_filters参数未按传入的FilerID过滤记录。汇总仪表盘URL为http://localhost:8088/superset/dashboard/12/,期望详情仪表盘展示过滤后的Filer记录。
汇总仪表盘Handlebars模板代码
<html> <head> <title> Filer Summary </title> </head> <body> <h1> Filer Information </h1> <table> <tr> <th>Filer ID</th> <th>Name</th> <th>Type</th> <th>City</th> </tr> <ul class="data-list"> {{#each data}} <tr> <td> <a href="/superset/dashboard/13/?preselect_filters={%2298%22:{%22FilerID%22:[16494]}}">{{FilerID}}</a> </td> <td> {{Name}} </td> <td> {{Type}} </td> <td> {{City}} </td> </tr> {{/each}} </ul> </table> </body> </html>
详情仪表盘Handlebars模板代码
<html> <head> <title> Filer Information </title> </head> <body> <h1> Filer Details </h1> <table> <ul class="data-list"> {{#each data}} <tr> <th>Filer ID</th> <th>{{FilerID}}</th> </tr> <tr> <th>Name</th> <th>{{Name}}</th> </tr> <tr> <th>Type</th> <th>{{Type}}</th> </tr> <tr> <th>City</th> <th>{{City}}</th> </tr> {{/each}} </ul> </table> </body> </html>
以下是你遗漏的配置和需要修正的问题:
链接参数硬编码,未动态传入当前FilerID
你当前的链接中preselect_filters里的FilerID是固定值16494,没有用Handlebars变量替换成当前循环的{{FilerID}}。需要修改链接为:<a href="/superset/dashboard/13/?preselect_filters={%2298%22:{%22FilerID%22:[{{FilerID}}]}}">{{FilerID}}</a>这样每个FilerID链接都会携带对应的值,而不是固定的16494。
确认
preselect_filters中的数字98是否正确
这个数字是Superset中对应过滤器的filter_id,需要确保它和详情仪表盘上绑定的FilerID过滤器的ID一致。可以在详情仪表盘的编辑模式下,查看过滤器的配置,确认其ID是否为98,若不一致则替换为正确的ID。详情仪表盘需正确绑定过滤器
确保详情仪表盘(ID为13)中已经添加了基于FilerID的过滤器,并且该过滤器已关联到对应的数据集字段。如果没有添加过滤器,preselect_filters参数无法生效,因为没有对应的过滤器接收这个参数。移除无效的HTML嵌套
你的模板中存在<table>内嵌套<ul>的错误HTML结构,这可能导致页面渲染异常,甚至影响Superset对模板的解析。需要删除<ul class="data-list">和对应的</ul>标签,直接在<table>内通过{{#each data}}循环渲染<tr>即可。
内容的提问来源于stack exchange,提问作者Raghu Ram

