我的目标是选择一段时间之前/之后的日期。我有一个开始期和结束期。我想过滤两个句点之间包含close_time
的行(以及其他一些过滤器,如类别和来源):start period <= close_time >= end period
。
我尝试过使用:
var StartTime == '2017-03-14'
var EndTime == '2017-03-14'
val df1 = df.withColumn(
"X_Field",
when($"category" === "incident" and $"origin" === "phone" and StartTime <== $"close_time" >== EndTime, 1).otherwise(0)
)
我有错误。这样做的正确语法是什么?谢谢!
答案 0 :(得分:2)
首先 - 与平等不同,用于更大或更小和更小或相等的正确运算符是<=
和>=
而不是<==
和{{1} }。
其次,表达式>==
无效 - 第一部分(StartTime <= $"close_time" >= EndTime
)计算为 Boolean 条件,然后您尝试与另一个进行比较字符串(StartTime <= $"close_time"
)。
相反,您可以使用>= EndTime
:
between
这只是简写:
val df1 = df.withColumn("X_Field", when(
$"category" === "incident" and
$"origin" === "phone" and
($"close_time" between (StartTime, EndTime)), 1).otherwise(0)
)