繁体   English   中英

插入时出现SSIS错误 - Dimension表中的新主键出错

[英]SSIS Error on insertion - Error when new primary keys in Dimension table

我使用SSIS每月将一堆大文件放入一个表中,我将记录插入到SQL Server表中。 我的事实表是本月发生的实际金融交易。 它看起来像:

FactTransactions

'Acct Number'    'Product Number'  'Total Value'
000001             1A                 1000            
000002             1A                 2000            
000001             3B                 3000             

我想根据帐户表中的一些手动生成的信息来跟踪此信息,其中“帐号”是昏暗表中的主键

DimAcct

 'Acct Number'    'Acct Name'  'Acct Type'
   000001             Sales         Revenue               
   000002             Returns       Revenue (Contra)

我的过程是:1)清除交易表2)重新加载包含任何新的或纠正的所有交易3)通过联接进行分析等

当我在新的月份运行表时,我在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'.".

我猜这是因为在事务中已经创建并使用了新的accts,但是我没有手动更新我的Dim文件并且没有关于它们的警告。 这将在每个月发生,因为新的交易账户在他们找到要在他们自己的账户中单独跟踪的新会计项目时会被添加。 我还手动更新表格以添加少数帐户。 有没有办法避免这种情况,或者更好的是,在SSIS运行之前/期间我应该做些什么来处理这些新帐户并避免错误?

您收到的消息告诉您,在您尝试在事实表中加载的数据中,至少有一条记录引用维度表中不存在的记录。 如何加载维度表? 你是否只在运行事实负载之前加载它? 如果是这种情况,您应该考虑管理所谓的“推断维度”,即在加载事实表之前您不知道的维度。 这种情况也被称为“早到的事实”。

因此,您应扫描要加载的事实,查找维度表中不存在的维度记录。 然后,您将在维度表中插入此记录并将其标记为推断。 在这个阶段,你将加载事实。

请注意,将这些记录标记为“推断”将使您能够在以后优化维度记录。 假设您将插入一个仅知道帐号(商业密钥)的推断帐户,而不是其他信息,如帐户描述等...您可以在以后更新这些信息。

请注意,在SSIS SCD组件中,您可以定义适当的推断维度管理。

希望这可以帮助。

您提到您只是手动插入维度表,需要更改。
您应该在帐户维度中将所有新帐户插入“新建/未知”作为SSIS流程的第一步。
然后,您将有一个打印这些新帐户的报告,您将手动或以其他方式更新这些帐户以包含正确的数据。
您可以在以下网址阅读有关可能解决方案的更多信息: https//www.matillion.com/blog/late-arriving-dimension/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM