如何使用一元运算符对排列在父子层次结构中的数据执行 YTD 聚合?

How to perform a YTD aggregation on data arranged in parent child hierarchies with unary operators?

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

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

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

我收到消息:

Aggregate() : the aggregation 'unary-operator' is not supported (measure or calculated measure/member:[Measures].[bedrag])

显然,这不是执行此操作的方法。

如何在此设置中获得累计数字(本期至今)?

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

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

你还遇到同样的错误吗?

当前版本的 icCube - 4.8.2 - 不支持聚合类型 'unary operator' 的度量的聚合函数。请参阅聚合函数文档 here.

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

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

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

只是不支持聚合类型的其他度量,以避免出现意外结果。这适用于聚合类型 a Open / Close / Distinct Count。

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

Compact Set 允许压缩设置,以防您使用数天或数小时来减少设置。这是一个性能助推器。

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

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