在多个日期维度层次结构上查找平均值

Finding Avg on multiple Date Dimension Hierarchies

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

日历年、日历月-年、财政年度、财政年度-季度、日期

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

第二个用户定义层次结构是 财政层次结构 具有财政年度、财政年度-季度、日历月年和日期

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

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 这将起作用,但它不适用于我的财务层次结构属性,日历除外月-年。我如何修改我的度量,以便它接受会计年度层次结构属性。

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

对不起各位,我真的是新手。

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

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.
     )
     )

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

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