# 筛选器

筛选器可让您优化数据。您可将筛选器添加至任务、报告、对象和用户。它们可以是静态或动态的。



## 类型

下面是使用筛选器的一些方式：

* 任务：筛选发布任务以仅共享来自当前季度的数据。
* 报告：筛选报告以仅显示和前 5 个销售员相关的信息。
* 对象：筛选饼图，该饼图将食品杂货销售情况详细化，以仅显示水果销售情况。
* 用户：筛选用户组以仅查看和其地理位置相关的数据。

静态筛选器是从 QlikView 或 Qlik Sense 字段值列表中选择的。您必须手动编辑筛选器方可更改值。

动态筛选器使用 QlikView 或 Qlik Sense 表达式和搜索。表达式必须使用 QlikView 或 Qlik Sense 规则和语法，并返回单个值。将会计算表达式，然后结果将用于筛选数据。搜索利用 QlikView 或 Qlik Sense 中提供的各种搜索。 您不必修改动态筛选器来获得新值。

## 筛选器评估

在生成每个报告之前会验证筛选器。将根据文档数据检查任务、用户和报告筛选器。如果它们无效，您将看到一个错误，说明这些筛选器无法在任务执行页面上应用。这发生在报告条件计算之前，以及报告生成之前。Qlik NPrinting 将按顺序应用筛选器来解决筛选器问题，而初始状态中任何字段上都没有选择项。

如果您只有一个筛选器，则按如下方式进行评估：

1. 在选中覆盖值的情况下，为所有字段清除所有选择。
2. 使用计算值计算每个字段的表达式。
3. 将基于值和搜索的选择应用于所有字段。

当您有多个筛选器时，将按以下顺序评估它们：

1. 依据所有任务筛选器的排序顺序一次应用一个任务筛选器。
2. 所有用户筛选器依据其排序顺序一次应用一个。
3. 所有报告筛选器依据其排序顺序一次应用一个。
4. 所有对象筛选器依据其排序顺序一次应用一个。

## 规则

Qlik NPrinting 筛选规则通过有限数量的选项提供可预测的行为：

* 首先计算评估值，以便管理静态值。
* 筛选器不一定会覆盖过去的选择。不存在严格的层级。
* 将按顺序分析每个筛选器：任务 -&gt; 用户 -&gt; 报告 -&gt; 对象。
* 不同层级中的筛选器字段的值将会相交。
* 如果因为相交而提供空结果，筛选器链将变得无效。
* 对于在应用程序中可使用多少任务、报告、对象或用户筛选器没有限制。但是，只能将一个对象筛选器应用至单个对象。
* 如果在不可行的选择中应用筛选器结果，则会返回特定错误：“无法对当前文档数据应用筛选器 `{0}`。带有求值的请求字段为：`{1}`”，

此特定的标记允许您更改这些行为：覆盖值。和特定筛选器字段相关的该标记可让您在特定链层级上清除特定字段上的选择。您也可改为添加其他值。

信息注释筛选器中的字段选择和变量设置不会相互影响。但它们会影响评估链中的筛选器。

## 筛选结果的示例

这些示例显示在选中或取消选中覆盖值的情况下，为相同字段的不同值分配至特定实体的筛选器：

### 示例 1

* 任务筛选器：Country = Italy、Spain
* 用户筛选器：-
* 报告筛选器：Country = Italy、Germany
* 结果筛选器：Country = Italy

### 示例 2

* 任务筛选器：Country = Italy、Spain
* 用户筛选器：覆盖值 = 为 Country 选中
* 报告筛选器：Country = Italy、Germany
* 结果筛选器：Country = Italy、Germany

### 示例 3

* 任务筛选器：Country = Italy、Spain
* 用户筛选器：Country = Italy、Germany
* 报告筛选器：覆盖值 = 为 Country 选中
* 所得筛选器：Country = 所有国家/地区

### 示例 4

* 任务筛选器：Country = Italy
* 用户筛选器：-
* 报告筛选器：Country = Germany
* 结果筛选器：空

### 示例 5

* 任务筛选器：Country = Italy
* 用户筛选器：覆盖值 = 对 Country 为 True
* 报告筛选器：Country = Germany
* 结果筛选器： Germany

## 选择值

在值下拉菜单中，您可从以下项目选择：

* 值为：如果您想选择字符串则使用此选项。例如，如果您想在Country字段中选择 USA。
* 数值为：在 QlikView 和 Qlik Sense 中，所有字段值都可能为双值。字段值可具有数值和文字值。示例为可具有数值 40908 以及文字表示“2011-12-31”的日期。如果您希望选择数值，可使用该选项。
* 计算值：如果您希望插入需要计算的表达式，可使用该选项。它必须返回单个值。
* 高级搜索：如果要使用 QlikView 或 Qlik Sense 高级搜索来选择值，请使用此选项。

如果右侧出现完全缓存通知，则表示 Qlik NPrinting 缓存包含字段的所有值。这意味着当您开始在值对话框中键入时，Qlik NPrinting 会搜索与字符串匹配的所有值。

Qlik NPrinting 缓存仅存储来自具有大量不同值的 QlikView 字段的前 1000 个值。在该情况下，完全缓存的绿色标签不会出现。您将改为看到值字段右侧的搜索按钮。键入您要查找的字符串或字符串的一部分。单击搜索以强制 Qlik NPrinting 查找关联的 QlikView 文档中的字符串。如果存在大量不同的值，您必须手动插入要筛选的整个值。

## 创建静态筛选器

进行以下操作：

1. 选择应用程序，然后选择筛选器。

2. 单击创建筛选器。

3. 为您的筛选器输入名称。

4. 从应用程序下拉列表选择应用程序。

5. 单击创建。

6. 在筛选器菜单中单击字段。

7. 单击添加字段。

8. 在连接下，选择您的连接。

9. 在名称下方，选择字段名称。

10. 您选择覆盖值：如果您选择该复选框，其他筛选器应用在同一字段上的所有选择都将移除并由当前筛选器中设定的字段值取代。如果未选中属于默认设置的覆盖值，通过应用在所选字段上的不同筛选器中的字段值的相交，将创建新的筛选器。

    信息注释您可通过创建具有空值的筛选器并选中覆盖值复选框，为该字段清除所有选择。

### 将值添加至字段

进行以下操作：

1. 从下拉列表中选择值类型：

   * 值为
   * 数值为
   * 评估值
   * 高级搜索

2. 根据值类型，您可以从列表中选择、开始键入字符串或键入表达式。请参阅： [选择值](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/ReportsDevelopment/Static-dynamic-filters.htm#Selectin)

3. 如果您希望添加第二个值，单击添加值。

   出现新的空行。

4. 添加第二个值。

5. 单击创建。

## 使用选择排除值创建筛选器

创建筛选器时，可以使用选择排除 复选框排除特定值。例如，您可能希望排除某些年份或地理区域的数据。这与 Qlik Sense 和 QlikView 中的选择排除运算类似。

进行以下操作：

1. 选择应用程序，然后选择筛选器。

2. 单击创建筛选器。

3. 为您的筛选器输入名称。

4. 从应用程序下拉列表选择应用程序。

5. 单击创建。在筛选器菜单中单击字段。

6. 单击添加字段。在连接下，选择您的连接。

7. 在名称下方，选择字段名称。

8. 选择值类型。

9. 选择要排除的值。

   例如，如果字段是 Country，则可以排除 Sweden 和 Italy。

10. 单击选择排除复选框。

11. 单击创建。

## 使用评估值创建动态筛选器

您可使用 QlikView 和 Qlik Sense 表达式来计算要在筛选器中使用的值。每个表达式必须返回单个值并使用 QlikView 或 Qlik Sense 语法。例如，您可使用表达式来计算去年的值，并将它和筛选器中的年份字段比较。

进行以下操作：

1. 新建筛选器。

2. 单击值选项卡，从下拉列表中选择计算值。

   此选项将您的表达式发送到 QlikView 或 Qlik Sense，后者将计算结果并将其返回以在筛选器中使用。

3. 在值框中输入表达式。

   例如，要检索去年的值，可输入 =Year(now())-1。

4. 您可以单击添加值添加另一个表达式。为同一字段添加多个值会创建逻辑“`OR`”关联。筛选器将保留匹配一个或两个值的数据。

5. 单击创建。

## 使用高级搜索创建动态筛选器

您可以使用 QlikView 和 Qlik Sense 高级搜索来选择一组要在筛选器中使用的值。

支持多种类型的高级搜索：

* 文本：选择与文本完全匹配的所有值。
* 通配符：`*`、`?` 和 `^` 可在文本搜索中用作通配符。
  * `*`：0 个或多个未定义字符的占位符。
  * `?`：一个未定义的单个字符的占位符。
  * `^`：占位符，指定下一个字符是单词的开头。
* 数字：如果搜索以 `<` 或 `  > ` 开头，则将其作为数字搜索进行计算
* 表达式：如果搜索以 `=` 开头，则将其作为表达式搜索进行计算。表达式的结果被解释为布尔值：
  * 0=false
  * 任何其他值=true

如果没有使用覆盖值，您的高级搜索结果将与之前筛选器中在字段上选择的值相交。表达式搜索生成的值集取决于当前选择，类似于计算值的方式。如果要忽略应用程序或文档中的当前选择，则应使用：

* Qlik Sense：[集合分析和集合表达式](https://help.qlik.com/zh-CN/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)
* QlikView：[集合分析和集合表达式](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/ChartFunctions/SetAnalysis/set-analysis-expressions.htm)

有些动态搜索类型不受支持。以下情况可能会返回意外结果：

* 普通：将插入的文本与字段值中单词的开头相匹配的搜索。使用通配符搜索，您将获得更准确的结果：`*^text to search*` 。
* 模糊：以 `~` 开头的搜索。在 QlikView 和 Qlik Sense 中，模糊搜索会选择屏幕上显示的列表中的第一个值。在 Qlik NPrinting 中，它会选择列表中的每个值。
* 复合搜索：将搜索文本括在 `( )` 之间，并使用 `|`、`&` 和 `^` 等运算符混合其他搜索类型。

进行以下操作：

1. 新建筛选器。

2. 转到值区域，然后从下拉列表中选择高级搜索。

   该选项将在 QlikView 和 Qlik Sense 中对所选字段进行搜索，并返回供筛选器使用。

3. 在“值”框中输入支持的搜索之一。

   例如，要检索除当前年份以外的所有年份的数据，请输入 `=Year<Year(now())` 。

4. 您可以单击添加值添加另一个高级搜索。为同一字段添加多个值会创建逻辑“OR”关联。筛选器将保留匹配一个或两个值的数据。

5. 单击创建。

## 创建基于变量的筛选器

您可在筛选器中使用变量，并在报告生成期间直接设置变量的值。这将暂时覆盖变量在 QlikView 或 Qlik Sense 中具有的初始值。

基于变量的筛选器可以是静态或动态的。可将它们添加至报告、任务、用户和对象。

例如：您可创建具有相同图表对象的两年个不同报告，但是其根据变量值显示不同的结果。或者您可通过基于不同变量的筛选器，用两个发布任务创建一个报告。

进行以下操作：

1. 新建筛选器。

2. 单击值选项卡，并单击创建变量。

3. 从下拉菜单中选择连接。在名称下，选择一个维度。

4. 在值下，键入现有维度。

   如果您希望在应用变量之前评估变量，单击评估复选框。

5. 单击创建。

## 将筛选器添加至报告

您必须先创建筛选器，然后才可将它们添加至报告、任务、对象或用户。您无法在另一实体内部新建筛选器。

进行以下操作：

1. 创建新报告，或打开现有报告。
2. 单击主菜单中的筛选器。
3. 从可用项目中选择您需要的筛选器。
4. 单击 the 下一步 icon 将筛选器移动到所选项目列中。
5. 单击添加筛选器。

## 将筛选器应用至对象

在您希望筛选特定表格或图像时，可使用对象筛选器。例如，如果您有不带筛选器的报告，但是希望添加仅显示去年销售情况的表格，则可应用对象筛选器。

对象只能有单个筛选器。如果您需要向对象添加复杂筛选器，则必须创建唯一的筛选器，然后才能编辑报告模板。

信息注释对象筛选器不会影响添加标题属性。

进行以下操作：

1. 在报告屏幕上，单击您的报告。

2. 单击编辑模板按钮打开 Qlik NPrinting Designer 模板编辑器。

3. 在左侧窗格上，右键单击您要筛选的对象类型，然后选择添加对象。

   您可筛选表格和图像。

4. 将会打开新的窗口。选择您要筛选的对象，然后单击确定。

5. 将您的新对象从左侧窗格拖动至您的报告模板。

6. 在属性窗格上，转到筛选器并单击 ¥。

7. 将打开新的窗口。选择您要使用的筛选器，然后单击确定。

   信息注释如果您不小心选取了错误的筛选器，可单击 ¥ 旁的橡皮擦图标以从对象删除所有筛选器。

8. 单击预览。

   您的报告对象将仅显示和筛选器相关的信息。

### 导入和用户相关的对象筛选器

由于性能原因，和用户关联的对象筛选器不会自动包括在 Qlik NPrinting Designer 中。导入和数千个用户关联的筛选器需要较长时间，并且可导致 Qlik NPrinting 停止。

您可通过编辑 webengine.config 文件来更改该行为。

警告注释您应当始终备份自己的 Qlik NPrinting 储存库，然后再编辑 .config 文件。有关更多信息，请参阅[备份 Qlik NPrinting](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/DeployingQVNprinting/Backing-up-Qlik-NPrinting.htm)。

进行以下操作：

1. 打开 webengine.config 文件。

2. 取消注释行 `<!-<add key="include-user-filters" />->`。

3. 关闭并重新打开 Qlik NPrinting Designer。

4. 筛选器的列表现在将上传您之前保存在储存库中的所有筛选器。

   这可能需要较长时间，具体取决于存储的筛选器数目。

如果您不希望编辑 webengine.config 文件，可手动导入特定用户筛选器。可以两种方法实现此操作：

* 从所有用户删除筛选器关联。
* 用相同的字段和值新建和任何用户都不关联的筛选器。

### 配置报告行为

您可在模板中为图表和表格配置报告处理对象筛选器错误的方式。打开报告，向下滚动至错误处理，并从两个选项进行选择：

* 生成报告。无效内容将由占位符图像取代。

  无效图表将由占位符图像取代。它们具有灰色背景和黑色覆盖文本，其内容为“无效选择”。这些图像根据您报告模板中的最大大小设置缩放。无效的表格替换为没有覆盖文本的空表格。

* 请勿生成报告。报告生成将失败直至问题得到解决。

  整个报告将在生成上失败。用户将无法查看它。

在 Qlik NPrinting April 2018 及更高版本中，新报告的默认行为是添加占位符图像。如果您使用 Qlik NPrinting February 2018 或更早版本，并更新至较新的版本，您的报告将保留之前已存在的故障行为。

### 配置空内容

空内容显示为占位符图像。它们具有黑色覆盖文本，其内容为“无效选择”。可更改该覆盖文本。

警告注释您应当始终备份自己的 Qlik NPrinting 储存库，然后再编辑 .config 文件。有关更多信息，请参阅[备份 Qlik NPrinting](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/DeployingQVNprinting/Backing-up-Qlik-NPrinting.htm)。

进行以下操作：

1. 打开 scheduler.config 配置文件。
2. 找到 "empty-content-text" 标签。取消注释该行，并编辑值。
3. 重新启动 Qlik NPrinting 排程器服务。

更改即应用至所有空内容占位符图像。

## 故障排除

### 包含我的循环报告的文件夹显示了带有“失败”标签的报告

可能的原因

您的报告包含不兼容的筛选器。

建议的操作

检查与报告相关的筛选器。例如，您有 2 个筛选器：

* 第一个容器 → 年份：2012 年、2013 年
* 第二个容器 → 年份：2014 年

如果同时使用这两个筛选器，筛选器之间的交集将产生一个空集。

### 我的报告无法生成

可能的原因

您的报告在任务、用户、报告和对象筛选器层次结构中使用相同的维度。

建议的操作

更改或删除任何使用相同维度的筛选器。

## 了解详情

* [循环报表](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/ReportsDevelopment/Cycling-your-reports.htm)
* [示例文件](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/Examples/Examples.htm)
* [HTML 报表](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/HTMLReports/IntroHTML.htm)

### 相关流程

* [HTML 报表](https://help.qlik.com/zh-CN/nprinting/May2026/Content/NPrinting/HTMLReports/IntroHTML.htm)