Repository: kylin Updated Branches: refs/heads/master eb686a942 -> 00a4c5064
minor: normalize scientific decimal values Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/fe9efa86 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/fe9efa86 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/fe9efa86 Branch: refs/heads/master Commit: fe9efa86cd34da31ec41dc176140ee4ee2f49fed Parents: eb686a9 Author: Hongbin Ma <mahong...@apache.org> Authored: Sun Dec 4 21:26:18 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Sun Dec 4 21:26:18 2016 +0800 ---------------------------------------------------------------------- .../java/org/apache/kylin/metadata/tuple/Tuple.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/fe9efa86/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java index 721a719..d51ae9e 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java @@ -115,6 +115,8 @@ public class Tuple implements ITuple { // BigDecimal during cube build for best precision if ("double".equals(dataType) && fieldValue instanceof BigDecimal) { fieldValue = ((BigDecimal) fieldValue).doubleValue(); + } else if ("decimal".equals(dataType) && fieldValue instanceof BigDecimal) { + fieldValue = normalizeDecimal((BigDecimal) fieldValue); } else if ("integer".equals(dataType) && fieldValue instanceof Number) { fieldValue = ((Number) fieldValue).intValue(); } else if ("smallint".equals(dataType) && fieldValue instanceof Number) { @@ -145,6 +147,14 @@ public class Tuple implements ITuple { return o; } + private static BigDecimal normalizeDecimal(BigDecimal input) { + if (input.scale() < 0) { + return input.setScale(0); + } else { + return input; + } + } + public boolean hasColumn(TblColRef column) { return info.hasColumn(column); } @@ -199,7 +209,7 @@ public class Tuple implements ITuple { case "double": return Double.valueOf(strValue); case "decimal": - return new BigDecimal(strValue); + return normalizeDecimal(new BigDecimal(strValue)); case "float": return Float.valueOf(strValue); case "boolean":