1. 概述
1.1 预期效果
在[直连]文本组件绑定参数中介绍了在直连数据库时,可通过过滤组件,使用参数动态控制 BI 取数的数据量。在上述文档中,当文本过滤组件为空时,数据表中无数据,那么如何实现当过滤组件为空时,显示数据表中所有数据呢?
例如门店性质下拉框中不选择参数值时能够查询出数据表中的全部值呢,如下图所示:
1.2 实现思路
1)添加 SQL 数据集,并在 SQL 语句中配置「店性质」参数,且 SQL 中需要增加 parameter 语句来保证参数为空时选择全部。
2)添加 SQL 数据集,不配置参数,主要是为了获取完整的「店性质」数据,实现过滤组件下拉框能选择所有的店性质。
3)仪表板中使用「文本下拉过滤组件」绑定参数,并将不配置参数的数据集下的「店性质」字段作为过滤组件下拉选项。
注:目前仅有文本过滤组件和日期类过滤组件提供绑定参数功能。
2. 操作步骤
2.1 创建带参数的 SQL 数据集
1)若同时拥有「实时数据」和「抽取数据」功能,则需要在数据列表中切换为「实时数据」,然后选择「数据准备」,点击进入分组下业务包,点击「添加表>添加 SQL 数据集」,如下图所示:
注:只有 数据处理用户 可以创建 SQL 数据集。
2)输入带参数的SQL语句:select * from new_dian where 1=1 <parameter> and 店性质 in ('${店性质}' ) </parameter>,命名该业务包为门店表(有参数)。
注:此处也可使用SQL:select * from new_dian where 1=1 ${if(len(店性质) == 0,"","and 店性质 in ('" + 店性质 + "')")}
SQL 语句说明:
「where 1=1」表示条件永真,防止没有之后的参数条件时,where多出而导致出错
<parameter> and 店性质 in ('${店性质}' ) </parameter>为添加的店性质参数,该添加的「parameter」用于在中间参数为空时,获取店性质的所有值。
点击「确定」保存该 SQL 数据集。
2.2 创建不带参数的 SQL 数据集
此步骤主要是为了获取完整的「店性质」数据,实现下拉框能选择所有的店性质。
1)创建一个不添加参数的 SQL 数据集select * from NEW_DIAN,命名为门店表(无参数),如下图所示:
2.3 添加组件
新建一张仪表板,添加组件并拖拽刚刚创建的带参数的 SQL 数据集字段,即门店表(参数)字段到明细表中,如下图所示:
2.4 设置文本过滤组件
添加文本下拉过滤组件,因为想要在过滤组件中能够选择店性质的分类,因此将不带参数的门店表下的「店性质」字段拖入该过滤组件中,并为其绑定之前创建的带参数的 SQL 数据集中创建的 店性质」参数,如下图所示:
点击「确定」保存,进入仪表板界面。
2.5 效果查看
可以看到,文本过滤组件中不选择任何值,即参数为空时,该店性质字段显示为所有值,包括自有店、管理店及其他店的数据,如下图所示:
在点击门店性质过滤组件选择「管理店」时,下面的明细表通过参数带入 SQL 执行实现了管理店的过滤效果,如下图所示: