[英]Transfer of primary keys of dimension table to fact table cannot write values
我的问题是了解主键与事实表的关系。
这是我正在使用的结构,传输有效,但它说我设置为主键的值不能为 NULL
我正在使用 SSIS 将数据从 csv 文件传输到 OLEDB(SQL server 2019 over SSMS)
实际问题是在哪里/如何在同一任务中获取值? 我试图在两个不同的任务中完成,但它一个接一个地出现在表中(这仅在我允许主键为空值时才有效,我认为不能成为解决方案。)
可能是我的问题从源头三个转
您正在尝试加载 fischspezi 事实表以及产品 (produkt) 和位置 (standort)。 问题是,您没有维度中的键。
我假设您维度中的“关键”列是自动生成的/身份值? 如果是这种情况,那么您需要将单个数据流分解为两个数据流。 两者都将保留平面文件源和多播。
这是现有数据流,减去通向事实表的路径。
此数据流将用于填充事实表。 删除维度表的两个分支。 我们在这里需要做的是找到给定输入的翻译后的键值。 我假设 produkt_ID 和 steuer_id 应该被定义为 NOT NULL 并且在维度中是唯一的,但这里的概念是我们需要能够使用我们文件中的值,产品 ID 3892,并在维度中找到相同的行键值为 1 的表。
用于此目的的工具是查找转换。您将需要数据流中的 2-3 个就在目的地之前。 第一个将根据 produkt_ID 查找 produktkey。 第二个将根据 steuer_id 找到标准密钥。
您想要的第三次查找(并添加回维度加载)将查找目标表中的当前行。 如果您运行现有包 10 次,您将拥有 10 倍的数据(除非您定义了唯一约束)。 在这里猜测,但我假设 sale_id 是源数据中的一个值,所以我会在这里查找以确保我不会双重加载一行。 如果 sales_id 是生成的值,那么为了保持一致性,我会将后缀重命名为 key 以与数据模型的其余部分保持一致。
我还鼓励大家阅读 Andy Leonard 的Stairway to Integration Services系列。 第 3 级和第 4 级地址使用查找并确定如何更新现有行,我认为这将是您旅程中的一些后续步骤。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.