次のようなHiveQLクエリがあります。
SELECT ID,
CASE WHEN col_a = 0 THEN 0
ELSE (col_b / col_a) END AS math_is_fun
FROM (/* derived query*/) AS x ;
これをHiveで実行すると、最近エラーが発生し始めましたFAILED: Error in semantic analysis: Line X:Y ArgumentTypeMismatch 'col_a': The expression after ELSE should have the same type as those after THEN: "int" is expected but "double" is found.
0
リテラルとの結果の間にデータ型の不一致があることは理解していますが(col_a / col_b)
、Hiveがこれを窒息させている理由、そしてさらに重要なことに、このエラーを解決するための最善の行動は明確ではありません。リテラル0
をとしてキャストする必要がありますか、double
それともより良いアプローチがありますか?
これは、AmazonEMRで実行されているHive0.8.1です。