Python PySpark中spark.sql语句中的字符串格式是如何工作的?

Python PySpark中spark.sql语句中的字符串格式是如何工作的?,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我正在使用Pyspark,正在使用spark.sql编写一个查询。我想从其他地方声明的数组中选择值,以避免再次键入所有行的名称 这是我的尝试,但这不起作用 array_fields = ["cat", "dog"] ans= spark.sql("""select {} from <table_name>.format(",".join[array_fields]) """) 我也试过了 ans= spark.sql("""select {} from <table_n

我正在使用Pyspark,正在使用spark.sql编写一个查询。我想从其他地方声明的数组中选择值,以避免再次键入所有行的名称

这是我的尝试,但这不起作用

array_fields = ["cat", "dog"]  
ans= spark.sql("""select {} from <table_name>.format(",".join[array_fields]) """)
我也试过了

 ans= spark.sql("""select {} from <table_name> """).format(",".join[array_fields])

我在这里做错了什么?

假设您的示例是正确的,正如您实际尝试过的那样,您对格式和联接的使用并不完全正确

尝试:

数组_字段=[猫,狗] ans=spark.sqlselect{}from.format、.joinarray_字段 区别在于:

format方法将应用于要格式化的字符串。 join方法是一个函数调用——它的参数应该放在圆括号中,而不是方括号中(第二个示例)。 join方法不是第一个示例中字符串的一部分。 首先,您还可以尝试使用print而不是直接调用spark.sql。即:

数组_字段=[猫,狗] printselect{}from.format、.joinarray_字段
这样你就可以看到你最终将要传递给Spark的东西。准备好后,只需将print替换为ans=spark.sql即可。是否需要格式?尝试使用f-string

fSELECT{,.joinarray_fields}来自
嘿,我尝试使用相同的逻辑来进行IN-filtering操作,但不确定如何在列表中传递元组,比如说,如果我们只想对cat和dog进行过滤,任何想法都将不胜感激。