日期:2014-05-17  浏览次数:20494 次

请教高手:OLAP 修改度量值数据类型
请教高手:

OLAP系统的一个度量值在统计sum时出现数据溢出,准备将其中一个度量值由原来的int型改为BigInt,对应的事实表的字段仍然是int型,历史数据较多,不打算更改。
在更改时遇到如下错误:
度量值的数据类型必须与其源数据类型相同,这是因为未将聚合函数设置为 count 或 distinct count。

度量值默认的聚合函数是sum,事实上也应该用sum。

请问还有其他方法能解决这个问题么?
谢谢了。
------最佳解决方案--------------------
你在sum的时候里面convert试过没?
------其他解决方案--------------------
如果实在,不行,那有个恶心的办法试试,但是记得做好备份,就是新建一个表,和源表一样,只是数据类型是改过了的,然后把数据先导入那个表,删除原表,重命名新表为原表。
------其他解决方案--------------------
因为有很多的报表都是直接sum的,如果不改度量值的数据类型,所有的报表都要修改,工作量比较大。

引用:
你在sum的时候里面convert试过没?

------其他解决方案--------------------
你的报表没有用到索引视图吧?
------其他解决方案--------------------
引用:
你的报表没有用到索引视图吧?


没有。

改olap的度量值的数据类型行不通了?
我现在很纠结啊……
------其他解决方案--------------------
引用:
如果实在,不行,那有个恶心的办法试试,但是记得做好备份,就是新建一个表,和源表一样,只是数据类型是改过了的,然后把数据先导入那个表,删除原表,重命名新表为原表。


确实恶习啊,一张事实表10天一个分区,总共将近3TB的数据……,一晚上也弄不完啊。
有没有其他好的方法啊。
------其他解决方案--------------------
解决了,Alter的时候把source的datatype也更改一下,之前没改……
但是修改之后的度量值组将不能访问,需要重新process一下。

<Measure>
<ID>SaleCount</ID>
<Name>销量</Name>
<DataType>BigInt</DataType>
<Source>
<DataType> BigInt</DataType>
<Source xsi:type="ColumnBinding">
<TableID>dbo_SalesFact</TableID>
<ColumnID>Sale_Count</ColumnID>
</Source>
</Source>
</Measure>