【问题标题】:How to use SparkSQL to select rows in Spark DF based on multiple conditions如何使用 SparkSQL 根据多个条件在 Spark DF 中选择行
【发布时间】:2019-11-06 15:41:27
【问题描述】:

我对 pyspark 比较陌生,我有一个带有日期列“Issue_Date”的 spark 数据框。 “Issue_Date”列包含从 1970 年到 2060 年的多个日期(由于错误)。从 spark 数据框中,我创建了一个临时表,并且能够过滤 2018 年的数据。我还想包括 2019 年的数据(即多个条件)。有没有办法这样做?我尝试了很多组合,但无法得到它。感谢您提供任何形式的帮助,谢谢。

# Filter data from 2018
sparkdf3.createOrReplaceTempView("table_view")
sparkdf4 = spark.sql("select * from table_view where year(to_date(cast(unix_timestamp(Issue_Date,'MM/dd/yyyy') as timestamp))) = 2018")

sparkdf4.count()

【问题讨论】:

    标签: apache-spark pyspark pyspark-sql pyspark-dataframes


    【解决方案1】:

    您是否尝试过使用year(Issue_Date) >= 2018?:

    sparkdf4 = spark.sql("select * from table_view where year(to_date(cast(unix_timestamp(Issue_Date,'MM/dd/yyyy') as timestamp))) >= 2018")
    

    如果您的列有错误,并且您想指定一个范围,您可以使用year IN (2018, 2019)

    sparkdf4 = spark.sql("select * from table_view where year(to_date(cast(unix_timestamp(Issue_Date,'MM/dd/yyyy') as timestamp))) in (2018, 2019)")
    

    【讨论】:

    • 我忘了提到“Issue_Date”有错误,并且日期可以到 2070 年。所以 >= 2019 可能不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2023-03-13
    • 2018-01-15
    相关资源
    最近更新 更多