2

Hive は条件文をサポートしています - https://cwiki.apache.org/Hive/languagemanual-udf.html#LanguageManualUDF-ConditionalFunctions

ただし、ブロック条件ステートメントを使用したいと考えています。たとえば、似たような列を持つ 2 つのテーブル A と B があります (ただし、列名は同じではありません)。B が優先されるように、A と B から新しいテーブルを作成したいと考えています。したがって、行が B に存在する場合は B から選択し、そうでない場合は A から行を選択します。

SELECT 
IF (B.id<>NULL,
      (B.id as id,
       B.value1 as value),
      (A.id as id,
       a.value2 as value))
FROM A FULL OUTER JOIN B ON (A.id = B.id)

上記のクエリは機能しません。Hive がブロック条件ステートメントをサポートしていないためですか? 上記の機能を実装するにはどうすればよいですか?

4

1 に答える 1

4

ブロック条件ステートメントについては知りませんが、これは同じことを達成しません:

select case when b.id is null then a.id else b.id end as id,
       case when b.id is null then a.value else b.value end as value
from a
full outer join b on ( a.id = b.id )
于 2013-05-29T13:07:13.100 に答える