如何使用 like 运算符针对 spark sql 中的 python 列表中的多个条件构建查询?

How to construct query using like operator for multiple conditions from a python list in spark sql?

我有 spark sql 查询需要使用 like 运算符。例如:

spark.sql("select * from tbl where name like  '%apple%' ")

现在我有一长串值

name_list = ['apple', 'orange', 'banana', .......]

我的问题是如何从长 python 列表中构建查询。我需要的是如下查询:

spark.sql("select * from tbl where name like '%apple%' or name like '%orange%' or .... ")

python 列表很长,可以更改。我当然不想对所有内容进行硬编码。想知道是否有任何简洁的方法可以实现这一目标?谢谢!

您可以使用这样的名称列表构建 or 条件:

import functools

condition = functools.reduce(
    lambda acc, x: f"{acc} or name like '%{x}%'",
    name_list[1:],
    f"name like '%{name_list[0]}%'"
)

spark.sql(f"select * from tbl where {condition}")