xiaohuang_929
作者xiaohuang_929·2012-08-29 11:32
学生·没有

cognos 时间统计应用

字数 4425阅读 2159评论 1赞 4

很好的一篇文章,解决了我的实际问题。为防丢失,转载至此。感谢作者的分享。

原文地址:http://hi.baidu.com/icely_zsb/blog/item/3daa93ea210b58ded539c996.html

 

 

 

 

total([Revenue] within set periodsToDate([great_outdoors_company].[Years].[Years].[Years],
[great_outdoors_company].[Years].[Years].[Month]->?p_Month?))


截止时间累计值:
total([Revenue] within set periodsToDate([CUBE].[交易时间].[交易时间].[交易时间],[CUBE].[交易时间].[交易时间].[月份]->?p?))


from-to:
except(
periodsToDate([great_outdoors_company].[Years].[Years].[Years],
[great_outdoors_company].[Years].[Years].[Month]->?finishMonth?),
periodsToDate([great_outdoors_company].[Years].[Years].[Years],
lag([great_outdoors_company].[Years].[Years].[Month]->?startMonth?,1))
)


get 2 month trailing total:
total([Revenue] within set lastPeriods(2, currentMember([great_outdoors_company].[Years].[Years])))

get 12 month trailing total:
total([Revenue] within set lastPeriods(12, currentMember([great_outdoors_company].[Years].[Years])))
tuple(member(total(currentMeasure within set filter(descendants([Camping Equipment],2),caption(descendants([Camping Equipment],2)) starts with 'T')), 'TProducts','T Products', [great_outdoors_company].[Products].[Products]),[Department Store])

 

当我们在用cube实现的报表中把年,月当成条件查询的时候,如果年月来自同一个维度的话,当我们再更换年份的时候,系统会强制要求我们选月份。如果要年月互不干预的话,只能把年,月分开成两个维度。分开以后,我们在做同比,环比的时候又是另外一种计算方式了,如下:
当月收入:
tuple ([收入cube].[年份].[年份].[年度]->?年度?,[税收收入cube].[月份].[月份].[月份1]->?月度?,[收入]) / 1000000
上年同期:
tuple (prevMember ([收入cube].[年份].[年份].[年度]->?年度?),[收入cube].[月份].[月份].[月份1]->?月度?,[收入]) /1000000
本年累计:
total ( tuple([收入],[收入cube].[年份].[年份].[年度]->?年度?) within set periodsToDate ([收入cube].[月份].[月份].[月份],[收入cube].[月份].[月份].[月份1]->?月度?)) / 1000000
上年累计:
total ( tuple([收入],prevMember ([收入cube].[年份].[年份].[年度]->?年度?)) within set periodsToDate ([收入cube].[月份].[月份].[月份],[收入cube].[月份].[月份].[月份1]->?月度?)) / 1000000

 

http://blog.163.com/wengr/blog/static/29196182200811511936161/


total([快信结算后收入] within set periodsToDate([快信].[日期].[日期].[Year],[快信].[日期].[日期].[Month]->?month?))


上年同期:
total ([收入] within set parallelPeriod ([收入cube].[年度].[年度].[年度1],1,[收入cube].[年度].[年度].[月份]->?月度?))

本年累计:
total ( [收入] within set periodsToDate ([收入cube].[年度].[年度].[年度1],[收入cube].[年度].[年度].[月份]->?月度?))

上年累计:
total ([收入] within set periodsToDate ([收入cube].[年度].[年度].[年度1],parallelPeriod ([收入cube].[年度].[年度].[年度1],1,[税收收入cube].[年度].[年度].[月份]->?月度?)))


http://hi.baidu.com/blyd/blog/item/472b4eed57038bddb21cb17d.html


aggregate([Measures] within set periodsToDate([日期维中的年],[当月]))


当月函数为:parent([当天])

当天函数为:item(filter([日期维中的日],caption[日期维中的日]=?参数?),0)


http://www.cognoschina.net/club/thread-2277-1-1.html


sql方式时间段
[SQL1].[TO_CHAR(STAMP,'YYYY-MM-DD')] between ?day1? and ?day2?


1. 去年同期:即查询月为200905的话,该指标为200805该指标
total([金额] within set parallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?mon?))

2. 本年累计:即查询月为200905的话,该指标为200901-200905期间发生
total([金额] within set periodsToDate([日期].[日期层次结构].[年],[日期].[日期层次结构].[月]->?mon?))

3. 去年同期止累计:即查询月为200905的话,该指标为200801-200805期间发生
total([金额] within set periodsToDate([日期].[日期层次结构].[年],parallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?mon?)))

同比增长 (以日期为行维)
([销售金额]- value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额])))/ value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额]))
环比增长   (以日期为行维)
([销售金额]-value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额])))/value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额]))

4. 有史以来累计发生:查询月为200805,则为从时间第一个节点截止200805期间发生

1)如果提示使用的是[日期].[日期层次结构].[月].[月 - Key]
   total([金额] within set
        filter(
             members([日期].[日期层次结构].[月]),
             [日期].[日期层次结构].[月].[月 - Key]<=?month?
              ))

2)如果提示使用的是[日期].[日期层次结构].[月]
    total([金额] within set
        lastperiods(1000,[日期].[日期层次结构].[月]->?month?))

5. 查询粒度为年,统计上半年、下半年
上半年余额(即时点类指标):
total([余额] within set subset(descendants([日期].[日期层次结构].[年]->?year?,[日期].[日期层次结构].[月]),5,1))
上半年发生额(即时段类指标):
total([金额] within set subset(descendants([日期].[日期层次结构].[年]->?year?,[日期].[日期层次结构].[月]),0,6))

这里subset()这个函数和substring()类似,只不过subset截取的是一个set(集合)中的某些成员而已,并且注意subset()第一个是0而不是1,这个和数组是类似的.

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论1 条评论

xiaohuang929xiaohuang929软件开发工程师一瞧
2013-11-27 16:57
Ctrl+Enter 发表

作者其他文章

  • Cognos 维度函数
    评论 3 · 赞 8
  • 相关问题

    相关资料

    X社区推广