三个NOT NULL派生列的乘法在HIVE SQL中给出NULL作为输出。

时间:2016-09-12 07:04:29

标签: hive hiveql

当我在HIVE SQL中应用复杂的公式时,我遇到了需要将三个不同的派生值相乘(使用其他一些列)的情况。这三个NOT NULL列的乘法返回NULL作为输出。需要帮助。

从中获取值的基列的数据类型是DECIMAL(18,6)

提前致谢

2 个答案:

答案 0 :(得分:1)

感谢Kishore的建议。

如果我单独投射所有三个操作数,它就有效。

    cast(a) as decimal(18,6) * cast(b) as decimal(18,6) * cast(c) as decimal(18,6);

答案 1 :(得分:0)

试试这个,CAST最后输出你多个三个值。

cast((a*b*c) as decimal(18,6));

其中a,b,c是您的派生列。 请注意,如果乘法导致溢出,则必须将其中一个运算符强制转换为类型层次结构中较高的类型,意味着int为long。