2017-10-13 46 views
0

我有一個任務,在這裏我需要比較一個數據幀的2列並獲取差異。數據框中有200多列,我必須編寫100多個查詢來檢查列中的值。 例如:DF1 https://i.stack.imgur.com/Aj1ca.png變量替換配置單元查詢中的列名

我需要所有的值,其中X1 = X2和列對具有不同的值。 簡單訂條款─

select A1,A2 from DF1 where X1=X2 and A1!=A2 
select B1,B2 from DF1 where X1=X2 and B1!=B2 
select C1,C2 from DF1 where X1=X2 and C1!=C2 

現在,因爲我有超過100列,所以我必須寫100+這樣的查詢。所以我想在scala中編寫一個函數,我只需傳遞將在hive查詢中替換的列名稱(A1,A2或B1,B2等)。

def comp_col(a:Any, b:Any):Any= { 
var ret = sqlc.sql("SELECT $a, $b from DF1 WHERE X1= X2 $a!= $b"); 
return ret; 

}

反正是有其中函數的查詢會從我傳遞變量所取的列名。 任何不同的方法也是受歡迎的。

在此先感謝。

回答

0

是的,對scala使用字符串插值。

def comp_col(a:Any, b:Any):Any= { 
var ret = sqlc.sql(s"SELECT $a, $b from DF1 WHERE X1= X2 $a!= $b"); 
return ret; 
} 
+0

工作。非常感謝Ramandeep :)祝你有美好的一天! – MGM