Symptoms
You don't see what you expect to see. As an example, you get a negative amount for aggregation in an INT type Measures even though it only contains positive values. To explain this I'll take above mention example.Cause
This is most likely caused by the capacity insufficiency of INT data type.Resolution
Update Measures' data type to BIGINT (Since that will be the next large best datatype for INT).Into the Depth
When the data warehouse fact table contains records like below,Record # | Amount | Month_Key | Year_Key |
---|---|---|---|
Record 1 | 500000000 | 2016/Jan | 2016 |
Record 2 | 500000000 | 2016/Feb | 2016 |
Record 3 | 500000000 | 2016/Mar | 2016 |
Record 4 | 1000000000 | 2016/Apr | 2016 |
Record 5 | 1000000000 | 2016/May | 2016 |
Record 6 | 100000000 | 2016/Jun | 2016 |
Record 7 | 500000000 | 2016/Jul | 2016 |
Querying amount for each month will show positive values
The amount for January 2016
2016/Jan 500000000
The amount for May 2016
2016/May 1000000000
But when querying for the year 2016 result will give a negative value
2016 -32215793781
This is caused because of the insufficient capacity in the datatype given for the Amount measure. Once you assign the right datatype instead of the minus value it will show the right value.
Don't just pick datatype by looking at the fact table. Always consider the aggregate value of the measure, if it exceeds the assigned datatype's capacity. Go to the next large best datatype.
So picking the right data types for the measure is important :)
May the force be with you!
Comments
Post a Comment