我在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日,由于没有6月31日,我的最后一个月到达了#VALUE。对于所有其他月份来说,这个问题与目前的日子相比还少。上面的函数似乎在&#34; iif语句中摆脱了这个问题&#34;但它没有!我的日历层次结构按年,季度,月,日组织。有什么帮助吗?
答案 0 :(得分:0)
更改部件
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]
答案 1 :(得分:0)
也许尝试将Aggregate部分简化为元组:
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]
)
)
答案 2 :(得分:-1)
谢谢你们!我终于让我的功能发挥作用了。实际上,问题出在Aggregate声明中。事实上,这个功能在测试立方体上完美运行,但我不明白它为什么不在另一个上。所以我做了什么,我只是改变了
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]
)
它有效!但我也会尝试使用您的功能来检查结果。谢谢!