![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I found that 1) some cubes' processing SQL (the SQL used to pull data when processing) include/join all the dimension tables. 2) But some cubes don't join all the dimension tables. So if the joint keys of fact table have some values that not exists in the join key of the dimension tables. These two situations behave differently: For (1), there will have less rows in the cube because the joining elimilated these rows not exists in the joined dimension tables. For (2), the process will report error that "some value exists in fact table but not in level "..." of dimension... How to force the cube processing as the second case? Thanks. |
#3
| |||
| |||
|
|
You need to update Dimension table before processing cube. Follow below logic to make sure you are including all Fact keys into dimension table. once you add new members into Dimtable you have to process dimension first. insert into DimTable select x,y,z from Facttable where x not in(select x rom DimTable) Kris "nick" wrote: I found that 1) some cubes' processing SQL (the SQL used to pull data when processing) include/join all the dimension tables. 2) But some cubes don't join all the dimension tables. So if the joint keys of fact table have some values that not exists in the join key of the dimension tables. These two situations behave differently: For (1), there will have less rows in the cube because the joining elimilated these rows not exists in the joined dimension tables. For (2), the process will report error that "some value exists in fact table but not in level "..." of dimension... How to force the cube processing as the second case? Thanks. |
#4
| |||
| |||
|
|
Thanks. Yes, I know i need process dimension first to make everything correct. However, in the case 1 I mentioned, the processing SQL join the dimension table and eliminated the rows with unmatched fact keys and thus hide the error. That's why I want the case 2 always so the error will raise explicitly. And I don't understand why Analysis Service handle(generate) the SQL differently. "Kris" wrote: You need to update Dimension table before processing cube. Follow below logic to make sure you are including all Fact keys into dimension table. once you add new members into Dimtable you have to process dimension first. insert into DimTable select x,y,z from Facttable where x not in(select x rom DimTable) Kris "nick" wrote: I found that 1) some cubes' processing SQL (the SQL used to pull data when processing) include/join all the dimension tables. 2) But some cubes don't join all the dimension tables. So if the joint keys of fact table have some values that not exists in the join key of the dimension tables. These two situations behave differently: For (1), there will have less rows in the cube because the joining elimilated these rows not exists in the joined dimension tables. For (2), the process will report error that "some value exists in fact table but not in level "..." of dimension... How to force the cube processing as the second case? Thanks. |
#5
| |||
| |||
|
|
What you are seeing is what the "optimize schema" wizard in the cube editor is doing. See BOL for rmore details. The preferred (although not the default) operations would be to the optimize schema wizard remove the joins for all dimensions ( if you meet the requirements in BOL). The only join which cannot be eliminated (without poking the regsitry) is for the data slice if you are using partitioning. This is talked about in the AS Operations Guide also http://www.microsoft.com/technet/pro.../anservog.mspx -- Dave Wickert [MSFT] dwickert (AT) online (DOT) microsoft.com Program Manager BI SystemsTeam SQL BI Product Unit (Analysis Services) -- This posting is provided "AS IS" with no warranties, and confers no rights. "nick" <nick (AT) discussions (DOT) microsoft.com> wrote in message news:511011E3-20E3-4CA3-9C39-F23BA8849AFE (AT) microsoft (DOT) com... Thanks. Yes, I know i need process dimension first to make everything correct. However, in the case 1 I mentioned, the processing SQL join the dimension table and eliminated the rows with unmatched fact keys and thus hide the error. That's why I want the case 2 always so the error will raise explicitly. And I don't understand why Analysis Service handle(generate) the SQL differently. "Kris" wrote: You need to update Dimension table before processing cube. Follow below logic to make sure you are including all Fact keys into dimension table. once you add new members into Dimtable you have to process dimension first. insert into DimTable select x,y,z from Facttable where x not in(select x rom DimTable) Kris "nick" wrote: I found that 1) some cubes' processing SQL (the SQL used to pull data when processing) include/join all the dimension tables. 2) But some cubes don't join all the dimension tables. So if the joint keys of fact table have some values that not exists in the join key of the dimension tables. These two situations behave differently: For (1), there will have less rows in the cube because the joining elimilated these rows not exists in the joined dimension tables. For (2), the process will report error that "some value exists in fact table but not in level "..." of dimension... How to force the cube processing as the second case? Thanks. |
![]() |
| Thread Tools | |
| Display Modes | |
| |