我试图使用 pyspark 实现 SCD 类型 2 并将数据插入 Teradata 。我能够生成既有旧历史记录(数据库中已经存在)又有新记录的数据框,但是当我对那个数据框执行 spark.overwritewith truncatemode = true 时,我可以看到旧历史数据来自该数据框没有被插入,只有新的新记录被插入。例如下面是一个示例表和数据框。因此,如果在表中提升了员工,那么我们必须为新角色提供一个条目,并且我们必须维护该员工的旧详细信息。就像 Ray 从团队成员晋升为经理一样,决赛桌应该有 2 个条目,当前记录为 0 的团队成员和当前 ind 为 1 的新名称。
**table1**
|id(PK)| emp_id | name | designation | current record ind
|------|--------|------|---|-------------------------
| 1 |101 |Ray | team member | 1
| 2 |102 |John | team member | 1
Dataframe
-----------------
|id | emp_id | name | designation | current record ind
|------|--------|------|----------------------------
| 3 |101 |Ray | Manager | 1
| 4 |102 |John | team member | 1
| 5 |101 | Ray | team member | 0