2017-10-13 17 views
0

J'ai une tâche dans laquelle je dois comparer 2 colonnes d'une base de données et obtenir les différences.Il y a plus de 200 colonnes dans la base de données et je dois écrire plus de 100 requêtes pour vérifier la valeurs dans les colonnes. par exemple: DF1 https://i.stack.imgur.com/Aj1ca.pngSubstitution de variables pour les noms de colonnes dans la requête hive

J'ai besoin de toutes les valeurs où X1 = X2 et les paires de colonnes ont une valeur différente. En terms- simple,

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 

Maintenant que je 100+ colonnes, donc je dois écrire 100+ ces requêtes. Je voulais donc écrire une fonction dans scala où je passerais simplement les noms de colonnes (A1, A2 ou B1, B2, etc.) qui seraient substitués dans la requête de la ruche.

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

}

Y at-il de toute façon dans laquelle la requête en fonction prendrait les noms de colonnes à partir des variables que je passe. Toute approche différente est également la bienvenue.

Merci à l'avance.

Répondre

0

Oui, utilisez l'interpolation de chaîne pour 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

Cela a fonctionné. Merci beaucoup Ramandeep :) Bonne journée! – MGM