1、filter
作为表达式形式指定检索记录行数或实例必须满足的条件,适用于Dimension,query subject,report。Filter作为boolean类型只返回 Ture 或 False,返回True则说明条件符合规则且能限制返回的记录行数。如 'in_range' 函数可以检索指定某个时间段内引进的产品信息,语法如下:
[Go_Sales].[Products].[Introduction date] in_range {Feb 14,2004:July 21,2007}
Framework Manager支持 stand_alone(独立)、embedded(嵌套) 两种过滤器:
1.1、Stand-alone filter 表达式可以被重复引用
Stand-alone表达式适用于整个工程或报表通用,建模设计的时候它可被引用到某个查询主题或纬度、亦可被用户开发报表时直接引用到报表过滤器中。如下图
优点:该表达式可以被重复使用,一旦表达式更改则引用它的查询主题或报表均被批量更新。
缺点:针对不同的查询主题、维度或报表,它的功能也有限,修改、删除时请慎用,一旦表达式被更改会‘牵一发动全身’。
1.2、Embedded filter局限于某一个维度或查询主题内部使用
当修改维度、基于关系型数据源的查询主题或模型查询主题时,可新建embeded filter(可以在其成立转换成stand-alone)。如下图
但是在引用 stand-alone filter时须注意,引用该filter的当前查询主题和filter表达式字段所在的查询主题必须有关联关
系,如下图:
创建filter表达式时,可在编辑框的左边引用相关的函数、操作符、参数宏,如下图
2、引用Filter
引用filter时候就涉及到修改维度、查询主题,且当前主题必须含有filter表达式里的字段或有关联路径到filter表达式
的query item所在的的查询主题。Filter的用法有三种:Always、Optional、Design model。
2.1、Always
作为默认用法它确保所有指定的报表数据均被过滤,且永久生效。
2.2、Design Mode Only
为实例报表检索较小的数据集,用于当我们没有必要去查看所有数据时使用,如我们仅在测试查询主题时使用。切换到’Test‘页面-->Options-->’Apply all relevant design mode filters when testing option‘,如下图
该用法还可用于在设计Query Studio报表时候检索有限数据而不是所有数据,因为数据量较多的时候会影响报表的开发进度。
2.3、Optional
可选过滤器将会提示用户是否过滤数据,若让提示空白则FM忽略所有的过滤器且检索所有数据集。
但是建模者必须采用动态参数创建过滤表达式,如:[Go_Sales].[Countries].[CountryName] = ?P_Country?
在后面我们将会讲解 Marco的用法,该Optional的使用同下列表达式原理是一样的:
#prompt('P_CountryCode','integer',' ','where [Go_Sales].[Countries].[CountryName] = ?P_Country?)#
3、Security Filter
我们亦可通过创建security filter限制工程的某个查询主题或维度的数据展现,当用户建立报表的时候它可以很好的限制用户看到的数据。
3.1、Data Security Filter
如同一个查询对象,根据业务需求Role A和Role B 用户看到各自对应的数据,如下图
需要注意的是,当某个用户同时属于Role A、Role B,那么两个Role的filter将会被 or 合并,即该用户看到的结果集被合并。若Role A 包含于 Role B,则两个filter将会被 and 合并,即交集。这里建议大家去亲自试验就有更深入的体会。之前论坛有个朋友就提到 每一个部门只能看到各自部门的数据,部门经理可以查看该部门所有数据而部门员工只能查看跟员工相关的数据信息。如果看到该文章,就能找到解决方案。
3.2、Object Security Filter
和Data Security不同,当我们引用模型里的query subject、query item时,Object Security Filter可以限制只有某些指定的用户、组才能看到query subjects、query items,但是不能针对 Group "Eeveryone" 设置拒绝权限。当我们Object Security Filter 什么都没设置,默认情况所有人均可视。如下图
本篇文章的内容主要讲解了业务规则之filter,包括数据行数检索过滤、对象安全过滤、数据安全过滤。内容篇幅有限不足以概括所有内容,旨在引导初学者进入更深刻的理解和研究。欢迎路过的朋友留下你宝贵的意见或一起探讨技术焦点.到目前为止我们引入了数据源、查询对象、为查询项设置了相关的属性,是不是就可以发布模型到IBM Cognos Connection给报表开发者使用呢?当然不是,请看下回Framework Manager建模设计之 2.3.8 组织模型。