当前位置: 代码迷 >> Sql Server >> SSAS 多个度量值组合成一个度量值应该如何实现
  详细解决方案

SSAS 多个度量值组合成一个度量值应该如何实现

热度:191   发布时间:2016-04-25 00:59:39.0
SSAS 多个度量值组合成一个度量值应该怎么实现?
有两个表

Items(ItemId int pk,SellPrice numeric(12,2))
SellBills(BillId int pk,ItemId int fk Items(ItemId),SellQty int,RealSellPrice numeric(12,2))

select a.ItemId,sum((SellPrice-RealSellPrice)*SellQty) from Items a join SellBills b on a.ItemId=b.ItemId group by a.ItemId

我想得到一个差价的合计的度量,应该怎么实现?
------最佳解决方案--------------------
Cube中使用计算成员就可以的.[Measures].[A]-[Measures].[B]
------其他解决方案--------------------
在多维数据集的计算中添加计算列即可。  然后在最后利用合计。

------其他解决方案--------------------
如果一定要使用维度中的数值型数据,那么需要把这个维度事实化:添加一个Measure Group,基于这个维度Item。把SellPrice作为一个Measure在这个Msasure Group里;这里要注意在Dimension Usage里面要建立Item与这个Measure Group的关联。这些设置好后,处理Cube;再创建Calculation
sum((Measures.SellPrice-Measures.RealSellPrice)*Measures.SellQty)

一般情况,不建议把数值型数据放到dim中,除非这个数值是个稳定的属性,否则会给数据分析带来麻烦。

------其他解决方案--------------------
缺点是,对应没有合计的ItemID都会生成。

另外,如果这个是一个比较大量的计算。
LZ可以作为一个全新的量度加进来。 这样更能发挥Cube的优势。

------其他解决方案--------------------
怎么添加成新的度量呢?

如果在一个数据表中的内容的话在数据视图上的sql写一个计算列,应该就可以了

但这个是两个表,只能做成一个视图才可以做成新的计算列,或者说原来就应该就这么实现吗?