定期快照事实表 - 设计问题

问题描述 投票:0回答:3

我正在设计一个新的周期性快照事实表。我正在调查健康保险索赔以及人们欠保险公司的金额以及他们已经支付的金额。表中的数据将如下所示。

CLAIM_ID    TIME_KEY   AMOUNT_OWED     PAID
123        31.1.2000          1000     0
123        28.2.2000           900     100
123        31.3.2000           800     200
123        30.4.2000             0     1000
123        31.5.2000             0     1000
123        30.6.2000             0     1000
123        31.7.2000             0     1000
123        31.8.2000             0     1000
...

正如您所见,在 2000 年 4 月 30 日之后,为 Claim_id 123 插入新数据是没有意义的,因为它不再更改(可以合理确定这种情况不会发生)。停止为此声明插入数据是个好主意还是应该这样做直到时间结束:)?

我主要关心的是在设计数据仓库表时坚持最佳实践。

感谢您的回答!

database data-warehouse fact fact-table
3个回答
1
投票

如果有的话,通常您会选择定期快照

a) 大量交易以及

b) 您需要在某个时间点有效访问数据(在您的情况下是月底)

如果您每月有 50 笔索赔交易,并且索赔平均活跃一年,即使您将持有不活跃索赔 50 年(您可能不会这样做;),您也将从这种设计中获利。

您的疑虑表明您在每个索赔生命周期内没有那么多交易。在这种情况下,您应该考虑使用一个

事实表来存储每笔交易。

对于非活动声明,您绝对不会有任何开销,但要在特定时间获取快照信息,您必须读取整个表。

相反,定期快照通常是按快照时间进行分区的,因此访问非常有效。 没有

免费午餐,但节省空间和有效访问


0
投票
只是一些想法...

    除非您可以在一天内针对索赔进行多次付款(以及可能的其他交易,例如增加所欠金额的利息),否则您所显示的并不是真正的快照事实,而是交易事实。给出的正常示例是一个银行账户,每天有多个进/出交易,然后是日末(或月末)头寸的快照。显然我不知道您的业务模式,但似乎不太可能针对单个索赔每天有多个交易
  1. 如果自创建最后一个事实记录以来索赔没有发生任何更改,那么创建新的事实记录似乎没有什么意义

0
投票
我同意 Marmite Bomber 的观点,在你的情况下,交易事实表应该足够了。

但在一般情况下,你是对的,在快照表中重复数据是没有意义的。当快照表包含长时间重复事实时,您应该使用

时间跨度事实表来代替:

CLAIM_ID VALID_FROM VALID_TO AMOUNT_OWED PAID 123 31.1.2000 27.2.2000 1000 0 123 28.2.2000 30.3.2000 900 100 123 31.3.2000 29.4.2000 800 200 123 30.4.2000 31.12.9999 0 1000 ...
    
© www.soinside.com 2019 - 2024. All rights reserved.