Date 在多个日期维度层次结构上查找平均值
我有一个多维数据集,在这个多维数据集中有一个日期维度,它具有以下属性 日历年、日历月年、会计年度、会计年度季度、日期 现在有了这些属性,我有了两个用户定义的层次结构,它们如下 日历层次结构,包括日历年、日历月年、日期 第二个用户定义的层次结构是 具有会计年度、会计年度季度、日历月年度和日期的会计层次结构 我想知道平均销售额,所以我创建了一个衡量标准Date 在多个日期维度层次结构上查找平均值,date,sql-server-2012,mdx,dimensional-modeling,ssas-2012,Date,Sql Server 2012,Mdx,Dimensional Modeling,Ssas 2012,我有一个多维数据集,在这个多维数据集中有一个日期维度,它具有以下属性 日历年、日历月年、会计年度、会计年度季度、日期 现在有了这些属性,我有了两个用户定义的层次结构,它们如下 日历层次结构,包括日历年、日历月年、日期 第二个用户定义的层次结构是 具有会计年度、会计年度季度、日历月年度和日期的会计层次结构 我想知道平均销售额,所以我创建了一个衡量标准 Member [Measures].[Sales Daily Avg] AS Avg ( Descendants ( [Date].[Calenda
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].成员,则此选项将起作用,但它不会对我的会计层次结构属性起作用,日历月年除外。如何修改度量,使其接受会计年度层次结构属性
我尝试按会计年度交叉联接,因为如果集合为空,它将只评估正在使用的集合。但这对我不起作用,我想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.
)
)
基本上,这将首先检查来自财政层级的任何成员是否在范围内。如果是,它将在所选成员的会计日期上求平均值。如果不满足第一个条件,它将进一步检查日历层次结构中的任何成员是否在范围内。如果是这样,它在日历层次结构上的工作方式也类似。最后,如果层次结构的成员都不在范围内,那么您可能会重新考虑,并根据您的需求进行放置
注意:当任何层次结构的currentmember是All成员时,这意味着层次结构不在范围内,不属于切片器或轴的一部分我得到错误。您的条件看起来工作得很好,但在执行AVG功能时,有些东西似乎不起作用。我已经在IFF函数之外测试了avg函数,它们工作起来很有趣,一旦它们在IFF函数中,就会产生一个错误。可能是从打字错误到标准语法错误。我还没有测试过。让我来,很好用。非常感谢。不仅你的代码正确,你的解释也很有教育意义。MDX很难学。如果我们有[Date].[Calendar]。行上的成员,这个度量值有效吗?@SouravA+1,请回答。但唯一的问题是,当您在筛选器中选择多个成员(例如两个日历年)时,Excel将在子查询子多维数据集中发送这些成员,而SSAS将不知道正在使用日历年,从而导致其返回null。