我有一张桌子和3本词典。字典每个只有一列。表的结构是
time:string, ctn:string, url:string
加入后我得到一个6列的df
tableDF
.join(enq2, $"url".contains($"q2"), "left_outer")
.join(enq3, $"url".contains($"q3"), "left_outer")
.join(model, $"url".contains($"model"), "left_outer")
我需要的是表格中的3列,如果q2, q3, and model
不为空,则需要一组model
。或者,如果q2, q3 or model
中的任何一个为空,则为空集。
所以我分组
.groupBy($"url", $"ctn", $"timestamp")
并尝试获取设置
.withColumn("model",
when($"q2".isNotNull && $"q3".isNotNull && $"model".isNotNull, collect_set($"model")
).otherwise())
哪个不起作用
我也试过
.agg(get_set($"q2", $"q3", $"model").alias("model"))
其中get_set看起来有点像
def get_set(q2: ColumnName, q3: ColumnName, model: ColumnName):Column={
if(q2.isNotNull && q3.isNotNull && model.isNotNull)
collect_set(model)
}
但isNotNull
返回Column
,我需要boolean
。我不确定==null
是否正确。或者我可能应该将列转换为字符串并检查它。
有什么建议吗?
答案 0 :(得分:1)
您应该执行以下操作
<!-- Card deck -->
<div class="card-deck">
<!-- Card -->
<div class="col-md-6 col-lg-4 col-xl-3">
<div class="card mb-4">
<!--Card image-->
<div class="view overlay"><img alt="Work eyewear" class="card-img-top img-fluid" src="img/clothing-1.jpg"></div><!--Card content-->
<div class="card-body">
<!--Title-->
<h4 class="card-title">PPE</h4><!--Text-->
<p class="card-text">PPE is equipment that will protect the user against health or safety risks at work...</p><!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
<a class="" href="https://shop.spartansafety.co.uk/personal-protection-s/1820.htm">SHOP NOW <i class="fas fa-arrow-right fa-xs"></i></a>
</div>
</div>
</div><!-- Card -->
或者你只能.groupBy($"url", $"ctn", $"timestamp").agg(collect_set(when($"q2".isNotNull && $"q3".isNotNull && $"model".isNotNull, $"model").otherwise(lit(null))))
这些空行
drop