使用SSAS创建自定义汇总

时间:2014-09-13 04:36:26

标签: sql-server ssas

我目前正在制定如下要求,并希望在找出配置我的度量聚合的方法方面提供一些帮助:

我有一个包含以下Item ID,DateID,StoreID,ReceivedComments的事实表。收到评论工作的方式是每天创建一个新记录,增加收到评论的价值(例如,如果1月1日商店5中的第5项有23个收到评论,第二天收到5条评论, 1月2日的行将是第5项,商店5,1月2日,28日)

我们使用MAX创建了一个度量,只要在查询中使用Item ID,它就可以正常工作。当我们开始向更高级别移动时,max会产生错误的结果。我们的要求是将措施设置如下:

如果所选成员在项目级别上,那么MAX,如果它在任何其他级别(日期或商店),那么该度量应该聚合该日期或商店下所有项目的最大值。

由于数据库Store和Item的业务规则和结构是不同的维度,因此我不能将它们包含在1层次结构中。

我们一直在使用Custom RollUps,但到目前为止还没有能够让它发挥作用。

由于

2 个答案:

答案 0 :(得分:0)

我会通过对事实表使用更传统的方法来解决这个问题。我没有在ReceivedComments列中保留累积计数,而是仅保留当天收到的评论数。

这样,您可以使用SUM创建度量,而不是使用MAX,当您转到更高级别时,它会自动汇总。

我可以看到这种方法的唯一缺点是你需要使用一系列日期而不是最近的日期来获得给定项目/商店/日期的所有评论的完整总数。但这对您的MDX来说只是一个非常小的变化。

答案 1 :(得分:0)

有人建议使用ISLEAF来确定等级,而不是使用ISLeaf,我使用AS CASE WHEN [Item]。[ItemID] .CURRENTMEMBER.LEVEL是[Item]。[ItemID]。[(All)]所以我不喜欢#39; t必须考虑其他维度,例如日期,商店等,因为我有其他几个维度都表现相同。

然后我使用这个公式来确定特定商店中商品的最大总和,如下所示:

SUM({[Item]。[Item ID] .children},[Measures]。[ReceivedComments]),现在我预计这个测量会遇到一些性能问题,但是我们目前正在进行一些测试,看看它是否有'在实际数据上使用它是可靠的。