Spark Scala - отметка времени фильтра - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь отфильтровать метку времени между двумя значениями, используя Spark Scala (игнорируя дату). Я пытаюсь выбрать все записи только с 9:00:00 до 11:00:00 (включая 9:00:00 и 11:00:00). Мой текущий ввод, вывод и код перечислены ниже.

Мой мыслительный процесс должен был быть в состоянии фильтровать, используя мой столбец pickupWindow, который больше или меньше моих значений.

Есть мысли?

Вход:

+----------------------+----------------------+----------+------------+------------+
|tpep_pickup_datetime  |tpep_dropoff_datetime |total_amount|pickupWindow|
+----------------------+----------------------+----------+------------+------------+
|05/18/2018 09:09:29 PM|05/18/2018 09:52:53 PM|42.8        |09:09:29    |
|05/18/2018 11:00:00 PM|05/18/2018 11:09:13 PM|23.5        |11:00:00    |
|05/18/2018 02:47:21 PM|05/18/2018 03:30:00 PM|46.62       |02:47:21    |

Токовый выход:

+--------------------+---------------------+---------+------------+------------+
|tpep_pickup_datetime|tpep_dropoff_datetime|timestamp|total_amount|pickupWindow|
+--------------------+---------------------+---------+------------+------------+
+--------------------+---------------------+---------+------------+------------+

Текущий код:

stamp.withColumn("pickupWindow",date_format(to_timestamp(col("tpep_pickup_datetime"),"MM/dd/yyyy hh:mm:ss a"),"hh:mm:ss")).select("tpep_pickup_datetime","tpep_dropoff_datetime","timestamp","total_amount","pickupWindow").filter(col("pickupWindow")>="9:00:00").filter(col("pickupWindow")<="11:00:00").where($"tpep_pickup_datetime".contains("PM")).show(false)

1 Ответ

1 голос
/ 30 марта 2020

попробуйте использовать .geq и .leq , как показано ниже -

scala> df.withColumn("pickupWindow",date_format(to_timestamp(col("tpep_pickup_datetime"),"MM/dd/yyyy hh:mm:ss a"),"hh:mm:ss")).filter(col("pickupWindow").geq("09:00:00") && col("pickupWindow").leq("11:00:00")).
    show()

    +----------------------+----------------------+---------+------------+------------+
    |tpep_pickup_datetime  |tpep_dropoff_datetime |timestamp|total_amount|pickupWindow|
    +----------------------+----------------------+---------+------------+------------+
    |05/18/2018 09:56:20 PM|05/18/2018 10:50:38 PM|35780    |52.87       |09:56:20    |
    |05/18/2018 10:52:49 PM|05/18/2018 11:08:47 PM|39169    |14.76       |10:52:49    |
    |05/18/2018 09:01:22 PM|05/18/2018 09:05:36 PM|32482    |6.3         |09:01:22    |
    |05/18/2018 09:00:29 PM|05/18/2018 09:05:31 PM|32429    |7.56        |09:00:29    |
    +----------------------+----------------------+---------+------------+------------+

И если вы хотите преобразование AM & PM

scala> df.withColumn("pickupWindow",date_format(to_timestamp(col("tpep_pickup_datetime"),"MM/dd/yyyy hh:mm:ss a"),"HH:mm:ss")).filter(col("pickupWindow").geq("21:00:00") && col("pickupWindow").leq("23:00:00")).
    show(false)
    +----------------------+----------------------+---------+------------+------------+
    |tpep_pickup_datetime  |tpep_dropoff_datetime |timestamp|total_amount|pickupWindow|
    +----------------------+----------------------+---------+------------+------------+
    |05/18/2018 09:56:20 PM|05/18/2018 10:50:38 PM|35780    |52.87       |21:56:20    |
    |05/18/2018 10:52:49 PM|05/18/2018 11:08:47 PM|39169    |14.76       |22:52:49    |
    |05/18/2018 09:01:22 PM|05/18/2018 09:05:36 PM|32482    |6.3         |21:01:22    |
    |05/18/2018 09:00:29 PM|05/18/2018 09:05:31 PM|32429    |7.56        |21:00:29    |
    +----------------------+----------------------+---------+------------+------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...