美好的一天!
我有一个关系数据源,包含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表格模型或计算以处理这种报告?
不幸的是,我不能在数据源端重新建模数据。
答案 0 :(得分:0)
模式可以具有一个或多个事实,但是这些事实没有任何关键关系链接。最佳实践是不要像在乳清的标准化/跨国数据库中那样在单个查询中联接事实表。由于多对多连接的性质等,如果尝试,结果将是不正确的。
相反,建议您遵循Kimball所说的“钻探”过程。整个钻取过程可以分为两个阶段。在第一阶段,查询每颗星星,然后将结果汇总到相同的详细程度。在第二阶段,这些结果集将基于它们的共同维度进行合并。
中提供了有关此内容的详细信息这里有一个类似的问题可供参考:Design of a data warehouse with more than one fact tables