当月份有不同的天数时,MDX 上月至今未在日级别显示值
MDX Last Month to date not showing value on Day level when month has different number of days
我在我的 SSAS 多维数据集中使用了上月至今的度量。我在互联网的某个地方找到了它。并且设置如下:
iif (
[Date].[Calendar].currentmember.properties("level_number",Typed)<=2
,null
,
iif (
isempty (ParallelPeriod([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember))
,Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Total actuals Prorata]
)
,SUM(
MTD(
ParallelPeriod([Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
),[Measures].[Sales]
)
)
它在月级别上按预期工作。即使当我深入到日级别时,它也能正常工作!但我的问题是,例如,在 7 月 31 日,我的上个月至今有 #VALUE,因为没有 6 月 31 日。这对于所有其他月份来说都是同样的问题,从当前开始的天数更少。上面的函数似乎在 "iif statements" 中解决了这个问题,但事实并非如此!我的日历层次结构按年、季度、月、日组织。有什么帮助吗?
是否更改部分
Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Total Actuals Prorata]
到以下工作?
Aggregate(
{
Ancestor
(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).Lag(1).FirstChild
)
:
Ancestor
(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).Lag(1).LastChild
)
},[Measures].[Sales]
也许尝试将聚合部分简化为一个元组:
IIF(
[Date].[Calendar].currentmember.properties("level_number",Typed)<=2
, NULL
,IIF(
ISEMPTY(
PARALLELPERIOD(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
)
, (
Ancestor(
[Date].[Calendar].currentmember
,[Date].[Calendar].[Month]).PREVMEMBER
,[Measures].[Total Actuals Prorata]
)
,SUM(
MTD(
PARALLELPERIOD(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
)
,[Measures].[Sales]
)
)
谢谢大家!我终于让我的功能发挥作用了。实际上,问题出在聚合语句上。事实上,这个函数在一个测试立方体上工作得很好,但我不明白为什么它在另一个测试立方体上没有。所以我做了什么,我只是改变了
Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Sales]
)
由
SUM(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Sales]
)
而且成功了!但我也会尝试你的功能来检查结果。谢谢!
我在我的 SSAS 多维数据集中使用了上月至今的度量。我在互联网的某个地方找到了它。并且设置如下:
iif (
[Date].[Calendar].currentmember.properties("level_number",Typed)<=2
,null
,
iif (
isempty (ParallelPeriod([Date].[Calendar].[Month],1,[Date].[Calendar].currentmember))
,Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Total actuals Prorata]
)
,SUM(
MTD(
ParallelPeriod([Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
),[Measures].[Sales]
)
)
它在月级别上按预期工作。即使当我深入到日级别时,它也能正常工作!但我的问题是,例如,在 7 月 31 日,我的上个月至今有 #VALUE,因为没有 6 月 31 日。这对于所有其他月份来说都是同样的问题,从当前开始的天数更少。上面的函数似乎在 "iif statements" 中解决了这个问题,但事实并非如此!我的日历层次结构按年、季度、月、日组织。有什么帮助吗?
是否更改部分
Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Total Actuals Prorata]
到以下工作?
Aggregate(
{
Ancestor
(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).Lag(1).FirstChild
)
:
Ancestor
(
[Date].[Calendar].currentmember,
[Date].[Calendar].[Month]).Lag(1).LastChild
)
},[Measures].[Sales]
也许尝试将聚合部分简化为一个元组:
IIF(
[Date].[Calendar].currentmember.properties("level_number",Typed)<=2
, NULL
,IIF(
ISEMPTY(
PARALLELPERIOD(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
)
, (
Ancestor(
[Date].[Calendar].currentmember
,[Date].[Calendar].[Month]).PREVMEMBER
,[Measures].[Total Actuals Prorata]
)
,SUM(
MTD(
PARALLELPERIOD(
[Date].[Calendar].[Month]
,1
,[Date].[Calendar].currentmember
)
)
,[Measures].[Sales]
)
)
谢谢大家!我终于让我的功能发挥作用了。实际上,问题出在聚合语句上。事实上,这个函数在一个测试立方体上工作得很好,但我不明白为什么它在另一个测试立方体上没有。所以我做了什么,我只是改变了
Aggregate(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Sales]
)
由
SUM(
{
StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).FirstChild.uniquename)
:StrToMember(Ancestor([Date].[Calendar].currentmember,[Date].[Calendar].[Month]).Lag(1).LastChild.uniquename)
},[Measures].[Sales]
)
而且成功了!但我也会尝试你的功能来检查结果。谢谢!