建模和查询多个事实表

问题描述 投票:1回答:1

美好的一天!

我有一个关系数据源,有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表格模型或计算来处理这种报告?

不幸的是,我不能在数据源方面重新建模数据。

enter image description here

sql-server ssas powerbi dax ssas-tabular
1个回答
0
投票

模式可以包含一个或多个事实,但这些事实不会通过任何关键关系链接。最好不要在单个查询中连接事实表,就像查询规范化/跨国数据库一样。由于多对多连接的性质等 - 如果尝试,结果将是不正确的。

而是建议遵循Kimball称之为“钻越”的过程。钻取过程可分为两个阶段。在第一阶段,查询每个星,并将结果汇​​总到一个共同的细节级别。在第二阶段,这些结果集基于它们的共同维度进行合并。

Kimball site提供了很好的读物

类似的问题可在此处查阅:Design of a data warehouse with more than one fact tables

© www.soinside.com 2019 - 2024. All rights reserved.