KYLIN-1524 support long type counter in TopN Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/5fd94854 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/5fd94854 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/5fd94854
Branch: refs/heads/master Commit: 5fd9485473d134377d62f9e947d38302c9edfba0 Parents: aaf4946 Author: shaofengshi <[email protected]> Authored: Sun Mar 27 11:17:29 2016 +0800 Committer: shaofengshi <[email protected]> Committed: Sun Mar 27 11:20:38 2016 +0800 ---------------------------------------------------------------------- .../src/main/java/org/apache/kylin/dict/NumberDictionary.java | 2 +- .../main/java/org/apache/kylin/measure/topn/TopNMeasureType.java | 4 +--- .../src/main/java/org/apache/kylin/metadata/tuple/Tuple.java | 3 +++ 3 files changed, 5 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/5fd94854/core-dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java ---------------------------------------------------------------------- diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java b/core-dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java index f15f28f..d1e2fec 100644 --- a/core-dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java +++ b/core-dictionary/src/main/java/org/apache/kylin/dict/NumberDictionary.java @@ -232,4 +232,4 @@ public class NumberDictionary<T> extends TrieDictionary<T> { System.out.println(Bytes.toString(dict.getValueBytesFromId(i))); } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/kylin/blob/5fd94854/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java ---------------------------------------------------------------------- diff --git a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java index cee8603..507a2b0 100644 --- a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java +++ b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java @@ -267,8 +267,6 @@ public class TopNMeasureType extends MeasureType<TopNCounter<ByteArray>> { final int literalTupleIdx = tupleInfo.hasColumn(literalCol) ? tupleInfo.getColumnIndex(literalCol) : -1; // for TopN, the aggr must be SUM, so the number fill into the column position (without rewrite) final int numericTupleIdx = tupleInfo.hasColumn(numericCol) ? tupleInfo.getColumnIndex(numericCol) : -1; - final DataType numericField = DataType.getType(tupleInfo.getDataTypeName(numericTupleIdx)); - final boolean isIntFamily = numericField.isIntegerFamily(); return new IAdvMeasureFiller() { private TopNCounter<ByteArray> topNCounter; private Iterator<Counter<ByteArray>> topNCounterIterator; @@ -296,7 +294,7 @@ public class TopNMeasureType extends MeasureType<TopNCounter<ByteArray>> { int key = BytesUtil.readUnsigned(counter.getItem().array(), counter.getItem().offset(), counter.getItem().length()); String colValue = topNColDict.getValueFromId(key); tuple.setDimensionValue(literalTupleIdx, colValue); - tuple.setMeasureValue(numericTupleIdx, isIntFamily ? (long) counter.getCount() : counter.getCount()); + tuple.setMeasureValue(numericTupleIdx, counter.getCount()); } }; } http://git-wip-us.apache.org/repos/asf/kylin/blob/5fd94854/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 c5ed0dd..0324d29 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 @@ -122,7 +122,10 @@ public class Tuple implements ITuple { fieldValue = ((Long)fieldValue).shortValue(); } else if ((!"varchar".equals(dataType) || !"char".equals(dataType)) && fieldValue instanceof String) { fieldValue = convertOptiqCellValue((String)fieldValue, dataType); + } else if ("bigint".equals(dataType) && fieldValue instanceof Double) { + fieldValue = ((Double)fieldValue).longValue(); } + values[idx] = fieldValue; }
