如何使用一元运算符对排列在父子层次结构中的数据执行 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 函数:
- Sum( CompactSet( PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember) ) , [View].[View].[Periodiek] )
Compact Set 允许压缩设置,以防您使用数天或数小时来减少设置。这是一个性能助推器。
如果您想正确处理 m2m 关系和特殊度量聚合类型,您可以使用 icCube 中的类别,请参阅此处一些 doc。很快,它们允许将成员动态定义为一组元组。
为了正确支持聚合,我们应该添加一个新方法,例如icAggregate,就像使用类别一样工作。 Aggregate函数有点奇怪,我们暂时模仿一下SSAS...
我正在为 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 函数:
- Sum( CompactSet( PeriodsToDate([Tijd].[Kalender].[jaar],[Tijd].[Kalender].currentmember) ) , [View].[View].[Periodiek] )
Compact Set 允许压缩设置,以防您使用数天或数小时来减少设置。这是一个性能助推器。
如果您想正确处理 m2m 关系和特殊度量聚合类型,您可以使用 icCube 中的类别,请参阅此处一些 doc。很快,它们允许将成员动态定义为一组元组。
为了正确支持聚合,我们应该添加一个新方法,例如icAggregate,就像使用类别一样工作。 Aggregate函数有点奇怪,我们暂时模仿一下SSAS...