3

我正在为 OLAP 数据库 icCube 中的帐户使用父子关系。为了包含财务逻辑,我使用了一元运算符。此外,我使用多对多关系设置了几个帐户层次结构,并且一切都非常顺利,除了....

当我想对结果应用时间逻辑时,例如通过以下方式显示 2014 年 4 月 30 日的 YTD 值:

Aggregate(crossjoin ({[View].[View].[Periodiek]},PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember)))

我收到消息:

Aggregate() :不支持聚合“一元运算符”(度量或计算度量/成员:[Measures].[bedrag])

显然,这不是这样做的方法。

在这种情况下如何获得累积数字(迄今为止的时期)?

4

2 回答 2

2

当前版本的 icCube - 4.8.2 - 不支持聚合类型为“一元运算符”的度量的聚合函数。请参阅此处的聚合函数文档。

如果您使用多对多关系以及特殊度量聚合类型,则聚合函数有点狡猾。例如 :

     Aggregate( { [Account1], [Account2] }, [Measures].[Special] )

如果 [Special] 是具有“Sum”聚合类型的度量,并且 [Account1] 和 [Account2] 具有多对多关系,我们将计算两次相同的“共享”数量(也就是同一行计算两次)。

只是不支持具有聚合类型的其他度量,以避免得到意外结果。这适用于打开/关闭/不同计数的聚合类型。

您的解决方案是使用 Sum 函数:

紧凑集允许紧凑集以防您使用数天或数小时来减少集。这是一个性能助推器。

如果您想正确处理 m2m 关系和特殊度量聚合类型,您可以使用 icCube 中的类别,请参阅此处的一些文档。很快,它们允许将成员动态定义为一组元组。

为了正确支持聚合,我们应该添加一个新方法,例如 icAggregate,它与使用类别一样工作。Aggregate 函数有点奇怪,暂时我们模仿一下 SSAS...

于 2015-01-05T10:04:39.370 回答
1

为了证明 Sourav 的评论,请尝试将您的度量更改为以下内容:

Aggregate(
  {[View].[View].[Periodiek]}
  * PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember)
  , [Measures].[MEASURE_NOT_bedrag]    //<<replace with actual
  )

你仍然得到同样的错误吗?

于 2015-01-04T23:32:05.900 回答