當我嘗試在 Spark where 函式中檢查 OR 條件時,即使認為第一個條件為真,也會執行第二個條件。
如何跳過第二個條件的檢查?
df.
...
.where(
(
lit(lastLoadingDate).isNull
.or(
col(srcDTTM) > lastLoadingDate.format(formatterDTTM)
)
)
&& col(SrcDTTM) <= currentLoadingDate.format(formatterDTTM)
)
我什至嘗試檢查下一個運算式:
df.
...
.where(
(
lit(true)
.or(
col(srcDTTM) > lastLoadingDate.format(formatterDTTM)
)
)
&& col(SrcDTTM) <= currentLoadingDate.format(formatterDTTM)
)
但第二個條件:
col(srcDTTM) > lastLoadingDate.format(formatterDTTM)
總是被執行。
uj5u.com熱心網友回復:
跳過第二個條件的檢查可能會導致資料不完整,因為它是or判斷。如果第二個條件為真而第一個條件為假,則結果集中的資料量會增加。
uj5u.com熱心網友回復:
當第一個條件為真時,在 OR 判斷中檢查第二個條件不會有任何區別。假設添加另一個條件或使用任何其他函式跳過第二個條件檢查。如果第一次檢查為假,則條件檢查第一個是真還是假,然后進入 OR 判斷的第二部分。它會像3個條件而不是2個。按原樣使用OR判斷更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/387872.html
