过滤器

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

类型

下面是使用过滤器的一些方式:

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

QlikViewQlik Sense 字段值的列表中选择静态过滤器。您必须手动编辑过滤器方可更改值。

动态过滤器使用 QlikViewQlik Sense 表达式和搜索。表达式必须使用 QlikViewQlik Sense 规则和语法,并返回单个值。将会计算表达式,然后结果将用于过滤数据。搜索利用 QlikViewQlik Sense 中的各种搜索变量。您不必修改动态过滤器即可获得新的值。

过滤器计算

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

如果您设置了单个过滤器,则它将按如下方式计算:

  1. 在选中覆盖值的情况下,为所有字段清除所有选择。
  2. 通过计算的值计算每个字段的表达式。
  3. 根据所有字段的值和搜索应用选择项。

如果您设置了多个过滤器,则它们将按如下顺序计算:

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

规则

Qlik NPrinting 过滤器规则通过有限数目的选项提供可预测的行为。

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

存在一个特定的标记可让您更改这些行为:覆盖值。和特定过滤器字段相关的该标记可让您在特定链层级上清除特定字段上的选择。您也可改为添加其他值。

过滤结果的示例

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

示例 1

  • 任务过滤器:Country = ItalySpain
  • 用户过滤器:-
  • 报表过滤器:Country = ItalyGermany
  • 结果过滤器:Country = Italy

示例 2

  • 任务过滤器:Country = ItalySpain
  • 用户过滤器:覆盖值 = 为Country选中
  • 报表过滤器:Country = ItalyGermany
  • 结果过滤器:Country = ItalyGermany

示例 3

  • 任务过滤器:Country = ItalySpain
  • 用户过滤器:Country = ItalyGermany
  • 报表过滤器:覆盖值 = 为Country选中
  • 所得筛选器:Country = 所有国家/地区

示例 4

  • 任务过滤器:Country = Italy
  • 用户过滤器:-
  • 报表过滤器:Country = Germany
  • 结果过滤器:空

示例 5

  • 任务过滤器:Country = Italy
  • 用户过滤器:覆盖值=对于 Country 为 True
  • 报表过滤器:Country = Germany
  • 结果过滤器: Germany

选择值

下拉菜单中,您可从以下项目选择:

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

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

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

创建静态过滤器

进行以下操作:

  1. 选择应用程序,然后选择过滤器
  2. 单击创建过滤器
  3. 为您的过滤器输入名称
  4. 应用程序下拉列表选择应用程序。
  5. 单击创建来创建报表。
  6. 在过滤器菜单中单击字段
  7. 单击添加字段
  8. 连接下,选择您的连接。
  9. 名称下方,选择字段名称。

  10. 您可选择覆盖值:如果您选择该复选框,其他过滤器应用在同一字段上的所有选择都将被移除并由当前过滤器中设定的字段值取代。如果未选中覆盖值,则会根据应用在所选字段上的不同过滤器的字段值的交集,创建一个新的过滤器。

    备注: 您可通过创建具有空值的过滤器并选中覆盖值复选框,为该字段清除所有选择。

将值添加至字段

进行以下操作:

  1. 从下拉列表中选择值类型:
    • 值为
    • 数值为
    • 计算值
    • 高级搜索
  2. 根据值类型,您可从列表中进行选择、开始键入字符串或键入表达式。请参阅: 选择值
  3. 如果您希望添加第二个值,单击添加值

    出现新的空行。

  4. 添加您的第二个值。
  5. 单击创建

使用计算的值创建动态过滤器

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

进行以下操作:

  1. 新建过滤器
  2. 转到区域,从下拉列表中选择计算值

    该选项会将您的表达式发送至 QlikViewQlik Sense,后者将计算结果并将其返回,以在过滤器中使用。

  3. 框中输入表达式。

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

  4. 您可单击添加值来添加另一个表达式。为同一字段添加多个值会创建逻辑 "OR" 关联。过滤器将保留匹配一个或两个值的数据。
  5. 单击创建

通过高级搜索创建动态过滤器

您可使用 QlikViewQlik Sense 高级搜索来选择一组要在过滤器中使用的值。

支持数种类型的高级搜索:

  • 文本:选择准确匹配文本的所有值。
  • 通配符:*?^ 可用作文本搜索中的通配符。
    • *:0 或更多未定义的字符的占位符。
    • ?:用于一个未定义的单个字符的占位符。
    • ^:指定下个字符为单词开头的占位符。
  • 数值:如果搜索以 < > 开始,将把它计算为数值搜索
  • 表达式:如果搜索以 = 开始,将把其计算为表达式搜索。表达式的结果被解释为布尔值:
    • 0=false
    • 任何其他值=true

如果没有使用覆盖值,则您的高级搜索结果会与之前过滤器的字段上选择的值相交。通过表达式搜索生成的值集取决于当前选择项,和计算的值的计算方式相似。如果您希望忽略应用程序或文档中的当前选择项,您应当使用:

存在不支持的动态搜索类型。以下可能返回意外结果:

  • 普通:将插入的文本与字段值中单词的开头匹配的搜索。通过通配符搜索您将得到更准确的结果:*^要搜索的文本*
  • 模糊:以 ~ 开头的搜索。在 QlikViewQlik Sense 中,模糊搜索在屏幕上显示的列表中选择第一个值。在 Qlik NPrinting 中,它选择列表中的每个值。
  • 复合:搜索包含在 ( ) 之间搜索文本,并使用例如 |&^ 的通配符来混合其他搜索类型。

进行以下操作:

  1. 新建过滤器。
  2. 转到区域,从下拉列表中选择高级搜索

    该选项将在 QlikViewQlik Sense 中所选的字段上执行搜索,并且其返回以在过滤器中使用。

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

    例如,要检索除了当年的每年数据,输入 =Year<Year(now())

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

将过滤器添加至新报表

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

进行以下操作:

  1. 新建报表,或打开现有报表。
  2. 单击主菜单中的过滤器
  3. 可用项目中选择您需要的过滤器。
  4. 单击 Next以将过滤器移动至所选项目列中。
  5. 单击添加过滤器

将过滤器应用至对象

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

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

进行以下操作:

  1. 报表屏幕上,单击您的报表。
  2. 单击编辑模板按钮打开 Qlik NPrinting Designer 模板编辑器。
  3. 在左侧窗格上,右键单击您要过滤的对象类型,然后选择添加对象

    您可过滤表格和图像。

  4. 将会打开新的窗口。选择您要过滤的对象,然后单击确定
  5. 将您的新对象从左侧窗格拖动至您的报表模板。
  6. 属性窗格上,转到过滤器并单击 ¥
  7. 将打开新的窗口。选择您要使用的过滤器,然后单击确定
    备注: 如果您不小心选取了错误的过滤器,可单击 ¥ 旁的橡皮擦图标以从对象删除所有过滤器。
  8. 单击预览

    您的报表对象将仅显示和过滤器相关的信息。

导入和用户相关的对象过滤器

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

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

进行以下操作:

  1. 打开 webengine.config 文件。
  2. 取消注释行 <!-<add key="include-user-filters" />->
  3. 关闭并重新打开 Qlik NPrinting Designer
  4. 过滤器的列表现在将上传您之前保存在储存库中的所有过滤器。

    这可能需要较长时间,具体取决于存储的过滤器数目。

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

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

配置报表行为

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

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

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

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

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

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

配置空内容

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

进行以下操作:

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

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

故障排除

包含我的循环报表的文件夹将显示具有 FAILED 标签的报表

Possible cause  

您的报表包含不兼容的过滤器。

Proposed action  

请检查与报表相关的过滤器。例如,您有以下 2 个过滤器:

  • 第一个包含 → Year: 2012, 2013
  • 第二个包含 → Year: 2014

如果您使用两个过滤器,则过滤器的交集将是一个空集。

我的报表生成失败。

Possible cause  

您的报表在任务、用户、报表和对象过滤器层级中使用相同维度。

Proposed action  

请更改或移除使用相同维度的任何过滤器。