 |
|
 |
|
Next: DTS Designer Error
|
| Author |
Message |
External

Since: Jan 16, 2008 Posts: 2
|
(Msg. 1) Posted: Wed Jan 16, 2008 8:03 pm
Post subject: Fact Table(s) Design Question Archived from groups: microsoft>public>sqlserver>olap (more info?)
|
|
|
Please forgive the cross-posting, I wasn't sure the best place to put
this question.
I'm modeling a procurement process as part of a data warehouse project
- and in this case what we're procuring is people (filling jobs). The
basic process is that the company creates a requisition, and that
requisition will be to hire X number of people for a certain type of
job. People then apply for those jobs until we hire enough to fill the
number of openings from the requisition.
In the transactional system, there are two main tables that hold the
information for this process. One is Requisition, which has info like
the number of openings and the min and max wage for the jobs. The
second is RequisitionApplicants, which has a row for every person that
applies for the job, and a flag that indicates of that person was
hired or not. For the most part, the facts we're concerned with are
counts - how many Requisitions there are by the age of the
requisition, department, etc... and how many applicants we had vs how
many hired by various dimensions.
There's a disagreement among the design team about how this should be
modeled. My contention is that there should be two fact tables, one
based on the Requisition, another based on RequisitionPeople. This
will allow us to easily do both kinds of counts that we need and keep
the design clean. It would look like:
FactRequsition
--------------
AgeBucketKey
DepartmentKey
NumberOfOpenings
MaxRate
FactRequisitionApplicant
------------------------
PersonKey
StatusKey
HiredFlag
Another team member says we should combine them into one table with
the granularity being the applicant from RequisitionPeople - rolling
everything up into one table. His design would be:
FactRequisitionApplicant
-----------------------
AgeBucketKey
DepartmentKey
PersonKey
StatusKey
NumberOfOpenings
MaxRate
HiredFlag
The dimension keys from the old FactRequisition table would be
repeated for every applicant to that requisition. Similarly, the facts
would be repeated as well.
I have a lot of problems with this. The grain feels all wrong and
incoherent. It seems like we're unnecessarily repeating data and
dimension keys. It also seems like the counts I need to come up with
will be more difficult to obtain. For instance, if we have 5
requisitions and 22 people have applied to the various jobs from those
requisitions, we'll have 22 rows in the fact table. Counting the
applicants is easy, but counting the requisitions is more difficult.
My question is - am I right? Which design is better? >> Stay informed about: Fact Table(s) Design Question |
|
| Back to top |
|
 |  |
External

Since: Jun 26, 2007 Posts: 35
|
(Msg. 2) Posted: Thu Jan 17, 2008 2:01 am
Post subject: Re: Fact Table(s) Design Question [Login to view extended thread Info.] Archived from groups: per prev. post (more info?)
|
|
|
I don't think there's any question here - in the below situation two fact
tables are better than one. I don't see how you would get a count of
requisitions with the denormalised model - at least, not without some
seriously non-performant MDX!
wrote in message
> Please forgive the cross-posting, I wasn't sure the best place to put
> this question.
>
> I'm modeling a procurement process as part of a data warehouse project
> - and in this case what we're procuring is people (filling jobs). The
> basic process is that the company creates a requisition, and that
> requisition will be to hire X number of people for a certain type of
> job. People then apply for those jobs until we hire enough to fill the
> number of openings from the requisition.
>
> In the transactional system, there are two main tables that hold the
> information for this process. One is Requisition, which has info like
> the number of openings and the min and max wage for the jobs. The
> second is RequisitionApplicants, which has a row for every person that
> applies for the job, and a flag that indicates of that person was
> hired or not. For the most part, the facts we're concerned with are
> counts - how many Requisitions there are by the age of the
> requisition, department, etc... and how many applicants we had vs how
> many hired by various dimensions.
>
> There's a disagreement among the design team about how this should be
> modeled. My contention is that there should be two fact tables, one
> based on the Requisition, another based on RequisitionPeople. This
> will allow us to easily do both kinds of counts that we need and keep
> the design clean. It would look like:
>
> FactRequsition
> --------------
> AgeBucketKey
> DepartmentKey
> NumberOfOpenings
> MaxRate
>
> FactRequisitionApplicant
> ------------------------
> PersonKey
> StatusKey
> HiredFlag
>
> Another team member says we should combine them into one table with
> the granularity being the applicant from RequisitionPeople - rolling
> everything up into one table. His design would be:
>
> FactRequisitionApplicant
> -----------------------
> AgeBucketKey
> DepartmentKey
> PersonKey
> StatusKey
> NumberOfOpenings
> MaxRate
> HiredFlag
>
> The dimension keys from the old FactRequisition table would be
> repeated for every applicant to that requisition. Similarly, the facts
> would be repeated as well.
>
> I have a lot of problems with this. The grain feels all wrong and
> incoherent. It seems like we're unnecessarily repeating data and
> dimension keys. It also seems like the counts I need to come up with
> will be more difficult to obtain. For instance, if we have 5
> requisitions and 22 people have applied to the various jobs from those
> requisitions, we'll have 22 rows in the fact table. Counting the
> applicants is easy, but counting the requisitions is more difficult.
>
> My question is - am I right? Which design is better? >> Stay informed about: Fact Table(s) Design Question |
|
| Back to top |
|
 |  |
External

Since: Dec 13, 2007 Posts: 34
|
(Msg. 3) Posted: Thu Jan 17, 2008 10:51 am
Post subject: Re: Fact Table(s) Design Question [Login to view extended thread Info.] Archived from groups: per prev. post (more info?)
|
|
|
Two is obviously better than one, simply because you can't get counts
of requisitions without a count distinct.
BTW, where are the fields on FactRequisitionApplicant that ties the
applicant back to the req? How would you be able to tell the fill
ratio, for instance - by requisition, how many of the desired spots
have been filled? This seems like a pretty basic reporting
requirement.
On Jan 16, 11:36 pm, "Will Alber" wrote:
> I don't think there's any question here - in the below situation two fact
> tables are better than one. I don't see how you would get a count of
> requisitions with the denormalised model - at least, not without some
> seriously non-performant MDX!
>
> wrote in message
>
>
>
>
>
> > Please forgive the cross-posting, I wasn't sure the best place to put
> > this question.
>
> > I'm modeling a procurement process as part of a data warehouse project
> > - and in this case what we're procuring is people (filling jobs). The
> > basic process is that the company creates a requisition, and that
> > requisition will be to hire X number of people for a certain type of
> > job. People then apply for those jobs until we hire enough to fill the
> > number of openings from the requisition.
>
> > In the transactional system, there are two main tables that hold the
> > information for this process. One is Requisition, which has info like
> > the number of openings and the min and max wage for the jobs. The
> > second is RequisitionApplicants, which has a row for every person that
> > applies for the job, and a flag that indicates of that person was
> > hired or not. For the most part, the facts we're concerned with are
> > counts - how many Requisitions there are by the age of the
> > requisition, department, etc... and how many applicants we had vs how
> > many hired by various dimensions.
>
> > There's a disagreement among the design team about how this should be
> > modeled. My contention is that there should be two fact tables, one
> > based on the Requisition, another based on RequisitionPeople. This
> > will allow us to easily do both kinds of counts that we need and keep
> > the design clean. It would look like:
>
> > FactRequsition
> > --------------
> > AgeBucketKey
> > DepartmentKey
> > NumberOfOpenings
> > MaxRate
>
> > FactRequisitionApplicant
> > ------------------------
> > PersonKey
> > StatusKey
> > HiredFlag
>
> > Another team member says we should combine them into one table with
> > the granularity being the applicant from RequisitionPeople - rolling
> > everything up into one table. His design would be:
>
> > FactRequisitionApplicant
> > -----------------------
> > AgeBucketKey
> > DepartmentKey
> > PersonKey
> > StatusKey
> > NumberOfOpenings
> > MaxRate
> > HiredFlag
>
> > The dimension keys from the old FactRequisition table would be
> > repeated for every applicant to that requisition. Similarly, the facts
> > would be repeated as well.
>
> > I have a lot of problems with this. The grain feels all wrong and
> > incoherent. It seems like we're unnecessarily repeating data and
> > dimension keys. It also seems like the counts I need to come up with
> > will be more difficult to obtain. For instance, if we have 5
> > requisitions and 22 people have applied to the various jobs from those
> > requisitions, we'll have 22 rows in the fact table. Counting the
> > applicants is easy, but counting the requisitions is more difficult.
>
> > My question is - am I right? Which design is better?- Hide quoted text -
>
> - Show quoted text - >> Stay informed about: Fact Table(s) Design Question |
|
| Back to top |
|
 |  |
| Related Topics: | Cube Design | Combining fact tables with different hierarc.. - Hello, I need to design a cube that includes two separate fact tables with different levels of dimension attributes. Below are my dimensions and attributes ( i simplified them for discussion purposes): Fact: Sales Fact: Forecast DimTime: Year > Qt...
"Not in" Fact Table - Hi Guys, I need to do a kind of "not in" analysis with the following scenario: * I have a fact table of people went to some places. * I have a route table with all the possible routes from going place to place. This is a parent-child non-hi...
One table for dimension and fact table - It seems like it's no longer possible to build a cube from only one table or view in SSAS 2005 or 2008. Is this correct? We currently have two tables (almost identical) that are unioned together in a view. And we have no foreign keys at all. ...
One TO Many between fact table to dimention - Hi, I craeted a fact table that observe Status of orders. mean that each order contain a 4 status (Draft, Approval , Action, Final) ===> 4 rows in fact table for each order. also I need to show orderPrice and customerName. my problem is how can I....
2 Fact Table one on Year and one in Day - Hi, I would like to know how to do. I have one fact table at Day level and a second one at Year Level. Could I use the same dimension table, my time table has a Day as a Key, and Year is an attribute of my table. Thanks |
|
You can post new topics in this forum You can reply to topics in this forum You can edit your posts in this forum You can delete your posts in this forum You can vote in polls in this forum
|
|
|
|
 |
|
|