같은 예상 출력 나중에 열 값 모두 (신구 값)를 통과 칼럼 UDF와를 이용하여 기본 키 두 dataframe 가입 UDF의 데이터를 비교하여 값을 반환 같지 않으면.
val check = udf ((old_val:String,new_val:String) => if (old_val == new_val) new_val else "")
df_check= df
.withColumn("Check_Name",check(df.col("name"),df.col("new_name")))
.withColumn("Check_Namelast",check(df.col("lastname"),df.col("new_lastname")))
또는 데프 기능
def fn(old_df:Dataframe,new_df:Dataframe) : Dataframe =
{
val old_df_array = old_df.collect() //make df to array to loop thru
val new_df_array = new_df.collect() //make df to array to loop thru
var value_change : Array[String] = ""
val count = old_df.count
val row_count = old_df.coloumn
val row_c = row.length
val coloumn_name = old_df.coloumn
for (i to count) //loop thru all rows
{
var old = old_df_array.Map(x => x.split(","))
var new = new_df_array.Map(x => x.split(","))
for (j to row_c) //loop thru all coloumn
{
if(old(j) != new(j))
{
value_change = value_change + coloumn_name(j) " has value changed" ///this will add all changes in one full row
}
//append to array
append j(0) //primary key
append value_change //Remarks coloumn
}
}
//convert array to df
}
당신은 칼럼의 콘텐츠를 만들 ** 발언 **하는 방법을 의미합니까? 그렇다면 해당 열의 내용을 완전히 표시 할 수 있습니까? –
제외는 일종의 마이너스 연산입니다. 나는 사람들이 이해하고 더 잘 대답 할 수 있도록 도와주는 몇 가지 모범을 질문에 추가 할 것을 제안한다. –
예 : 이전 데이터에서 성, 성, 주소가 새 데이터와 일치하지 않습니다. 이 정보를 비고란에 기입하십시오.
예를 들면 : 오래된 데이터 james에서 새로운 데이터 nitin. 이제이 정보를 일치하지 않는 firstname으로 가져옵니다. 동시에 두 번째 열의 열을 비교하십시오. 이 정보를 같은 열에도 표시하십시오. –