美好的一天!
我有一个关系数据源,有3个事实表,彼此相关,模型相关
患者医生访问(EncounterEventFact表),为患者分配诊断(DiagnosisEventFact表)并收集患者的实验室结果(LabComponentResultFact表),如下图所示。他们都与EncounterKey分享了一把钥匙,指明了对医生的独特访问。所有EncounterKeys都在EncounterEventFact表中,只有一次。我在内存中使用SSAS表格来建模数据。
每个事实表都有几百万行(2-4 mil)。 DiagnosisDim有几万行。 PatientDim有几百万行(<10密耳)。 LabDim有几百条记录。这是一个只有3个主要尺寸的简化模型。
我的测量结果是DiagniveEventFact上的EncounterKeys和LabComponentResultFact上不同的EncounterKeys计数。
正在开发的样本报告在诊断昏暗的一侧进行选择,显示该诊断的唯一访问计数和该诊断的实验室收集访问计数。
诊断count_visits_diagnosis count_visits_labs
ABC 5 0
DEF 10 5
等等
当我在报告中选择所有诊断时出现问题。诊断计数立即测量负载,而实验室计数则需要永久测量。当我选择一些诊断报告时,工作速度很快。
如何有效地改进我的SSAS表格模型或计算来处理这种报告?
不幸的是,我不能在数据源方面重新建模数据。
模式可以包含一个或多个事实,但这些事实不会通过任何关键关系链接。最好不要在单个查询中连接事实表,就像查询规范化/跨国数据库一样。由于多对多连接的性质等 - 如果尝试,结果将是不正确的。
而是建议遵循Kimball称之为“钻越”的过程。钻取过程可分为两个阶段。在第一阶段,查询每个星,并将结果汇总到一个共同的细节级别。在第二阶段,这些结果集基于它们的共同维度进行合并。
Kimball site提供了很好的读物
类似的问题可在此处查阅:Design of a data warehouse with more than one fact tables