【发布时间】:2010-04-30 15:55:16
【问题描述】:
我目前正在构建一个 ETL 系统以从事务系统加载数据仓库。我的事实表的粒度是事务级别。为了确保不加载重复的行,我在事实表上放置了一个主键,即事务 ID。
我遇到了事务被撤消的问题 - 在事务数据库中,这是通过状态完成的,我可以获取该状态,我可以确定事务是否正在完成,或者回滚以便我可以加载撤消排在仓库里。但是,反转行将具有相同的事务 ID,因此我得到主键违规。
我现在通过否定主键解决了这个问题,所以交易 ID 1 将是付款,而交易 ID -1(仅限仓库)将是撤销。
我考虑过生成 BIT 列的替代方法,其中 0 表示正常,1 表示反转,然后将 PK 设为事务 ID 和 BIT 列。
我的问题是,这是一个好习惯吗?还有其他人遇到过这样的事情吗?作为参考,这是一个支付处理系统,因此不会修改值,因此只会有交易和撤销。
【问题讨论】:
标签: ssis data-warehouse etl