建模和查询多个事实表

时间:2018-03-13 08:21:03

标签: sql-server ssas powerbi dax ssas-tabular

美好的一天!

我有一个关系数据源,包含3个相互关联的事实表和模型

患者医生访问(EncounterEventFact表),为患者分配诊断(DiagnosisEventFact表)并收集患者的实验室结果(LabComponentResultFact表),如下图所示。他们都与EncounterKey分享了一把钥匙,指明了对医生的独特访问。所有EncounterKeys都在EncounterEventFact表中,只有一次。我在内存中使用SSAS表格来建模数据。

每个事实表都有几百万行(2-4 mil)。 DiagnosisDim有几万行。 PatientDim有几百万行(<10密耳)。 LabDim有几百条记录。这是一个只有3个主要尺寸的简化模型。

我的测量结果是DiagnosisEventFact上的EncounterKeys和LabComponentResultFact上不同的EncounterKeys计数。

正在开发的样本报告在诊断昏暗侧进行选择,显示该诊断的唯一访问次数以及该诊断的实验室收集访问次数。

诊断count_visits_diagnosis count_visits_labs

ABC 5 0

DEF 10 5

当我在报告中选择所有诊断时出现问题。诊断计数立即测量负载,而实验室计数则需要永久测量。当我选择一些诊断时,报告工作很快。

如何有效地改进我的SSAS表格模型或计算以处理这种报告?

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

enter image description here

1 个答案:

答案 0 :(得分:0)

模式可以具有一个或多个事实,但是这些事实没有任何关键关系链接。最佳实践是不要像在乳清的标准化/跨国数据库中那样在单个查询中联接事实表。由于多对多连接的性质等,如果尝试,结果将是不正确的。

相反,建议您遵循Kimball所说的“钻探”过程。整个钻取过程可以分为两个阶段。在第一阶段,查询每颗星星,然后将结果汇总到相同的详细程度。在第二阶段,这些结果集将基于它们的共同维度进行合并。

Kimball site

中提供了有关此内容的详细信息

这里有一个类似的问题可供参考:Design of a data warehouse with more than one fact tables