PySpark:将 python 列表中的元素添加到 spark.sql() 语句中
PySpark: Adding elements from python list into spark.sql() statement
在我的代码中使用的 python 列表:
pylist = ['A', 'B', 'C', 'D']
我还有一个简单的 spark.sql()
行需要执行:
query = spark.sql(
"""
SELECT col1, col2, col3
FROM database.table
WHERE col3 IN ('A', 'B', 'C', 'D')
"""
)
我想用 python 列表替换 spark.sql()
语句中的元素列表,以便 SQL 中的最后一行是
...
AND col3 IN pylist
我知道使用 {}
和 str.format
,但我很难理解这是否是正确的选择,以及它是如何工作的。
好的,经过更多研究,我想我找到了使用 .format(tuple(pylist))
的解决方案
现在的说法是:
pylist = ['A', 'B', 'C', 'D']
s = """
SELECT col1, col2, col3
FROM database.table
WHERE col3 IN {}
""".format(tuple(pylist))
query = spark.sql(s)
在转换为字符串时转换为元组以获取“()”而不是“[]”
sql_str="SELECT col1, col2, col3 FROM database.table WHERE col3 IN " + str(tuple(pylist))
query = spark.sql(sql_str)
在我的代码中使用的 python 列表:
pylist = ['A', 'B', 'C', 'D']
我还有一个简单的 spark.sql()
行需要执行:
query = spark.sql(
"""
SELECT col1, col2, col3
FROM database.table
WHERE col3 IN ('A', 'B', 'C', 'D')
"""
)
我想用 python 列表替换 spark.sql()
语句中的元素列表,以便 SQL 中的最后一行是
...
AND col3 IN pylist
我知道使用 {}
和 str.format
,但我很难理解这是否是正确的选择,以及它是如何工作的。
好的,经过更多研究,我想我找到了使用 .format(tuple(pylist))
现在的说法是:
pylist = ['A', 'B', 'C', 'D']
s = """
SELECT col1, col2, col3
FROM database.table
WHERE col3 IN {}
""".format(tuple(pylist))
query = spark.sql(s)
在转换为字符串时转换为元组以获取“()”而不是“[]”
sql_str="SELECT col1, col2, col3 FROM database.table WHERE col3 IN " + str(tuple(pylist))
query = spark.sql(sql_str)