[S/A]解决关于FM时间维度排序错乱的问题

浏览: 2726

有一个问题在论坛里频繁出现:Framework Manager里的时间维度排序显示正确,但用lag,lead取出的结果顺序是乱的,如下图

Clipboard Image.png

这个问题的根源就出在日期维度的最底层day,很多时候开发人员喜欢用date格式的day做 _business key、并排序。
解决方法如下:
1、数据格式:采用字符串格式的 Day_key、Month_key和Year_key为主键、也作为first排序键

如 (20120215,201202,2012),对应的属性为 (Feb 15,2012 12:00:00AM,02,2012年)

至于怎么转换,可根据数据库类型的函数来处理,如oracle用 to_char(cur_date,'yyyymmdd')即可得到day_key

Clipboard Image.png

2、维度year设置:

Clipboard Image.png


month设置

Clipboard Image.png

day设置,这里day_date是日期格式,role不设置,Day_key为_business key/_memberCaption

Clipboard Image.png

3、排序是最关键的一步,请看图中红色部分:Always Olap commpatible,Day_key一定要设置为 First,month_key同理。

Clipboard Image.png

将Key设置为First

6、RS运行的效果,取2005年的后一年,即2006年

Clipboard Image.png


结果显示是正确的。

  一般情况下,在tree里显示是正确的,也许有些开发人员没有主意到这个问题。但我们用lag,lead等多维函数计算同比、环比、累计运算的时候,就会出现数据问题。希望这个小知识点能给大家带来帮助,欢迎发表观点,Thank you!

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

1 个评论

太感谢了,终于找到一个写的详细一点的,问一下fm包必须勾选动态查询吗

要回复文章请先登录注册