我正在 Informatica IICS 中执行映射,并尝试根据多个字段填充数据集中缺失的行。
下面是数据的示例表。有一个ID
字段,一个Week_Start
字段是报告数据的一周的开始日期,一个对应的字段Week_Number
和一个Year
指定数据属于上一年或当前年份的字段。Sales
是该特定 ID 进行的销售数量,是销售Sales_Type
类别。
但是,有些日期特定人员没有进行销售,因此缺少与该数据对应的行。我想用所有相关信息填写这些行,并将Sales
字段设置为 0。
对于 7 种不同的销售类型,我的实际数据有一个 6 周的信息窗口,包括上一年度和本年度。所以我希望每个 ID 有 6x2x7 = 84 行。即,如果我有 100 个唯一 ID,我的最终表格应该有 8400 行。
缺少行的表:
+----+------------+-------------+---------+-------+------------+
| ID | Week_Start | Week_Number | Year | Sales | Sales_Type |
+----+------------+-------------+---------+-------+------------+
| 1 | 01/01/2018 | 1 | Prior | 1 | A |
| 1 | 01/08/2018 | 2 | Prior | 3 | A |
| 1 | 01/15/2018 | 3 | Prior | 3 | A |
| 1 | 01/29/2018 | 5 | Prior | 4 | A |
| 1 | 01/01/2019 | 1 | Current | 2 | A |
| 1 | 01/08/2019 | 2 | Current | 4 | A |
| 1 | 01/15/2019 | 3 | Current | 1 | A |
| 1 | 01/22/2019 | 4 | Current | 1 | A |
| 1 | 01/01/2018 | 1 | Prior | 1 | B |
| 1 | 01/08/2018 | 2 | Prior | 3 | B |
| 1 | 01/15/2018 | 3 | Prior | 3 | B |
| 1 | 01/29/2018 | 5 | Prior | 4 | B |
| 1 | 01/01/2019 | 1 | Current | 2 | B |
| 1 | 01/08/2019 | 2 | Current | 4 | B |
| 1 | 01/15/2019 | 3 | Current | 1 | B |
| 1 | 01/22/2019 | 4 | Current | 1 | B |
+----+------------+-------------+---------+-------+------------+
填充缺失行的预期结果:
+----+------------+-------------+---------+-------+------------+
| ID | Week_Start | Week_Number | Year | Sales | Sales_Type |
+----+------------+-------------+---------+-------+------------+
| 1 | 01/01/2018 | 1 | Prior | 1 | A |
| 1 | 01/08/2018 | 2 | Prior | 3 | A |
| 1 | 01/15/2018 | 3 | Prior | 3 | A |
| 1 | 01/22/2018 | 4 | Prior | 0 | A |
| 1 | 01/29/2018 | 5 | Prior | 4 | A |
| 1 | 01/01/2019 | 1 | Current | 2 | A |
| 1 | 01/08/2019 | 2 | Current | 4 | A |
| 1 | 01/15/2019 | 3 | Current | 1 | A |
| 1 | 01/22/2019 | 4 | Current | 1 | A |
| 1 | 01/29/2019 | 5 | Current | 0 | A |
| 1 | 01/01/2018 | 1 | Prior | 1 | B |
| 1 | 01/08/2018 | 2 | Prior | 3 | B |
| 1 | 01/15/2018 | 3 | Prior | 3 | B |
| 1 | 01/22/2018 | 4 | Prior | 0 | B |
| 1 | 01/29/2018 | 5 | Prior | 4 | B |
| 1 | 01/01/2019 | 1 | Current | 2 | B |
| 1 | 01/08/2019 | 2 | Current | 4 | B |
| 1 | 01/15/2019 | 3 | Current | 1 | B |
| 1 | 01/22/2019 | 4 | Current | 1 | B |
| 1 | 01/29/2019 | 5 | Current | 0 | B |
+----+------------+-------------+---------+-------+------------+
我曾尝试在 ICS 中使用转换,但它们都没有完成我想要做的事情。对于如何做到这一点,我最好的猜测是通过在 SQL 中使用递归 CTE 并引入 SQL 脚本来生成这些缺失的行。
我的问题是,如何在多个分区上执行此操作?这不仅仅是缺少我感兴趣的日期,还缺少两年的日期和几种不同类型的销售。Week_Start
列包含混合数据的事实使情况更加复杂。我早期的尝试最终生成了 2018 年日期和 2019 年数据之间的所有行。