微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从MDX中的日期参数获取月份

如何解决从MDX中的日期参数获取月份

| 我目前正在使用Reporting Services(和MDX语言)构建报告。 我得到一个日期归功于一个参数:
MEMBER [Measures].[retail sales amount] AS (
STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy),[Measures].[Retail sales amount invoiced including tax])
STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy)可能类似于[Time calendar]。[Time Calendar montharchive]。[Time calendar date]。&[2011-03-18T00:00:00] 我只想获取该参数的月份。当我使用时:
MTD([Time calendar].[Time calendar month hierarchy].[Time calendar date].&[2011-03-18T00:00:00],[Measures].[Retail sales amount invoiced including tax])
它工作正常,但事实并非如此
MTD(STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy),[Measures].[Retail sales amount invoiced including tax])
    

解决方法

尝试:
MTD( STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy) ) * {[Measures].[Retail sales amount invoiced including tax]}
如果不起作用,则结果是什么:
STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy).name
    ,MTD将为您提供从月份的第一天到指定日期的日期集。如果要获得月份,可以使用ANCESTOR或PARENT。如果Month在层次结构中的Date的正上方,则Parent将工作。当您考虑前几个月时,SUM(MTD(date),measure)和(date.parent,measure)之间的区别很明显-如果您过去的一个月是过去的MTD,则会得到部分结果,而不是month成员本身(适用于该月的最后日期以外的日期)。 StrToMember本质上将字符串转换为MDX中的成员表达式。编写之间在功能上没有区别:
([Time].[Month].&[201001],[Measures].[SomeMeasure])
(StrToMember(\"[Time].[Month].&[201001]\"),[Measures].[SomeMeasure])
当您执行非工作表达式进行调试时,听到错误确切地是什么会很有趣。 如果您只想获取度量的月份金额,则应输入:
(StrToMember(@param).Parent,[Measures].[Retail sales amount...])
或(如果您之间有更多关卡):
(Ancestor(StrToMember(@param),[Time calendar].[<hierarchy>].[<month level>]),[Measures].[Retail sales amount...])
另外,使用MTD时,您需要编写:
SUM(MTD(<date member>),[Measure].[Some Measure])
代替
MTD(<date member>,[Measure].[Some Measure])
看看BOL对MTD的定义     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。