我有一种情况,我有一个产品和一个时间维度,以及一个销售量事实表。随着时间的推移,产品的各种细节都会发生变化,但产品的业务密钥除外。在来自多维数据集的平面报告中,我想在“业务关键”级别包含一些聚合,而不管产品维度的其他部分是否显示。
在 sql 中,这将是微不足道的,例如:
select sum(volume) over (partition by productKey,year) as Total
无论我选择了什么其他内容,Total 列都只会在这两个字段上聚合。
在 MDX 中,我设法达到了相同的结果,但似乎必须有一种更简单的方法。
WITH MEMBER Measures.ProductKeyTotal AS
'SUM(([Product].[ProductKey],[Time].[Year]
,[Product].[Product Name].[Product Name].ALLMEMBERS
,[Volume Type].[Volume Type Id].[Volume Type Id].ALLMEMBERS)
,[Measures].[Volume])'
SELECT {[Measures].[Volume],[Measures].[ProductKeyTotal]} ON COLUMNS,
NONEMPTYCROSSJOIN ([Product].[ProductKey].[ProductKey].ALLMEMBERS
,[Time].[Time].[Year].ALLMEMBERS
,[Product].[Product Name].[Product Name].ALLMEMBERS
,[Volume Type].[Volume Type Id].[Volume Type Id].ALLMEMBERS) ON ROWS
FROM [My Cube]
WHERE ([Product].[Include In Report].&[True])
1)如果我没有在计算的成员中包含我不想要的行的所有成员,那么总数不正确,是否有一种快捷方式可以强制它忽略除您指定的所有维度之外的所有维度?
我问的部分原因是我需要添加一堆其他计算成员,其中一些将使用参数,如果我使用上面示例中的方法,我将需要在多个地方复制相同的东西,并且代码会变得很重。