【发布时间】:2019-08-16 18:03:09
【问题描述】:
我每个月使用 SSIS 将一堆大文件引入一个表中,然后我将记录插入到 SQL Server 表中。我的事实表是当月发生的实际金融交易。它看起来像:
事实交易
'Acct Number' 'Product Number' 'Total Value'
000001 1A 1000
000002 1A 2000
000001 3B 3000
我想根据帐户表中的一些手动生成的信息来跟踪此信息,其中“Acct Number”是 Dim Table 中的主键
DimAcct
'Acct Number' 'Acct Name' 'Acct Type'
000001 Sales Revenue
000002 Returns Revenue (Contra)
我的流程是: 1)清除事务表 2)重新加载所有交易,包括任何新的或更正的东西 3)通过Join等进行分析
当我在新的一个月去运行表时,我在 SSIS 中收到以下错误:
"The INSERT statement conflicted with the FOREIGN KEY constraint
"FK_GLTransaction_List_Master_DimAccount". The conflict occurred in
database "GLTransactions", table "dbo.DimAccount", column 'Acct_Number'.".
我猜这是因为在 Transactions 中创建并使用了新帐户,但我没有手动更新我的 Dim 文件,也没有关于它们的警告。这种情况每个月都会发生,因为当他们在自己的账户中找到要单独跟踪的新会计项目时,会添加新的交易账户。我还手动更新表以添加几个帐户。有没有办法避免这种情况,或者更好的是,在 SSIS 运行之前/期间我应该做什么来处理这些新帐户并避免错误?
【问题讨论】:
-
嗯,你看过
FK_GLTransaction_List_Master_DimAccount吗?错误消息告诉您发生了什么。还有什么要知道的?在填充事实表之前,您必须填充DimAcct表。
标签: sql sql-server ssis etl