Simple AdwWorks cube has time dimension with years range from 2000-th to 2007-th. Fact data exists for 2001-2006. 2000-th and 2007-th are empty. Ok.
I'm insert new data to source fact table for 2001-th and process the cube. All changes immediately reflect in measure value (it grows). But new data for 2000-th don't reflect in measure value growing. Nevertheless, during cube processing SSAS sees new rows for both cases (the value of rows count grows), and sql profiler catches equal batches of commands for 2001-th and 2000-th. But measure value grows only for 2001-th.
I've cleared mdx-script - it contains now only calculate command. Now there is:
a) select sum(measure value) on fact tables in source database reflect new rows for both cases
b) cube processing sees changes for both cases
c) mdx-script is clear (there are no scopes, witch can set measure value to null )
d) select [sales amount] on cube reflects this changes only for 2001-th, not for 2000-th
One day later.. :)
The problem seems as resolved, but... I don't know: is it tech and/or logic feature or bug..
So, what is happened.. Simple mdx query:
select [sales amount] on 0,
[some date from 2000] on 1
gives null value for [sales amount], but for [some date from 2001] value is not empty. In database fact table both values (results of sum(salesamount) for both dates) are not empty. After research i found that there was one measure ([Temp]) in the [sales amount] measure group for which MeasureExpression was set to [sales amount]*[average rate] ([average rate] - measure from [Fact Currency Rate] measure group). Fact table for [Fact Currency Rate] measure group didn't contain data for 2000-th. I've insert it and - vualya - all work and for 2000-th now.
Main question is: why ssas calculate MeasureExpression formulas for measures, which I'm not request in a query, and why ssas set requested by me value to null, if it does not depend from formula of MeasureExpression property of unrequested measure?
Is it bug or "defense from fool"?. There is another sample of such strange ssas behaviour. I mean usage of UnaryOperatorColumn property. If it is set for any attribute of any dimension, then it influences on every query, even if this attribute not is a part of this query. For example
select [sales amount] on 0
returns different results, which depends by setting of UnaryOperatorColumn for some dimension attribute..
What all it mean?