我对BI建模很陌生,并且已经分配了一个项目来为患者管理系统(数百万行)创建BI解决方案。系统中没有销售或附加信息。基本上所有的措施都是计数。我发现很难找到我需要的模型的好示例/教程,因为大多数BI实现似乎都是基于销售。
如果有人可以帮我解决我的建模问题,我将非常感激。
实现中的表(为简洁而排除的列)是
Patient (
Key -> Surrogate Key
PatientId -> Source System Id
Name -> Text
AgeKey -> FK to Age Dimension Table
NationalityKey -> FK to Nationality Dimension Table
DateOfBirthKey -> FK to Date Dimension Table
GenderKey -> FK to Gender Dimension Table
etc.
)
Referral (
Key -> Surrogate Key
ReferralId -> Source System Id
PatientKey -> FK to PatientTable
ReferredAtDateKey -> FK to Date Dimension Table
PriorityKey -> FK to Priority Dimension Table
SpecialtyKey -> FK to Specialty Dimension Table
etc
)
WaitingList(
Key -> Surrogate Key
WaitingListId -> Source System Id
ReferralKey -> FK to ReferralTable
AddedToListDateKey -> FK to Date Dimension Table
RemovedFromListDateKey -> FK to Date Dimension Table
StatusKey -> FK to Waiting List Status Table
Position -> int
etc
)
我需要能够围绕患者,推荐和等待列表构建报告/图表,因此我使用视图在SSAS中创建我的事实表。例如:
FactPatient (
Key -> Surrogate Key
PatientId -> Source System Id
Name -> Text
AgeKey -> FK to Age Dimension Table
NationalityKey -> FK to Nationality Dimension Table
DateOfBirthKey -> FK to Date Dimension Table
GenderKey -> FK to Gender Dimension Table
etc.
)
FactReferral (
Key -> Surrogate Key
ReferralId -> Source System Id
-- Patient
Name -> Text
AgeKey -> FK to Age Dimension Table
NationalityKey -> FK to Nationality Dimension Table
DateOfBirthKey -> FK to Date Dimension Table
GenderKey -> FK to Gender Dimension Table
etc.
-- Referral
ReferredAtDateKey -> FK to Date Dimension Table
PriorityKey -> FK to Priority Dimension Table
SpecialtyKey -> FK to Specialty Dimension Table
etc
)
FactWaitingList(
Key -> Surrogate Key
WaitingListId -> Source System Id
-- Patient
Name -> Text
AgeKey -> FK to Age Dimension Table
NationalityKey -> FK to Nationality Dimension Table
DateOfBirthKey -> FK to Date Dimension Table
GenderKey -> FK to Gender Dimension Table
etc
-- Referral
ReferredAtDateKey -> FK to Date Dimension Table
PriorityKey -> FK to Priority Dimension Table
SpecialtyKey -> FK to Specialty Dimension Table
etc
-- Waiting List
AddedToListDateKey -> FK to Date Dimension Table
RemovedFromListDateKey -> FK to Date Dimension Table
StatusKey -> FK to Waiting List Status Table
Position -> int
etc
)
正如您所看到的,我正在尝试保留Star模式,因为我将相关对象的外键/关系包括在Dimension表中,例如FactReferral拥有所有FactPatient关系。
这是建模的正确方法吗?或者我应该使用FactReferral的Snowflake架构与FactPatient有关系吗?
我应该为没有关系的患者创建额外的非规范化维度,然后在它和FactReferral之间创建关系吗? e.g。
DimPatient (
Key -> Surrogate Key
PatientId -> Source System Id
Name -> Text
Age-> int
Nationality -> Text
DateOfBirth -> Date
GenderKey -> Text
etc.
)
FactReferral (
Key -> Surrogate Key
ReferralId -> Source System Id
-- Patient
PatientKey -> FK to Patient Dimension Table
-- Referral
ReferredAtDateKey -> FK to Date Dimension Table
PriorityKey -> FK to Priority Dimension Table
SpecialtyKey -> FK to Specialty Dimension Table
etc
)
最终我不确定如何建模一对多关系树。还有其他与推荐相关的表格,例如我已从我的描述中排除的评估和出勤,但我遇到了同样的问题。
非常欢迎任何帮助或建议。
由于
答案 0 :(得分:0)
http://www.sqlservercentral.com/Forums/Topic1728036-17-1.aspx
http://www.sqlservercentral.com/Forums/FindPost1728079.aspx
PB_BI提供的答案
我不认为你需要一个" FactPatient"你底层的表 数据,因为它看起来像是完全维度的。相反,当它 来创建您的立方体,使用患者维度表来创建 与患者有事实关系的量度组 维度(对于计数等)。然后你的FactReferral和 FactWaitingList表只需要有1个外键即可 患者的维度(而不是所有患者特定的,如 国籍钥匙等。)。
我按照建议编写了一个非规范化视图DimPatients并将其添加到我的数据源视图中。然后,我可以从FactReferral添加一个关系 - > PatientKey。
在此之后,我基于DimPatients视图创建了一个Dimension,并且能够将DimPatients中的所有列添加为维度的属性。这使他们成为可查询的。
我做的最后一件事是为DimPatient维度添加一个Measure Group,使我能够对Patient数据执行查询
希望有一天能帮助别人
马特