2017-07-04 15 views
0

2カラムを処理した後にカラム(0または1)を返すUDF関数を記述しました。Spark SQL:WHERE句のUDFの結果のカラム名を指定する

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

それは、列名「結果」を認識しません。しかし、私はそれが私は以下のようにクエリを書きました。この値は1 であるため、それらのレコードを返すように私の選択クエリを持っている必要があります。この新しい出力列を認識するために特別な構文が必要ですか?ありがとう。

+0

これは私が見つけたものです。 'WHERE句はSELECT句(*)の前に処理されるため、エイリアスは使用できません。サブクエリを使用して移動する。 –

答えて

1

CASE文は、ここで問題を解決する必要があります:

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

+0

素晴らしい。ありがとう。しかしこれは最適なのだろうか? UDFを2回呼び出すか、最適化しますか? –

関連する問題