在多个日期维度层次结构上查找平均值
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
(您可能会重新考虑并根据您的要求放置)。
注意:当任何层次结构的 currentmember
是 All
成员时,这意味着该层次结构不在范围内(不是切片器或轴的一部分)
我有一个多维数据集,在该多维数据集中有一个具有以下属性的日期维度
日历年、日历月-年、财政年度、财政年度-季度、日期
现在有了这些属性,我有两个用户定义的层次结构,它们如下所示 日历层次结构 具有日历年、日历月-年、日期
第二个用户定义层次结构是 财政层次结构 具有财政年度、财政年度-季度、日历月年和日期
我想知道平均销售额,所以我创建了一个度量
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
(您可能会重新考虑并根据您的要求放置)。
注意:当任何层次结构的 currentmember
是 All
成员时,这意味着该层次结构不在范围内(不是切片器或轴的一部分)