2.3.9.2 Parameter Map

浏览: 2708

 Parameter Map即参数映射,用于创建带条件查询的查询主题,如动态字段、动态过滤值,当报表运行时可切换不同的条件值。和数据表下拉查询类似,每一个参数映射包含一个key值作为唯一标识符,一个value值作为显示属性。我们可人工自定义输入key,value的匹配值列表,亦可基于模型中已存在的查询项作为参数映射值。  

  参数映射值来源最好是基于维度型、数据量可支撑范围内的值,如国家地区、语言列表。若值来源列表数据量大于10万,则会导致查询性能下降。

  ※接下来我们以语言区域为例,创建Parameter Map来自动映射当前所属语言

  1、切换至Parameter Maps文件夹,创建一个参数映射对象,并输入映射名称,如下图

Clipboard Image.png

2、为Key,Value手工收入对应值,如zh-cn 对应 ZH,en-us 对应 EN

     手工输入值比较费时,我们推荐把数据库已存在的表字典信息导出本地csv,xls或带分隔符的txt文件,且文件字符格式为UTF-8或Unicode(不支持ANSI文本),然后再import。如下图所示

Clipboard Image.png

 xls,cvs文件默认带tab分割多列值,txt的文本必须满足如下格式: (key{tab}value),一个tab分隔符相当于4个空格宽度。

  zh-cn    ZH

  en-us    EN

  en-au    EN

  3、维护参数映射列表

  指定一个默认值,即当映射来源为空时返回一个指定的默认值。如图(2.3.9. 输入key,value列信息),  删除、修改或清除所有的key和value。

现在,我们将刚创建好的parameter map应用于模型中。product_line是一个多语言的数据表,不同语言有不同的字段,

Clipboard Image.png


 创建一个Query Subject,基于session parameter ‘runLocale’ ,根据用户所在语言区域归类其所使用的语言,去语言区域和语言的对应关系在创建Parameter Map时定义。使用表达式如下:#'PRODUCT_LINE.PRODUCT_LINE_'+$PM_Languuage_Local($runLocale)# 动态组合符合客户语言的查询字段。

Clipboard Image.png

 这里需要注意,因为是动态字段,别名定义一定需要:as product_line,否则每次字段名是不同的值,因为模型字段名称只能是静态值。生成的查询语句如下:

Clipboard Image.png

※根据模型中已有的查询项创建Parameter Map值

  创建parameter map选择'Based on existing query items' 如下图所示,

Clipboard Image.png

 下面就可以看到基于该查询项导入的值列表,

Clipboard Image.png

和第一种方式不同,该值列表的值不能被修改、删除。

  Parameter Map和Session Parameter结合使用创建条件变化的动态查询项或查询条件,为模型的创建提供了极大的方便。多语言模型的该功能的经典实例,那我们就可以根据这个实例,结合企业环境来制作我们自己的条件化模型,如根据用户的信息 ‘座机电话’,‘邮编’ 判断其所在部门机构。在这节内容里,一定程度上引用了Marco函数,如sq给值添加单引号,dq则添加双引号,Framework Manager提供了丰富的Marco函数库供开发使用,请看下一节 2.4 剖析Marco的函数和应用

推荐 0
本文由 贝克汉姆 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册