我在OLAP数据库icCube中为帐户使用父子关系。为了包括财务逻辑,我使用了一元运算符。此外,我已经建立了几个使用多2个关系的帐户,并且所有工作都很顺利,除了....
当我想对结果应用时间逻辑时,例如通过以下方式显示2014年4月30日的年初至今的价值:
Aggregate(crossjoin ({[View].[View].[Periodiek]},PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember)))
我收到消息:
Aggregate():聚合'一元运算符'不支持(度量或计算度量/成员:[度量]。[bedrag])
显然,这不是这样做的方法。
如何在此设置中实现累积数字(最新时期)?
答案 0 :(得分:2)
当前版本的icCube - 4.8.2 - 不支持聚合类型'一元运算符'的度量的聚合函数。请参阅聚合函数文档here。
如果您使用多对多关系以及特殊度量聚合类型,则聚合函数有点狡猾。例如:
Aggregate( { [Account1], [Account2] }, [Measures].[Special] )
如果[特殊]是一项带有' Sum'聚合类型和[Account1]和[Account2]有很多2的关系,我们将计算两次相同的'共享'金额(又称同一行计算两次)。
不支持使用聚合类型的其他措施以避免意外结果。这适用于聚合类型a Open / Close / Distinct Count。
您的案例中的解决方案是使用Sum函数:
紧凑型设置允许紧凑设置,以防您使用数天或数小时缩小设置。它是一种性能助推器。
如果您想要正确处理m2m关系和特殊度量聚合类型,可以使用icCube中的类别,请参阅此处doc。很快,它们允许动态地将成员定义为一组元组。
为了正确支持Aggregate,我们应该添加一个新方法,例如icAggregate,用作使用类别。聚合函数有点奇怪,暂时我们模仿SSAS ......
答案 1 :(得分:1)
要证明Sourav的评论,请尝试将您的措施更改为以下内容:
Aggregate(
{[View].[View].[Periodiek]}
* PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember)
, [Measures].[MEASURE_NOT_bedrag] //<<replace with actual
)
你还得到同样的错误吗?