5.4 图表过滤条件

​ SaCa DataViz支持对图表和图册的数据添加过滤条件,起到筛选有效数据、过滤脏数据的作用。图表中的过滤条件与图册有所不同,其具体的区别为:

​ 在图表中设置的过滤条件,将硬性过滤掉所有不满足条件的数据,过滤掉的数据将永远显示不出来,一般用于脏数据的处理。

​ 在图册中设置的过滤条件,会根据条件的变化动态的筛选数据,将新数据重新赋值给图表,并触发图表刷新,一般用于业务的自助式数据分析。

​ 本节将介绍图表中的过滤条件,图册的过滤条件请参考本文档第6.14节。

5.4.1 过滤条件的使用方法

​ 以字符型过滤条件做例子,图表当前有若干地区(东北、华东、华中、西北……)的数据,现希望通过过滤条件,仅保留东北、华东两地区的数据,可按照如下步骤实现:

  1. 将“地区”字段拖拽到图表上方的过滤条件栏中;

  2. 在弹出的条件设置对话框中,勾选“东北”、“华东”两个字段后,点击确定;

  3. 过滤条件设置完成,图表上仅保留有“东北”、“华东”两地区的数据。

​ 操作过程如下图所示。

filter/filter-1

5.4.2 三种过滤条件的概念及使用方法

5.4.2.1 时间型过滤条件

​ 时间型过滤条件针对时间类型的字段,包括“年-月-日”、“时-分-秒”以及“年-月-日-时-分-秒”等类型。时间类型需要在数据集页面中设置,设置成功后字段前会有日历图标,如下图所示。

filter/filter-2

filter/filter-3

​ 时间类型的过滤条件包括7种:下拉列表、相对时间、时间范围、开始时间、结束时间、单个日期、特殊时间。其中,时间范围、开始时间、结束时间、单个日期均较为容易理解和使用,只需按照需求,设定相应的时间上下限或限定值即可。本文档将着重介绍下拉列表、相对时间和特殊时间3种稍微复杂一些的功能。。

5.4.2.1.1 下拉列表

​ 下拉列表用于快速选择一些常用的相对时间范围,并且在播放时已下拉列表的方式展示,左侧为目前支持的选项,右侧是播放时下拉列表中显示的项,并且可以在右侧设置条件的默认值。下拉列表的内容支持扩展,详情请参考《时间过滤条件下拉列表扩展》

filter/filter-4

5.4.2.1.2 相对时间

​ 相对时间适用于动态的、实时更新的数据。Saca Dataviz提供了年、季度、月、周、日共计5种时间粒度,供用户选择。同样地,在选择时间粒度后,就可以自行定义时间跨度,可自行设定时间跨度的长度。例如可以将下图中的“前1月”改为“前3月”等。

filter/filter-5

​ 以当前时间2020年9月21日,时间粒度为月,时间跨度为1的情况举例说明:

  1. 前1月:当前日期的上1个月(8月)的数据,即2020-08-01~2020-08-31期间的数据;

  2. 当前月:当前日期所在月(9月)的数据,即2020-09-01~2020-09-30期间的数据;

  3. 后1月:当前日期的下1个月(10月)的数据,即2020-10-01~2020-10-31期间的数据;

  4. 前1月至当前:当前日期的上1个月的1日至当前日期(9月21日)的数据,即2020-08-01~2020-09-21的数据;

  5. 当前值后1月:当前日期(9月21日)至下1个月的31日(或30日,2月为28日或29日)的数据,即2020-09-21~2020-10-31的数据;

  6. 前1月至当前月:当前日期的上1个月(8月)至当前日期所在整月(9月)的数据,即2020-08-01~2020-09-30的数据;

  7. 当前月至后1月:当前日期所在整月(9月)至当前日期的下1个月(10月)的数据,即2020-09-01~2020-10-31的数据。

    随着用户选取的时间粒度和时间跨度的变化,可以在窗口中实时预览当前所选的时间范围,如下图所示。

filter/filter-6

​ 此外,如果用户勾选了“播放时显示为下拉列表”选项,那么时间的选择将以下拉列表的形式展现,而非日历控件。二者的区别如下图所示,左侧为下拉列表,右侧为日历控件。同时,用户还可以点击“下拉列表”,在弹出的窗口中设置下拉列表的内容。

filter/filter-7

filter/filter-8

5.4.2.1.3 特殊时间

​ 特殊时间使用情形较少,适合过滤空数据。“NULL值”会筛选出空值数据,“非NULL值”会筛选出非空值数据,“所有值”会筛选出所有数据,等同于没有过滤。

filter/filter-9

5.4.2.2 数值型过滤条件

​ 数值型过滤条件针对数值类型的字段(即度量字段)。数值类型的过滤条件包括“双向”、“至多”、“至少”和“特殊值”等4类,这些功能均比较容易理解,在此不再赘述,下面着重介绍“聚合前过滤”和“聚合后过滤”。前者是针对原始数据进行过滤,后者是针对数据聚合后的结果进行过滤。为了更好的说明这两项功能,本文档以城市“烟台”的“订单数量”为例进行介绍,如下图所示为本例所使用的数据。

filter/filter-10

5.4.2.2.1 聚合前过滤

​ 在上图所示的数据集中,共有7条“烟台”的数据,对“订单数量”字段使用“聚合前过滤”,将数据范围设置为20~45,那么在图表中将直接过滤数据集中不满足条件的2条数据,剩下的5条数据参与聚合,所以在图表中,“烟台”的“订单数量”为25+21+20+40+36=142。

filter/filter-11

filter/filter-12

5.4.2.2.2 聚合后过滤

​ 依旧使用上述的数据集,如果对“订单数量”字段使用“聚合后过滤”,并限定最小值为300,选择“求和”方法。那么,由于“烟台”的“订单数量”求和值小于300,所以此时数据集中“烟台”的7条数据会全部被过滤掉,图表中也不会出现“烟台”关于“订单数量”的信息。同样被过滤掉的,还有其他“订单数量”求和值大于300的城市。

filter/filter-13

5.4.2.3 字符型过滤条件

​ 字符型过滤条件针对文字类型的字段(即维度字段)。字符类型的过滤条件包括“常规”与“通配符”2类。“常规”的用法已在第5.4.1节中展示过,下面介绍“通配符”的使用方法。

filter/filter-14

​ 通配符支持在用户选择过滤方式后,根据用户输入的关键字进行数据的过滤。用户可以在“包含”、“开头为”、“结尾为”、“精确匹配”、“为NULL”共5种过滤方式中根据需要进行选择,同时通过勾选“排除”来反转过滤结果。

​ 下面通过一个简单的案例对通配符功能进行说明。在选择“通配符”后,选择“包含”并在“请输入通配符”栏中输入“烟台”,这样的做法将过滤掉所有不包含“烟台”两个字的数据,操作方法和得到的结果如下图所示。

filter/filter-15

​ 反之,如果选择“排除”功能,将过滤掉所有包含“烟台”两个字的数据。

filter/filter-16

5.4.3 高级设置

​ 对于过滤条件需求比较复杂的场景,Saca Dataviz提供了一系列额外的设置项供用户使用。将过滤条件拖拽至图表上方后,或点击已加入图表中的过滤条件,在弹窗中点击“高级设置”,即可看到这些设置项。

filter/filter-17

5.4.3.1 播放隐藏

​ 过滤条件的交互空间在界面中默认是显示的状态,如果用户想隐藏控件(如采用URL传参的,就没有必要在界面中再显示控件),则勾选此选项。

5.4.3.2 自动刷新数据

​ 适用于在设置好过滤条件后,不需要点击“确定”按钮,直接使过滤条件生效的情形。SaCa DataViz为了兼顾查询性能,默认关闭了此功能。

5.4.3.3 取消选中置顶项

​ 在默认情况下,在选中某过滤条件后,会将该项置顶。勾选该选项后将禁用该功能。

5.4.3.4 设置控件宽度

​ 目前支持字符型过滤条件设置自定义下拉框宽度。

filter/filter-18

5.4.3.5 预处理与初始联动条件

​ 请参考第6章中的相关内容。

5.4.3.6 地址传参

5.4.3.6.1 通过URL传参过滤图表中的数据

​ 在第三方平台嵌套集成SaCa DataViz产品时,可以在第三方平台生成URL参数并拼接到图表或图册的播放链接中,通过这种方式可以实现在SaCa DataViz系统外部动态更换数据内容。

5.4.3.6.1.1 参数的获取

​ 在用户编辑好需要的过滤条件后,在“高级设置”栏中点击“地址传参”,弹出对话框中包含有JSON格式的参数,就是根据之前交互编辑的过滤条件生成的JSON对象。

filter/filter-19

5.4.3.6.1.2 使用方法及步骤

(1)获取过滤参数并在外层添加方括号构成json数组,数组内可添加多个条件,如下;

[
    {
        "field": {
            "name": "省份",
            "dataSetId": "42f699f0-559e-4864-83a0-d8d966153869",
            "role": "string",
            "type": "STRING"
        },
        "type": "routine",
        "values": [
            "辽宁"
        ],
        "allIn": false,
        "others": 0
    }
]

(2)将参数字符串通过JS原生方法“encodeURIComponent(URIstring)”转码(介绍链接:http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp);

(3)转码得到可使用的URL参数字符串,如下;

%5B%7B%22field%22%3A%7B%22name%22%3A%22%E7%9C%81%E4%BB%BD%22%2C%22dataSetId%22%3A%2242f699f0-559e-4864-83a0-d8d966153869%22%2C%22role%22%3A%22string%22%2C%22type%22%3A%22STRING%22%7D%2C%22type%22%3A%22routine%22%2C%22values%22%3A%5B%22%E8%BE%BD%E5%AE%81%22%5D%2C%22allIn%22%3Afalse%2C%22others%22%3A0%7D%5D

(4)将得到的参数字符串拼接到图册和图表的URL中,在浏览器中打开拼接后的URL,即可看到过滤条件生效;

http://localhost:8082/dataviz/src/q.html?b=d78167c9-3d4b-47da-bb91-e646799162e6&conditions=%5B%7B%22field%22%3A%7B%22name%22%3A%22%E7%9C%81%E4%BB%BD%22%2C%22dataSetId%22%3A%2242f699f0-559e-4864-83a0-d8d966153869%22%2C%22role%22%3A%22string%22%2C%22type%22%3A%22STRING%22%7D%2C%22type%22%3A%22routine%22%2C%22values%22%3A%5B%22%E8%BE%BD%E5%AE%81%22%5D%2C%22allIn%22%3Afalse%2C%22others%22%3A0%7D%5D

(5)示例代码

​ 以下代码实现html页面内嵌DataViz图册,外层控件刷新图册条件。

<html>
<head>
<meta charset="utf-8">
</head>
<body>
    <button onclick="updateCondition()">刷新过滤条件</button>
    <script>
        var data = 
        [
            {"field":{"name":"品牌描述","dataSetId":"ca8bbf66-0abd-4fe6-956f-95e6cf127a3a","role":"string","type":"STRING"},"type":"routine","values":["PAW IN PAW","汇总"],"allIn":false,"others":0,"hidden":true}
        ];
        var src="http://localhost:8082/dataviz/src/q.html?b=5d825bfd-dc86-4387-a37b-167efa2e0c87";//图册播放地址
        function updateCondition(){
            document.getElementById("dvbook").src=src + "&conditions=" + encodeURIComponent(JSON.stringify(data));
        };
    </script>
    <iframe id="dvbook" style="width:100%; height:90%;border-width:0px;" src="http://localhost:8082/dataviz/src/q.html?b=5d825bfd-dc86-4387-a37b-167efa2e0c87"></iframe>
</body>
</html>
5.4.3.6.1.3 参数的规则介绍

​ 不同过滤条件的参数规则并不相同,过滤参数仅支持用户进行内容的修改,不支持用户自定义规则。

5.4.3.6.1.3.1 字符类型

(1)常规模式:

  field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
  type:模式信息,此处表示为常规模式。  
  values:过滤内容,数组,字段实际值的子集。  
  others:是否为排除,1:排除,0不排除。  

(2)通配符模式:

  field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。
  type:模式信息,此处表示为通配符模式。
  value:过滤匹配值,根据实际设置的匹配值不同而变化。
  matchType:匹配方式。可选值:contains、startWith、endWith、equals和isEmpty。当匹配方式为isEmpty时,value不起作用。
  others:是否为排除,1:排除,0不排除。
5.4.3.6.1.3.2 时间类型

(1)相对时间

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
type:模式信息,此处表示为相对时间模式。  
relativeUnit:相对时间单位。  
relativeValue:相对时间,整数,为正数时表示后XX时间单位,为0时表示为当前时间单位,为负数时表示前XX时间单位。  

(2)时间范围

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
type:模式信息,此处表示为时间范围模式。  
start:开始时间,不能大于结束时间。时间格式固定为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。  
end:结束时间,不能小于开始时间,时间格式固定为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。  

(3)开始时间

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
type:模式信息,此处表示为开始时间模式。  
start:开始时间,时间格式固定为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。  

(4)结束时间

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
type:模式信息,此处表示为结束时间模式。  
end:结束时间,时间格式固定为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss。

(5)特殊值

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。  
type:模式信息,此处表示为特殊值模式。  
specialValue:特殊值,可选值:isNull、isNotNull和all。
5.4.3.6.1.3.3 数值类型

(1)双向

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。
type:模式信息,此处表示为双向模式。
min:最小值。
max:最大值。
includeMin:是否包含最小值,1:包含,0:不包含。
includeMax:是否包含最大值,1:包含,0:不包含。
aggregateFilter:是否聚合前过滤,1:是,0:否。
aggregation:聚合方式,可选值:sum、max、min、avg、count和count_distinct。

(2)至多

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。
type:模式信息,此处表示为至多模式。
max:最大值。
includeMax:是否包含最大值,1:包含,0:不包含。
aggregateFilter:是否聚合前过滤,1:是,0:否。
aggregation:聚合方式,可选值:sum、max、min、avg、count和count_distinct。

(3)至少

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。
type:模式信息,此处表示为至少模式。
min:最小值。
includeMin:是否包含最小值,1:包含,0:不包含。
aggregateFilter:是否聚合前过滤,1:是,0:否。
aggregation:聚合方式,可选值:sum、max、min、avg、count和count_distinct。

(4)特殊值

field:字段信息;其中包含字段名称,数据集ID,字段角色和数据类型。
type:模式信息,此处表示为特殊值模式。
specialValue:特殊值,可选值:isNull、isNotNull和all。
aggregateFilter:是否聚合前过滤,1:是,0:否。
aggregation:聚合方式,可选值:sum、max、min、avg、count和count_distinct。

5.4.3.6.2 图册内资源传参过滤

​ 在SaCa DataViz中,用户可以通过网页资源把已存在的网页嵌入到图册中。本文主要介绍外部页面如何实现对图册内图表的过滤。

5.4.3.6.2.1 参数的获取

​ 请参考第5.4.3.6.1.1节。

5.4.3.6.2.2 使用方法

(1)获取过滤参数

{
     "field":{
        "name":"省份",
        "dataSetId":"f8b8eb5f-484b-4e15-a82f-28170e081e09",
        "role":"string",
        "type":"STRING"
    },
    "type":"routine",
    "values":["上海","北京","云南"],
    "allIn":false,
    "others":0
}

(2)将所获取参数构建到新的结构中

data = {
    action: "confirm",
    conditions: [
            {
            "id":"自定义的唯一ID"
            "field":{
                "name":"省份",
                "dataSetId":"f8b8eb5f-484b-4e15-a82f-28170e081e09",
                "role":"string",
                "type":"STRING"
            },
             "type":"routine",
             "values":["上海","北京","云南"],
             "allIn":false,
             "others":0
         }
    ]
}

​ conditions内是过滤参数的原始结构。注意这里添加了"id"属性,id要唯一这是后续更新条件的基础。

​ 如果在图册中配置“全局传参过滤”做图册全局过滤,图表依赖的数据集字段名相同即可响应过滤。否则给条件中的dataSetId赋值,那么可以指定数据集所关联的图表响应过滤。

(3)将代码写入一个页面,比如innerfilter.html,使用window.postMessage方法发送条件。

示例代码:

<html>
<head>
<meta charset="utf-8">
</head>
<body>
    <button onclick="postCondition()">发送过滤条件</button>
    <script>
        var data ={
            action: "confirm",
            conditions: [
                {"id":"111","field":{"name":"省份","dataSetId":"f8b8eb5f-484b-4e15-a82f-28170e081e09","role":"string","type":"STRING"},"type":"routine","values":["上海","北京","云南"],"allIn":false,"others":0}
            ]
        };
        function postCondition(){
            window.parent.postMessage(data, '*');
        }
    </script>
</body>
</html>

(4)可将html页面放入dataviz前端路径,比如 dataviz-web/tmp/innerfilter.html。

(5)在图册中引入这个页面

filter/filter-20

​ 这样就实现了自定义的图册页过滤控件。

​ 【注意】因为图册网页控件用的是iframe,如果有自定义的下拉框样式会被iframe边缘遮挡,H5原生标签无遮挡问题。

5.4.3.6.2.3 参数的规则介绍

​ 请参考第5.4.3.6.1.3节。

5.4.3.7 设置列表数据

​ Saca Dataviz支持自定义字符型过滤条件的中内容,并以多选下拉列表的形式进行交互。下拉列表中的内容有4种指定方式:数据集、自定义数据、系统变量、树形列表,下面将介绍这几种列表数据的应用情形和使用方法。

SaCa DataViz支持自定义字符型过滤条件的中内容,并以多选下拉列表的形式进行交互。下拉列表中的内容有4种指定方式:“其他数据集”、“自定义”、“系统用户或组织”、“组织结构树”,下面将介绍这几种列表数据的应用情形和使用方法。

5.4.3.7.1 数据集

​ 有的应用场景需要用其他数据集的字段组成过滤条件,来过滤当前数据集中的数据。设置的方法如下图所示。

filter/filter-21

5.4.3.7.2 自定义数据

​ 适用于自定义下拉列表中的内容,设置的方法如下图所示。

filter/filter-22

5.4.3.7.3 系统变量

​ 适用于将下拉列表中的内容定义为系统的组织列表、角色列表或用户列表,关于系统组织、列表和用户的设置请参考权限管理章节。在设置上述信息后,即可在此进行关联。

filter/filter-23

5.4.3.7.4 树形列表

​ 组织的从属关系可以用树形结构表达,在这里支持以树形的结构进行筛选,设置方法与系统变量相似。

5.4.3.8 设置级联影响条件

​ Saca Dataviz支持将存在关联的条件进行级联。举例而言,数据集中存在“省份”和“城市”两个字段,现希望将这两个字段作为图表的过滤条件,如将“城市”设置为“省份”的级联条件,则可以在选择“省份”(如辽宁)后,将“城市”的可选项缩小到属于该省份的范围(在省份选择“辽宁”后,城市仅保留了“大连”)。操作的方法如下图所示。

filter/filter-24

results matching ""

    No results matching ""

    results matching ""

      No results matching ""