sql - 数据仓库模型方法

标签 sql ssis data-warehouse

我们正在构建健康数据仓库。并且一直在讨论数据仓库的基本结构。我需要您对以下结构的优缺点提出建议。 DWH 将用于报告和研究目的。它将是一个近乎实时的数据仓库,延迟时间约为 5-10 分钟。

源数据库有一个 Encounter/visit 表。一切都保存在这张表中。它是链接一切的中央表。因此,如果我需要在生产数据库中获取患者的行程,我只需转到会诊/就诊表,看看患者前来治疗/入院或从急诊室返回,从急诊室入院的次数等等

模型 1 ->

具有公共(public)字段(如 encounter_id、arrival_date、care_type 等)的 Encounter/visit 表

然后可以根据遇到特定字段的遇到类型构建更多表: Encounter_Emergency(紧急特定领域,如紧急诊断、分流类别等) 遭遇_住院 遇到_门诊

模型 2 -> 将单独的表作为基表,然后在顶部创建一个 View ,然后将所有遭遇类型放在一起。

Encounter_Emergency(紧急特定领域,如紧急诊断、分诊类别等) 遭遇_住院 遇到_门诊

模型 3 ->

以所有字段为源数据库的遇到/访问表 并根据遇到特定字段的遇到类型创建 View :

view_Encounter_Emergency 查看_遭遇_住院 查看_遭遇_门诊

这些 View 可以进一步与 emergency_diagnosis 表结合以获得诊断或 emergency_alerts 表以访问警报等。

最佳答案

首要考虑的是遭遇战类型增加、删除或更改的频率。

模型 B 将需要在任何此类更改之前进行大量返工,以确保继续捕获数据。其他两个模型中的任何一个都将继续捕获重新分类的数据,但需要返工才能报告。

在A和C之间,问题就变成了流量。 View 相对容易向上/向下旋转,但它们会给那个大的基表带来负载。如果 DW 上没有大量负载,这可能是可以接受的。但是,如果会有广泛的报告(专业提示总是比企业告诉您的报告更广泛),将数据分解为更有利独立的 table 。

当然,维护所有这些表会产生 ETL 开销。

为了交付速度,也许构建模型 C,但构建模型 A 以防消费需要更强大的模型。作为记录,您可以构建没有任何类型的 vw_ 前缀的 View ,或者在名称中没有任何其他标识符,让用户知道它们是 View 。然后,稍后,您可以用同名表替换它们,针对旧 View 的遗留查询将继续工作。我在相反的方向做了同样的事情,潜入 View 以替换多余的表。

关于sql - 数据仓库模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52659251/

相关文章:

sql-server - SSIS 并行运行多个执行进程任务

mysql - 如何利用 memsql 生成合并多个表的报告

MySQL - 如何加入这些表以获得正确的结果?

mysql - 更改带有编号结果集(有间隙)的查询以返回没有间隙的结果,包含每个数字。

通过 SQL Server 作为作业运行时 SSIS 包失败

mysql - SSIS部署包错误

mysql - 如何连接两个sql查询?

c# - 在部署后处理 nHibernate/Fluent nHibernate 中的模式更新

database - 导出 Google Analytics 数据(事件日志)

sql - Azure Sql 数据仓库表记录的最大列数和大小是多少?