使用pyspark实现scd type2

8nuwlpux  于 2021-07-12  发布在  Spark
关注(0)|答案(0)|浏览(387)

我试图使用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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题