影响事实的维度 table
Reaffecting dimension of fact table
开始建星图了,喜欢^^
我在维度建模方面遇到了设计问题。
对于星型模式中的每笔交易,我都有一个事实 table(最高粒度)
类似的东西(简化版)
transaction_facts
- id
- account_dim
- date_dim
- status_dim
- amount
status_dim
- id
- code
- description
- final
对于交易,在处理时未明确定义状态。
大多数状态都属于这些情况:
- 交易成功
- 交易成功
- 交易成功,待确认
最后一个状态是有问题的,因为我可以在原始交易后几天(最多 10 天,有时甚至更多)收到交易确认。
我应该如何处理这种迟到的变化?直觉上,我很想将现有交易重新影响到新维度,但这让我想到了两件事:
- 这是一个好习惯吗? (不要改写历史等...)
- 如何处理 BigQuery 或 Redshift 或任何仅附加系统中的此类更改?在非常多的行上,这将是一个问题,因为这些系统不能很好地处理更新
如果
- 这不需要是真的 "financial transaction" table AND
- 您不需要保留值的历史记录(例如,什么是
截至前一个日期的值)
然后你can/should更新值。
如果使用 Redshift,那么您可以通过将一批更新写入暂存 table(从 s3 复制)然后一次性应用这些作为更新来高效地完成此操作。
开始建星图了,喜欢^^
我在维度建模方面遇到了设计问题。
对于星型模式中的每笔交易,我都有一个事实 table(最高粒度) 类似的东西(简化版)
transaction_facts
- id
- account_dim
- date_dim
- status_dim
- amount
status_dim
- id
- code
- description
- final
对于交易,在处理时未明确定义状态。 大多数状态都属于这些情况:
- 交易成功
- 交易成功
- 交易成功,待确认
最后一个状态是有问题的,因为我可以在原始交易后几天(最多 10 天,有时甚至更多)收到交易确认。
我应该如何处理这种迟到的变化?直觉上,我很想将现有交易重新影响到新维度,但这让我想到了两件事:
- 这是一个好习惯吗? (不要改写历史等...)
- 如何处理 BigQuery 或 Redshift 或任何仅附加系统中的此类更改?在非常多的行上,这将是一个问题,因为这些系统不能很好地处理更新
如果
- 这不需要是真的 "financial transaction" table AND
- 您不需要保留值的历史记录(例如,什么是 截至前一个日期的值)
然后你can/should更新值。
如果使用 Redshift,那么您可以通过将一批更新写入暂存 table(从 s3 复制)然后一次性应用这些作为更新来高效地完成此操作。