筛选与过滤
Redash结果集记录分筛选和过滤两种操作,筛选和Excel列的筛选原理一样,就是结果集出来后,把某一列的内容去重后放置在表头用于筛选数据。过滤则直接作用于数据源取数,所以过滤参数必须先输入再执行查询。
1.筛选
筛选的实现非常简单,只需要在查询语句里,需要筛选的列别名后缀加上::filter或::multi-filter即可实现按该列筛选或多选筛选。和Excel实现非常类似。例如:SELECT action AS “动作::multi-filter”, * FROM events
2.过滤
过滤的实现相对复杂一点,需要使用查询定义界面的“新增参数”功能,定义参数的名称、标题和类型。参数名字会以出现在sql语句中,例如:SELECT * FROM events where action like ‘{{ action }}%’
。
支持六种参数类型:文本、数字、下拉选择、基于其它查询结果集的下拉选择、日期、日期范围等。下拉选择参数需要定义待选值,每行一个待选值的方式定义;基于其它查询结果集的下拉选择则需要设定另一个待选查询,待选查询返回结果集若包含name和value列,则下拉选择显示name列内容,返回对应value列内容,否则显示和返回第一列内容。日期范围会返回两个标记,“参数名称.start”和“参数名称.end”表示所选日期的开始和结束,例如:SELECT a, b c FROM table1 WHERE relevant_date >= ‘{{ myDate.start }}’ AND table1.relevant_date <= ‘{{ myDate.end }}’
。
可以通过URL参数指定参数值,例如:SELECT * FROM table WHERE field = ,可以通过https://localhost:5000//queries/1234?p_param=100
方式指定参数param值为100。
3.报表过滤
报表过滤应用在一个报表具有多个部件,部件间有相同的过滤参数,为避免每个部件重复相同的筛选操作,故可以把部件过滤提升至报表过滤。在报表右上角“编辑”功能里,勾选“使用报表级别过滤”即可。