簡體   English   中英

具有多個條件時的 Spark Scala 案例

[英]Spark Scala case when with multiple conditions

我正在嘗試對我擁有的 DF 進行處理,但出現錯誤。 我想用內置的火花函數來實現這個 - withcolumn,when,否則:

CASE WHEN vehicle="BMW" 
AND MODEL IN ("2020","2019","2018","2017") 
AND value> 100000 THEN 1
ELSE 0 END AS NEW_COLUMN

目前我有這個

DF.withColumn(NEW_COLUMN, when(col(vehicle) === "BMW" 
and col(model) isin(listOfYears:_*) 
and col(value) > 100000, 1).otherwise(0))

但是由於數據類型不匹配(布爾值和字符串),我收到了一個錯誤……我知道我的條件返回布爾值和字符串,這是導致錯誤的原因。 執行這樣的案例的正確語法是什么? 另外,我使用 && 而不是and但第三個 && 給了我一個“無法解析符號&&”

謝謝您的幫助!

我認為 && 是正確的 - 使用內置的 spark 函數,所有表達式都是Column類型,檢查 API 看起來&&是正確的並且應該可以正常工作。 是否可以像操作順序問題一樣簡單,您需要在每個布爾條件周圍加上括號? 函數/“運算符” isin優先級低於&& ,這可能會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM