2016-10-19 2 views
0

У меня есть столбец, который содержит двойное значение 42.2223. Я хочу усечь последние четыре цифры этого конкретного столбца.Может ли кто-нибудь указать код улья udf для обрезания определенного столбца?

Может ли кто-нибудь предоставить улей UDF для этого конкретного сценария?

ответ

0

Если вы хотите усечь последние четыре цифры и получить целое число, вы можете использовать встроенные функции floor(double a) или ceiling(double a), в зависимости от типа округления (верхнего или нижнего), которое вы хотите.

Если вы хотите, чтобы ваш двойник был усечен до d десятичных разрядов (и получить двойное, а не целое число), вы можете использовать round(double a, int d).

EDITED

Для тура без усечения, вы можете использовать этот

CAST((column * 100) AS int)/100

+0

Привет Хайме за ответ. –

+0

Но если у меня есть значение 35.35623, оно округляет значение до 35.36. Я не хочу округлить его. Я хочу, чтобы он был усечен (35.35) –

+0

@AkhilVishwa Итак, в этом случае вы хотите, чтобы результат был '35'? –

0

Написал UDF для вышеупомянутого вопроса, где можно указать количество символов может быть усечены

package com.hive.udf.truncate; 
import java.math.BigDecimal; 
import org.apache.hadoop.hive.ql.exec.UDF; 
public class Trunc extends UDF { 
    public double evaluate(double input,int numberOfDecimals){ 
     if (input > 0) { 
     return new BigDecimal(String.valueOf(input)).setScale(numberOfDecimals, BigDecimal.ROUND_FLOOR).doubleValue(); 
      } 
     else { 
     return new BigDecimal(String.valueOf(input)).setScale(numberOfDecimals, BigDecimal.ROUND_CEILING).doubleValue(); 
     } 
    } 
} 
Смежные вопросы