我正在就以下主题寻求帮助。我正在尝试使用两个 Excel 数据源(S1 ~300 行和 S2 ~7000 行)创建一个 ETL 过程。S1 包含项目信息和员工详细信息,S2 包含小时数,每个员工在某个时间点在哪个项目中工作。
我想通过引用维度表中的现有主键将每个员工在每个项目中工作的小时数插入到事实表中。如果维度表中不存在条目,我想先添加一个新条目并使用新生成的 id。目标表结构如下所示(数据仓库,星型模式):目标表结构
在 SSIS 中,我首先创建了三个数据流任务,用于使用不同的值(使用 group by,因为 S1 和 S2 包含很多重复行)填充维度表(项目、员工和时间),然后是第四个数据流任务(参见下图)插入 FactTable 数据,这就是我遇到问题的地方:
我正在使用三个 LookUp 函数从维度表中检索 foreignKeys project_id、employee_id 和 time_id(使用项目名称、员工编号和时间戳)。如果找到了 id,它将一直传递到Merge Join 1,如果没有,则创建一个新的 Dimension Entry(比如说项目)并传递生成的 project_id 。同样适用于员工和时间。
这有两个问题:
1)“小时数”(多播四通过,见上图)在最终结果中不匹配(不匹配)
2) 插入的行数不断增加(Endless Join,我相信由于 Merge 连接)。
我试过的:
- 我之前使用了一个 UNION 而不是三个 Merge Joins,但这导致外键分别位于单独的行中,而不是合并在一起。
- 我使用了 Merge(而不是 Merge Join),并在所有可能的方式中组合了连接和排序条件。
我知道这种情况可能会让其他人感到困惑,但感谢您抽出宝贵时间查看它!任何帮助是极大的赞赏。