MDX-返回空值的计算MTD度量值

MDX-返回空值的计算MTD度量值,mdx,slicers,Mdx,Slicers,我有一个带有日期维度层次结构(年、学期、季度、月、日)的多维数据集 数据仓库中有两个可用的度量 [AUD DLY] : Daily numbers [AUD YTD] : Daily incremental YTD numbers 层次结构如下 Date - Dimension Financial - Hierarchy Year - [Date].[Financial].[Year] Semester - [Date].[Financial].[Semester] Quarter -

我有一个带有日期维度层次结构(年、学期、季度、月、日)的多维数据集

数据仓库中有两个可用的度量

[AUD DLY] : Daily numbers
[AUD YTD] : Daily incremental YTD numbers
层次结构如下

Date - Dimension 
Financial - Hierarchy 

Year - [Date].[Financial].[Year]
Semester - [Date].[Financial].[Semester]
Quarter - [Date].[Financial].[Quarter] 
Month - [Date].[Financial].[Month] 
Day - [Date].[Financial].[Day]

Measures [AUD DLY]
Measures [AUD YTD]
我需要在度量中添加MTD字段,以便当业务部门在excel切片器上选择特定日期(例如2016年3月3日)时,MTD应按以下任一方式计算:

1) [AUD MTD] should be calculated by subtracting [AUD YTD] on 
last day of  previous month from the current selected date. 
So if we select 3 March 2016 then

[AUD MTD] = [AUD YTD] on 3 March 2016 - [AUD YTD] on 29 Feb 2016

OR

2) [AUD MTD] should be calculated by adding the [AUD DLY] from first day
of the current month until the selected date in that month. 
So if we select 3 March 2016 then

[AUD MTD] = SUM ([AUD DLY] from 1 March 2016 to 3 March 2016)
在2010年的投标中,我从多维数据集设计器的“计算”选项卡创建了一个新的计算成员。MDX查询如下所示。但是,当我尝试浏览多维数据集时,[AUD MTD]值只返回空值

有人能帮帮我吗?我做错了什么

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS Aggregate
(
    PeriodsToDate
        (
        [Date].[Financial].[Month]
        ,[Date].[Financial].CurrentMember
        )
        ,[Measures].[AUD DLY]
), 
FORMAT_STRING = "Currency", 
NON_EMPTY_BEHAVIOR = { [AUD DLY] }, 
VISIBLE = 1 ,  DISPLAY_FOLDER = 'AUD Values' ,  ASSOCIATED_MEASURE_GROUP = 'Measures'  ; 
此外,企业将使用切片器在excel中使用新的计算度量,他们希望选择任何日期,并能够查看该月的MTD值

另外,是否有人可以为方法(1)和(2)的MDX查询提供帮助


非常感谢您的帮助。

我认为您引用的代码(方法2)的问题在于[Date].[Financial]。CurrentMember的级别必须等于或低于[Date].[Financial].[Month]级别。否则,PeriodsToDate返回一个空集

所以问题不在计算成员定义中,而是在使用它的查询中的某个地方。在该查询中,[Date][Financial].CurrentMember可能返回的成员级别高于个月。如果不查看查询本身,很难看到

方法(1)更加精细。您可以使用获取上个月的最后一天

Ancestor([Date].[Financial].CurrentMember,[Date].[Financial].[Month]).PrevMember.LastChild
但你必须为财政年度第一个月的天数建立一些逻辑,否则将从今年年初至今的价值中减去上一个财政年度的价值。所以我推荐方法(2)

据我所知,在Excel切片器中选择一个日期(我指的是一个日期,而不是一个月)将使该日期成为.CurrentMember。我有点犹豫,因为Excel有时确实会生成一些非常奇怪的MDX


编辑:另一个可能的问题是层次结构不匹配。您可以在日期层次结构中选择一个非常好的日期,但如果它不完全在您在计算成员定义中指定的层次结构中,则可能会得到奇怪的结果。较新版本的SSA鼓励大量增加属性层次结构和多个“真实”层次结构,这使得这成为一个真正的问题。

我认为引用的代码(方法2)的问题在于[Date].[Financial]。CurrentMember的级别必须等于或低于[Date].[Financial].[Month]级别。否则,PeriodsToDate返回一个空集

所以问题不在计算成员定义中,而是在使用它的查询中的某个地方。在该查询中,[Date][Financial].CurrentMember可能返回的成员级别高于个月。如果不查看查询本身,很难看到

方法(1)更加精细。您可以使用获取上个月的最后一天

Ancestor([Date].[Financial].CurrentMember,[Date].[Financial].[Month]).PrevMember.LastChild
但你必须为财政年度第一个月的天数建立一些逻辑,否则将从今年年初至今的价值中减去上一个财政年度的价值。所以我推荐方法(2)

据我所知,在Excel切片器中选择一个日期(我指的是一个日期,而不是一个月)将使该日期成为.CurrentMember。我有点犹豫,因为Excel有时确实会生成一些非常奇怪的MDX


编辑:另一个可能的问题是层次结构不匹配。您可以在日期层次结构中选择一个非常好的日期,但如果它不完全在您在计算成员定义中指定的层次结构中,则可能会得到奇怪的结果。IMHO最新版本的SSA鼓励属性层次结构和多个“真实”层次结构的激增,这使得这成为一个真实的问题。

作为一个测试,您可以添加这个非常简单的措施,以确保currentmember的行为符合预期:

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS [Date].[Financial].CurrentMember.member_caption
如果使用上述所有返回值时返回的是
all
成员,则您知道有问题

您需要仔细检查日期层次结构中使用的关系和数据类型,因为这通常是时间计算问题的原因


这是一个替代您的措施,但我怀疑如果原始脚本不工作,那么这也不会

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS SUM 
   (
      MTD([Date].[Financial].CurrentMember)
     , [Measures].[AUD DLY]
     )

作为一项测试,您是否可以添加此非常简单的措施,以确保currentmember的行为符合预期:

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS [Date].[Financial].CurrentMember.member_caption
如果使用上述所有返回值时返回的是
all
成员,则您知道有问题

您需要仔细检查日期层次结构中使用的关系和数据类型,因为这通常是时间计算问题的原因


这是一个替代您的措施,但我怀疑如果原始脚本不工作,那么这也不会

CREATE MEMBER CURRENTCUBE.[Measures].[AUD MTD]
AS SUM 
   (
      MTD([Date].[Financial].CurrentMember)
     , [Measures].[AUD DLY]
     )

您还可以提供您用于
YTD
measurey的代码您的查询返回所有成员。[AUD YTD]度量值存在于数据仓库中。业务部门上传它,我只需在多维数据集上显示它。不确定这是否有帮助,但我仍然无法获取MTD计算成员的值。另外,请提供您用于
YTD
measurey的代码您的查询返回所有成员。[AUD YTD]度量值存在于数据仓库中。业务部门上传它,我只需在多维数据集上显示它。不确定这是否有帮助,但我仍然无法获得MTD计算成员的值。