SSAS 条件多维数据集计算成员

SSAS Conditional cube calculated member

我是 SSAS 和多维数据集的新手。

我有一个简单的数据库table:

product|value|status  
-------|-----|------  
A|100|1  
B|20|0  
A|20|0  
B|80|1  

状态字段表示是计划销售还是已经关闭。

我想在多维数据集中有度量 计划 (0) 销售和关闭 (1) 销售。他们应该在给定状态下对每个产品的价值求和。

输出立方体应如下所示:

product|planned sale|closed sale    
------|---------|-----------  
A|20|100  
B|20|80  

我有衡量价值和地位的标准。但是,无论我如何对函数进行切片,状态中的布尔值都会被聚合。我想我的措施配置错误。我尝试将其设置为布尔值,但它似乎进行 "and" 计算。

我尝试了 IFF 和 .currentmember 希望它能迭代。

我一定是遗漏了一些基本的东西,请帮忙。谢谢你。

添加一个简单的状态维度,0 表示已计划,1 表示已结束。

它正在聚合,因为现在您正在使用它作为衡量标准。

根据您的评论进行编辑:

我认为您错误地假设 SSAS 会将 measures.status 的值解释为布尔值。 SQL 没有布尔数据类型的概念。尽管 bit 数据类型可用于保存布尔值,但在 SQL 中你不能说 IF [MyBitColumn] THEN ... 而是必须说 IF [MyBitColumn]=1 THEN ...。 SQL 服务器不会自动 understand/assume 1 = true,0 = false。

为您计算的度量试试这个:

 iif([Measures].[Status]=1, [Measures].[Value],0)  //closed sale
 iif([Measures].[Status]=0, [Measures].[Value],0)  //planned sale