between函数

zdwk9cvp  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(406)

我有两个Dataframe:

Dataframe 1
+-----------------+-----------------+
|    hour_Entre   |   hour_Sortie   |
+-----------------+-----------------+
|      18:30:00   |     05:00:00    |
|                 |                 |
+-----------------+-----------------+
 Dataframe 2
+-----------------+
|  hour_Tracking  |            
+-----------------+
|  19:30:00       |
+-----------------+

我要在进站时间和出动时间之间进行小时追踪。
我尝试了以下代码:

boolean checked = true;
 try{
         if(df1.select(col("heureSortie")) != null && df1.select(col("heureEntre")) !=null){
           checked = checked && df2.select(col("dateTracking_hour_minute").between(df1.select(col("heureSortie")),df1.select(col("heureEntre"))));
         }
      } catch (Exception e) {
          e.printStackTrace();
      }

但我有个错误:

Operator && cannot be applied to boolean , 'org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>'
83qze16e

83qze16e1#

以防你要找时差-
第一次创建日期差异

from pyspark.sql import functions as F
df = df.withColumn('date_diff', F.datediff(F.to_date(df.hour_Entre), F.to_date(df.hour_Sortie)))

然后从中计算出时差-

df = df.withColumn('hours_diff', (df.date_diff*24) + 
                          F.hour(df.hour_Entre) - F.hour(df.hour_Sortie))

相关问题