如何解决2事实表和企业想要知道一个事实与另一个事实的总和的百分比
我们的仓库中有2个事实表。
案例事实和突发事件事实。两者都有维度联接到日期维度以及其他各种项目
在我们的OLTP中,这两个表与每个案例事件都相关。因此,一个案例可以有多个事件。
OLTP表结构
- 案例表CaseId(主键)
- 地址
- 等。
事件表
- IncidentId(主要)
- CaseId(“案例”表的外键)
- IncidentType
- 等。
案例是事件的1:n
问题是这样的: 该企业想知道IncidentType为“ X”的案例总数的百分比
在我们的仓库中,如果我们不将一个事实表连接到另一个事实表,那么我不确定哪种最好的处理方式。
我需要的基本数据:
- 在日期时间范围内需要不同的CaseId和IncidentType
- 然后需要事件类型计数(分子)
- 然后需要相同时间范围内的案例数(分母)
- 然后可以按州,地区,部门之类的其他任何东西分组。
如果本质上需要来自不同数据集市的2个数据点,则不确定如何处理仓库结构。
解决方法
这是数据仓库中的标准模式:正确的方法(在大多数情况下)是在2个单独的查询中检索数据,将2个结果集结合在一起(使用通用的,一致的维),然后结合查询结果集以获得最终答案。
对于您的具体示例,我建议:
查询1 :计算与事件表不同的CaseId(按任何必需的维度值分组)
查询2 :对事件表中的IncidentId进行计数,其中IncidentType =“ X”按任何必需的维值分组(如果一个案例可以有多个相同类型的事件以及您希望如何操作,则可能需要附加逻辑在您的计算中进行处理)。这些分组值需要与查询1中的值匹配。
查询3 :通过常见的“分组依据”字段将查询1的结果与查询2的结果结合在一起,然后将一个计数除以另一个就得出百分比
用SQL编写的确切方式取决于您的DBMS,但在大多数情况下,使用CTE可能是最简单的解决方案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。