1. 概述
1.1 版本
FineBI 版本 | 功能变动 |
---|---|
6.0 | - |
6.0.16 | 过滤组件绑定参数界面优化 |
1.2 问题描述
由于原始表数据量过大,有时可能会导致内存或磁盘占满的情况,因此通常需要使用 SQL 中的 where 语句,加过滤条件来控制数据量。而 where 语句后面加上固定的数值会使得取数不灵活,此时可以使用参数动态控制 BI 取数的数据量,例如取不同门店的数据。
文本过滤组件的传参分为两种:
第一种为当文本过滤组件为空时,数据表中也无数据,在文本下拉框中可以输入自己要的字段,例如输入「11011」并回车,数据表自动过滤出「店号」为「11011」的数据,如下图所示:
第二种为文本可下拉选择字段筛选,不需要手动输入,并且支持勾选全选,效果如下图所示:
1.3 实现思路
示例一:
1)添加 SQL 数据集,并在 SQL 语句中配置「店号」参数。
2)仪表板中使用「文本下拉过滤组件」绑定参数。
示例二:
1)添加 SQL 数据集,并在 SQL 语句中配置「店号」参数。
2)添加 SQL 数据集,不配置参数。
3)仪表板中使用「文本下拉过滤组件」绑定参数,并将不配置参数的数据集下的「店号」字段作为过滤组件下拉选项。
注:目前仅有文本过滤组件和日期类过滤组件提供传参功能。
2. 示例一:手动输入过滤
2.1 创建 SQL 数据集
1)若同时拥有「直连数据」和「抽取数据」功能,则需要在数据列表中切换为「直连数据」,然后选择「公共数据」,点击进入分组下业务包,点击「添加数据集>添加 SQL 数据集」,如下图所示:
注:只有 数据处理用户 可以创建 SQL 数据集。
2)首先需要在 SQL 数据集中创建「店号」参数。设置表名为「门店信息」,输入带参数的 SQL 语句 :select * from NEW_DIAN where 店号 in ('${店号参数}'),即设置「店号」为参数并命名为「店号参数」,点击参数设置「刷新」,并选择默认值为 11011,点击「确定」保存,如下图所示:
注1:默认值可任意选择,只影响预览数据。
注2:SQL 参数写法可参考:SQL 数据集参数写法示例。
若「参数类型」为「文本」,希望预览时默认值展示多个,可输入例如:11011','11012,则预览界面显示对应两条数据,如下图所示:
注:多个默认值格式为:参数值1','参数值2 。
2.2 制作分组表
制作一个组件,图表类型选择「分组表」后,拖入字段,如下图所示:
2.3 过滤组件仅绑定参数
1)添加仪表板,将制作的分组表拖进仪表板中。并新增文本下拉过滤组件,如下图所示:
2)勾选「绑定参数」,在设置中绑定SQL参数「店号参数」,如下图所示:
注:普通用户要有一个有参数的数据集的权限之后,才会出现「绑定参数」的按钮。由于所有 SQL 数据集获取的参数都在绑定参数下拉框中,因此参数最好不要用一样的参数名。
2.4 效果查看
效果详情请参见本文 1.2 节。
3. 示例二:下拉框选择过滤
过滤组件只绑定参数只能通过手输进行过滤,若是需要有下拉框则需要绑定字段,来提供下拉框内容。本节讲述如何在实现绑定参数的同时,实现下拉框选择字段效果。
实现要求:被绑定字段所在的表不能有已绑定的参数「店号参数」。
3.1 数据准备
3.1.1 创建有参数的 SQL 数据集
1)数据处理用户 选择「公共数据」,进入业务包,点击「添加数据集>添加 SQL 数据集」,如下图所示:
2)首先需要在 SQL 数据集中创建「店号」参数。
设置表名为「门店信息」,输入带参数的 SQL 语句: select * from NEW_DIAN where 店号 in ('${店号参数}'),即设置「店号」为参数并命名为「店号参数」,点击参数设置「刷新」,并选择默认值为 11011,点击「确定」保存,如下图所示:
注1:默认值可任意选择,只影响预览数据。
注2:SQL 参数写法可参考:SQL 数据集参数写法示例。
若「参数类型」为「文本」,希望预览时默认值展示多个,可输入例如:11011','11012,则预览界面显示对应两条数据,如下图所示:
注:多个默认值格式为:参数值1','参数值2 。
3.1.2 创建无参数的 SQL 数据集
此步骤主要是为了获取完整的「店号」数据,实现下拉框能选择所有的店号。
使用同样的数据表,输入 :select * from NEW_DIAN,创建无参数的 SQL 数据集,如下图所示:
3.1.3 添加数据
创建分析主题并添加两张数据表。如下图所示:
3.2 制作分组表
制作一个组件,图表类型选择「分组表」后,拖入字段,如下图所示:
3.3 过滤组件绑定参数和字段
1)添加仪表板,将制作的分组表拖进仪表板中。并新增文本下拉过滤组件,如下图所示:
2)勾选「绑定参数」,在设置中绑定SQL参数「店号参数」,如下图所示:
3)为了下拉框展示所有店号数据,因此需要使用「门店表(无参数)」的店号字段,将其拖入过滤组件字段栏下 ,如下图所示:
注 1:普通用户要有一个有参数的数据集的权限之后,才会出现「绑定参数」的按钮。
注 2:此处不用带参数的门店表的店号字段拖入文本过滤组件中,是因为此时「门店」表取过来数据库的数据,是「店号」为 SQL 数据集中设置的默认值 11011 的店号信息。所以文本框下拉可选的值也只有11011,不包括所有店号的字段值。
3.4 通过过滤店名过滤店号
此时,用户可能会觉得,使用下拉框过滤选择的店号为 ID 字段,不容易记忆,而且已有数据为一个「店号」对应一个「店名」,希望能直接选择店名进行过滤。
可点击下拉三角,出现实际值设置项。拖入相关字段进行设置,如下图所示:
此时,在进行过滤时,表面上是过滤店名,实际是对店号进行过滤。
3.5 效果查看
详情请参加本文 1.2 节。
4. 注意事项
过滤组件有两种用法:上文介绍的参数绑定的用法和 普通过滤组件 的用法。
在「示例二」的默认情况下过滤组件的功能为参数,即绑定字段的过滤组件控制范围只能过滤带参数的表「门店」制作的数据表组件,如下图所示:
若想要过滤组件在满足示例二效果同时,还能过滤绑定字段所在的不带参数的「门店维度」表制作的组件。可去「管理系统>系统管理>常规」中的「BI参数」设置框,开启「SQL参数控件过滤生效」按钮,如下图所示: