1

我有一个多维数据集,在该多维数据集中有一个日期维度,它具有以下属性

日历年、日历月-年、会计年度、会计年度-季度、日期

现在有了这些属性,我有两个用户定义的层次结构,它们如下 日历层次结构,它具有日历年、日历月-年、日期

第二个用户定义的层次结构是 Fiscal Hierarchy,它有 Fiscal Year、Fiscal Year-Quarter、Calendar Month Year 和 Date

我想知道平均销售额,所以我创建了一个衡量标准

Member [Measures].[Sales Daily Avg]
AS Avg ( Descendants ( [Date].[Calendar].CURRENTMEMBER, [Date].[Calendar].[Date] ), CoalesceEmpty([Measures].[Total Sales] , 0) )  

这在运行类似的东西时效果很好

SELECT {
[Measures].[Sales Daily Avg],
} ON COLUMNS,
{ [Date].[Calendar].[Calendar Year].Members } ON ROWS
FROM 
[SalesCube]

如果我使用[Date].[Calendar].[Calendar Month-Year].Members,这将起作用,但它不适用于我的财务层次结构属性,Calendar Month-Year 除外。如何修改我的度量以使其接受会计年度层次结构属性。

我尝试按财政年度交叉加入,因为如果集合为空,它只会评估正在使用的集合。但这对我不起作用(我假设 sytnax 可能是问题所在)。

对不起,伙计们,我真的很陌生。

4

1 回答 1

1

将计算成员的定义更改为:

CREATE Member [Measures].[Sales Daily Avg]
AS 
IIF
  (
   NOT([Date].[Fiscal].CURRENTMEMBER IS [Date].[Fiscal].[All])
   ,
   Avg 
     ( 
      Descendants 
                (
                 [Date].[Fiscal].CURRENTMEMBER, 
                 [Date].[Fiscal].[Date] 
                )
     ,
     CoalesceEmpty([Measures].[Total Sales] , 0) 
    )
   ,
   IIF
     (
      NOT([Date].[Calendar].CURRENTMEMBER IS [Date].[Calendar].[All])
      ,
      Avg 
        ( 
         Descendants 
                (
                 [Date].[Calendar].CURRENTMEMBER, 
                 [Date].[Calendar].[Date] 
                )
        ,
        CoalesceEmpty([Measures].[Total Sales] , 0)
        ),
        NULL //Change this to whatever you want in case none of the hierarchies 'Calendar' or 'Fiscal' is involved.
     )
     )

基本上,这将首先检查“财政”层次结构中的任何成员是否在范围内。如果是这样,它将在所选成员的会计日期平均计算。如果不满足第一个条件,它会进一步检查“日历”层次结构中的任何成员是否在范围内。如果是这样,它在“日历”层次结构上的工作方式类似。最后,如果没有层次结构的成员在范围内,它将产生NULL(您可能会重新考虑并根据您的要求放置)。

注意:当currentmember任何层次结构的成员是All成员时,这意味着层次结构不在范围内(不是切片器或轴的一部分)

于 2015-10-30T09:28:34.787 回答