SSAS多维数据集建模事实或维度 - 无添加列

时间:2015-10-15 08:53:42

标签: sql-server ssas cube powerpivot olap-cube

我对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
)

最终我不确定如何建模一对多关系树。还有其他与推荐相关的表格,例如我已从我的描述中排除的评估和出勤,但我遇到了同样的问题。

非常欢迎任何帮助或建议。

由于

1 个答案:

答案 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数据执行查询

希望有一天能帮助别人

马特