我试图使用pyspark实现scdtype2,并将数据插入teradata。我能够生成既有旧历史记录(已经存在于数据库中)又有新记录的Dataframe,但是当我对该Dataframe执行spark.overwritewith truncatemode=true时,我可以看到该Dataframe中的旧历史数据没有被插入,只插入新的新记录。例如,下面是一个示例表和Dataframe。因此,在表中,如果一名员工被提升,那么我们必须为新角色提供一个条目,并且我们必须维护该员工的旧详细信息。就像ray从团队成员提升为经理一样,最后一个表应该有2个条目,团队成员的当前记录ind为0,新指定的当前ind为1。为了实现这一点,我最终创建了一个包含两个条目的dataframe,但是当我尝试在teradata数据库中使用truncate mode='true'执行spark.overwrite时,我们看到只插入了新的记录,但是当前ind=0的记录没有被插入。还有一件事,我在插入之前用新的id在dataframe本身中生成id(pk)列。
**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
暂无答案!
目前还没有任何答案,快来回答吧!