首页 > 解决方案 > 需要帮助在 pyspark 的 for 循环中附加数据帧

问题描述

我们在 where 子句中有需要应用于查询的条件列表

Conditions=[
  Condition-1
  Condition-2
  ...
  Condition-n
]

我们有类似的查询

for condition in Conditions:
    df = spark.sql("SELECT col1, col2 from table where" + condition)

但是我们想要一个最终数据帧,其中包含所有条件的结果如何做到这一点......我们的要求就是这样......

标签: pysparkapache-spark-sql

解决方案


如果您的条件是多个ANDs,您可以加入它们。

例子:

from pyspark.sql import SparkSession

if __name__ == "__main__":
    spark = SparkSession.builder.getOrCreate()
    data = [
        {"a": 1, "b": 2, "c": 3},
        {"a": 3, "b": 3, "c": 7},
        {"a": 2, "b": 3, "c": 5},
    ]
    conditions = [
        "a > 2",
        "b < 4",
        "c > 5",
    ]
    df = spark.createDataFrame(data)
    df.createOrReplaceTempView("table")
    df = spark.sql("SELECT a, b from table where {}".format(" AND ".join(conditions)))
    df.show()

结果:

+---+---+                                                                       
|  a|  b|
+---+---+
|  3|  3|
+---+---+

推荐阅读