J'écris du code spark en python . Comment passer une variable dans une requête spark.sql?
q25 = 500
Q1 = spark.sql("SELECT col1 from table where col2>500 limit $q25 , 1")
Actuellement, le code ci-dessus ne fonctionne pas? Comment pouvons-nous passer des variables?
J'ai aussi essayé,
Q1 = spark.sql("SELECT col1 from table where col2>500 limit q25='{}' , 1".format(q25))
Vous devez supprimer les guillemets simples et q25
dans le formatage de chaîne comme ceci:
Q1 = spark.sql("SELECT col1 from table where col2>500 limit {}, 1".format(q25))
Mettre à jour:
Basé sur vos nouvelles requêtes:
spark.sql("SELECT col1 from table where col2>500 order by col1 desc limit {}, 1".format(q25))
Notez que SparkSQL ne prend pas en charge OFFSET. Par conséquent, la requête ne peut pas fonctionner.
Si vous avez besoin d'ajouter plusieurs variables, vous pouvez essayer de cette façon:
q25 = 500
var2 = 50
Q1 = spark.sql("SELECT col1 from table where col2>{0} limit {1}".format(var2,q25))
Tout ce que vous avez à faire est d’ajouter s (interpolateur de chaînes) à la chaîne. Cela permet l'utilisation de variable directement dans la chaîne.
val q25 = 10
Q1 = spark.sql(s"SELECT col1 from table where col2>500 limit $q25)