---
order: 7
navTitle: 过滤
indexTitle: 数据过滤
---
# 仪表板组件数据过滤设置

过滤是对组件中计算的数据进行限制和筛选，将满足过滤条件的数据显示到计算结果中。提供了2种过滤类型：

- 过滤器：对原始数据行进行过滤，过滤出符合条件的数据，类似于SQL中的where条件
- 筛选器：对结果集进行筛选，类似于SQL中的having条件，只能对组件内存在的分组字段进行筛选

如在柱形图中展示的是2010年10月销售数量Top10产品：

![示例](./images/2020-03-17-18-09-06.png)

示例地址：[首页看板](https://demo.succbi.com/v5/DEMO/ana?:open=gtnQ2JTPUwLEX7QoKfonOG&:play=true)

**操作步骤**

1. **查看2020年10月份的数据：** 参考文档[柱形图](../../../components/chart/column-chart.md)完成对柱形图的取数，再将【销售日期】字段中【年月】拖入到**属性栏**>**数据**>**过滤器**中，选择【2010年10月】

![过滤](./images/2020-06-18-10-48-11.gif)

2. **显示销售数量前10的产品大类：**在**属性栏**>**数据**中，【大类名称】数据字段右键或点击下拉选项选择**添加到筛选器**。在筛选器页面选择**前N个**，根据【销售数量】的总计降序，筛选**前10个**

![筛选](./images/2020-06-18-10-54-11.gif)

## 过滤器{#filter}

**过滤器**是对原始数据行进行过滤，过滤出符合条件的数据，类似于SQL中的where条件。使用过滤器进行过滤时，提供了2种方式：

1. [字段过滤](#%e5%ad%97%e6%ae%b5%e8%bf%87%e6%bb%a4)
2. [表达式过滤](#%e8%a1%a8%e8%be%be%e5%bc%8f%e8%bf%87%e6%bb%a4)

### 字段过滤{#field-filtering}

字段过滤，是对数据模型字段的过滤，将符合过滤条件的数据保留。数据字段添加到字段过滤中，有三种操作方式：

- 将组件内引用的数据字段或数据区的数据字段直接拖拽到过滤器区域中
- 在数据模型字段上右键选择**添加到过滤器**
- 在数据模型字段上点击下拉选项选择**添加到过滤器**

在过滤器中，选择字段和操作符设置过滤条件，在过滤器选择框中可以通过点击下拉选项来切换其他字段，过滤器选择框的各个功能如下：

- 字段选择框：提供了当前选择字段所在数据模型的字段列表，可以选择模型中的其它字段
- 操作符选择框：可以通过点击的方式，切换操作符。操作符会根据选择的字段自动生成，选择的过滤字段类型不一样，可选择的操作符也不一样
- 条件编辑框：可以下拉选择或者手动输入的方式，编辑条件结果。如果这两种方式不能满足需求，也可以通过表达式的方式编辑条件结果，同时可引用当前仪表板中定义的参数，可参考[完成率分析](https://demo.succbi.com/v5/DEMO/app/%E6%9C%8D%E9%A5%B0%E9%94%80%E5%94%AE%E9%A9%BE%E9%A9%B6%E8%88%B1.app?id=%E5%AE%8C%E6%88%90%E7%8E%87%E5%88%86%E6%9E%90)（可参考该demo中本年度销售计划的过滤器），表达式具体操作可参考[表达式](../../../../../exp/README.md)

![字段过滤](./images/2020-06-18-10-58-12.gif)

各类型数据可选择操作符如下：
| 数据类型 | 可用操作符 |
| :---------| :-------- |
| 字符型 | 属于、不属于、等于、包含、匹配、为空、不为空、开头是、结尾是、不等于、不包含、不匹配、前N个（升序）、后N个（升序） |
| 时间型 | 属于、不属于、包含、小于、小于等于、大于、大于等于、范围、排除、为空、不为空、前N个（升序）、后N个（升序） |
| 数值型 | =、<、<=、>、>=、范围、为空、不等于、不为空、前N个（升序）、后N个（升序） |
| 表达式 | 当操作符不能满足需求时，可以通过表达式进行编辑，具体操作参考[表达式](../../../../../exp/README.md) |

### 表达式过滤{#expression-filtering}

表达式过滤，用于字段间较复杂的过滤条件，通过输入表达式，经常搭配函数或参数使用。通过点击过滤器操作区域的下拉箭头，选择**表达式**进行表达式输入，具体表达式操作可参考[表达式](../../../../../exp/README.md)。

![入口](./images/2020-03-17-20-23-27.png)

## 筛选器{#过滤器}

**筛选器**是对结果集进行筛选，类似于SQL中的having条件，只能对组件内存在的分组字段进行筛选。将数据字段添加到筛选器，提供了3种操作方式：

1. 将组件内引用的数据字段直接拖拽到筛选器区域中
2. 在数据字段上右键选择**添加到筛选器**
3. 在数据字段点击下拉选项选择**添加到筛选器**

筛选器提供了三种操作方式，这三种方式的设置之间是and关系：

1. [常规](#常规)
2. [分组筛选](#分组筛选)
3. [前N个](#前N个)

![筛选器](./images/2020-06-18-11-04-19.gif)

### 常规{#routine}

快速对数据字段筛选，通过勾选（可多选）的方式，决定数据字段中某些数据的保留或排除，如果选择的字段有层次，当选择父层次时，这时的选择类似于SQL中的匹配like；如果选择的是叶子节点或字段无层次，这时的选择类似于SQL中的in，多种选择是or的关系。

常规筛选器主要属性功能如下：

- 为空时包含所有：此功能主要针对常规选择框未勾选任何数据的情况下。当没有勾选数据项时，勾选该属性表示包含了所有的数据项；不勾选则显示出空值数据。
- 排除：勾选该属性后，表示将已经勾选的数据项排除

![常规](./images/2020-03-17-11-33-20.png)

### 分组筛选{#group-filtering}

使用**分组筛选**功能，筛选出符合分组条件的数据，可以添加多个分组条件，类似于SQL中先group by再having。

**分组筛选**提供了设置多个条件的计算关系设置属性：

- 包含以下所有条件：多个条件之间的关系是and
- 包含以下任意条件：多个条件之间的关系是or

![分组筛选](./images/2020-06-17-14-38-11.png)

### 前N个{#top-n}

使用**前N个**功能，可以根据筛选依据筛选出前N条或前N%条数据。类似于SQL中的order by。

**前N个**提供了多个操作属性：

- 筛选前：控制筛选数量。单位为**个**或 **%**，可手动输入数字或者表达式
- 依据：进行筛选的条件，通过选择模型中的字段，然后系统根据所选字段的类型智能生成相应的操作符供选择，最后选择降序或升序对数据进行排序。多个筛选依据的关系为and关系

![前N个](./images/2020-03-17-11-35-03.png)

## 继承关系{#inheritance-relationship}

组件与画布之间过滤筛选条件，当前组件上的条件应该覆盖画布上同样的条件，如果两者条件不同，那么两者的过滤筛选条件为and关系。画布与组件的**过滤器**、**筛选器**区别如下：

1. 画布：画布上的过滤筛选，作用于整个画布中的组件
2. 组件：组件中的过滤筛选，作用自身组件中数据过滤筛选。部分组件有所区分，详细区分如下：
   - 布局：布局中只有浮动面板具有**过滤器**、**筛选器**功能，作用范围可作用于自身及浮动面板中组件
   - 表格：所有表格都具有**过滤器**、**筛选器**功能，作用范围仅作用于自身组件
   - 图形：所有图形都具有**过滤器**、**筛选器**功能，作用范围仅作用于自身组件
   - 输入组件：输入组件没有**过滤器**和**筛选器**功能

三者优先级关系为（从高到低）：自身组件>画布。
