scala—配置单元查询中列名的变量替换

xzv2uavs  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(321)

我有一个任务,在这个任务中,我需要比较一个Dataframe的两列并获得差异。Dataframe中有200多列,我必须编写100多个查询来检查列中的值。例如:df1https://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中编写一个函数,在这里我只传递列名(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;

}
不管怎样,函数中的查询都会从我传递的变量中获取列名。任何不同的方法都是受欢迎的。
提前谢谢。

6l7fqoea

6l7fqoea1#

是的,对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;
}

相关问题