2017-07-04 86 views
0

我已經編寫了一個UDF函數,它將在處理2列後返回一列(0或1)。我需要我的選擇查詢,使其返回那些記錄此值爲1 我寫的查詢如下:Spark SQL:在WHERE子句中指定從UDF生成的列名

SELECT number, myUDF(col1, col2) as result 
    FROM mytable 
    WHERE result is not null 

但是它不能識別列名「結果」。是否有任何特殊的語法來識別這個新的輸出列?謝謝。

+0

這是我發現的。 WHERE子句在SELECT子句(*)之前處理,因此別名不可用。移至使用子查詢。 –

回答

1

CASE語句應該在這裏解決的問題:

SELECT number, CASE when myUDF(col1, col2) = 1 then myUDF(col1, col2) END as result FROM mytable

+0

太好了。謝謝。但這會是最佳的嗎? UDF會被調用兩次還是會被優化? –