Как использовать SparkSQL для выбора строк в Spark DF на основе нескольких условий

Я относительно новичок в pyspark, и у меня есть фрейм данных Spark со столбцом даты «Issue_Date». Столбец «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()

person wjie08    schedule 06.11.2019    source источник


Ответы (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)")
person pissall    schedule 06.11.2019
comment
я забыл упомянуть, что Issue_Date содержит ошибки и даты до 2070 года. Таким образом, ›= 2019 может не работать - person wjie08; 06.11.2019