diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileCont.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileCont.java index 00e17f92da..61e21d24e9 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileCont.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileCont.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; +import static java.util.Collections.singletonList; import static org.apache.hadoop.hive.ql.util.DirectionUtils.DESCENDING_CODE; import java.io.Serializable; @@ -88,11 +89,13 @@ public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticE case INT: case LONG: case VOID: - return new PercentileContLongEvaluator(); + return parameters[1].getCategory() == ObjectInspector.Category.LIST ? + new PercentileContLongArrayEvaluator() : new PercentileContLongEvaluator(); case FLOAT: case DOUBLE: case DECIMAL: - return new PercentileContDoubleEvaluator(); + return parameters[1].getCategory() == ObjectInspector.Category.LIST ? + new PercentileContDoubleArrayEvaluator() : new PercentileContDoubleEvaluator(); case STRING: case TIMESTAMP: case VARCHAR: @@ -155,8 +158,9 @@ public int compare(Map.Entry o1, public abstract static class PercentileContEvaluator extends GenericUDAFEvaluator { PercentileCalculator calc = getCalculator(); - protected PercentileContEvaluator(Comparator> comparator) { + protected PercentileContEvaluator(Comparator> comparator, Converter converter) { this.comparator = comparator; + this.converter = converter; } /** @@ -177,7 +181,7 @@ protected PercentileContEvaluator(Comparator> comparator) protected transient Object[] partialResult; // FINAL and COMPLETE output - protected DoubleWritable result; + protected List results; // PARTIAL2 and FINAL inputs protected transient StructObjectInspector soi; @@ -186,6 +190,7 @@ protected PercentileContEvaluator(Comparator> comparator) protected transient StructField isAscendingField; private final transient Comparator> comparator; + private final transient Converter converter; protected transient boolean isAscending; public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveException { @@ -205,8 +210,8 @@ public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveExc return ObjectInspectorFactory.getStandardStructObjectInspector(fname, foi); } else { // ...for final result - result = new DoubleWritable(0); - return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector; + results = null; + return converter.getResultObjectInspector(); } } @@ -263,12 +268,9 @@ public void reset(AggregationBuffer agg) throws HiveException { @Override public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException { PercentileAgg percAgg = (PercentileAgg) agg; - Double percentile = ((HiveDecimalWritable) parameters[1]).getHiveDecimal().doubleValue(); if (percAgg.percentiles == null) { - validatePercentile(percentile); - percAgg.percentiles = new ArrayList(1); - percAgg.percentiles.add(new DoubleWritable(percentile)); + percAgg.percentiles = converter.convertPercentileParameter(parameters[1]); } if (parameters[0] == null) { @@ -341,15 +343,11 @@ public Object terminate(AggregationBuffer agg) throws HiveException { // Accumulate the counts. long total = getTotal(entriesList); - - // Initialize the result. - if (result == null) { - result = new DoubleWritable(); + if (results == null) { + results = new ArrayList<>(percAgg.percentiles.size()); } - - calculatePercentile(percAgg, entriesList, total); - - return result; + calculatePercentile(percAgg.percentiles, entriesList, total, results); + return converter.convertResults(results); } @Override @@ -372,22 +370,77 @@ protected long getTotal(List> entriesList) { return total; } - protected void validatePercentile(Double percentile) { + public static void validatePercentile(Double percentile) { if (percentile < 0.0 || percentile > 1.0) { throw new RuntimeException("Percentile value must be within the range of 0 to 1."); } } - protected void calculatePercentile(PercentileAgg percAgg, - List> entriesList, long total) { + protected List calculatePercentile(List percentiles, + List> entriesList, long total, List results) { // maxPosition is the 1.0 percentile long maxPosition = total - 1; - double position = maxPosition * percAgg.percentiles.get(0).get(); - result.set(calc.getPercentile(entriesList, position)); + results.clear(); + for (DoubleWritable percentile : percentiles) { + double position = maxPosition * percentile.get(); + results.add(new DoubleWritable(calc.getPercentile(entriesList, position))); + } + + return results; + } + + } + + private interface Converter { + List convertPercentileParameter(Object parameter); + Object convertResults(List results); + ObjectInspector getResultObjectInspector(); + } + + private static class PrimitiveConverter implements Converter { + + @Override + public List convertPercentileParameter(Object parameter) { + Double percentile = ((HiveDecimalWritable) parameter).getHiveDecimal().doubleValue(); + PercentileContEvaluator.validatePercentile(percentile); + return singletonList(new DoubleWritable(percentile)); + } + + @Override + public Object convertResults(List results) { + return results.get(0); + } + + public ObjectInspector getResultObjectInspector() { + return PrimitiveObjectInspectorFactory.writableDoubleObjectInspector; + } + } + + private static class ArrayConverter implements Converter { + public List convertPercentileParameter(Object parameter) { + ArrayList percentilesParameter = (ArrayList) parameter; + List percentileList = new ArrayList<>(percentilesParameter.size()); + for (HiveDecimalWritable hiveDecimalWritable : percentilesParameter) { + Double percentile = hiveDecimalWritable.getHiveDecimal().doubleValue(); + PercentileContEvaluator.validatePercentile(percentile); + percentileList.add(new DoubleWritable(percentile)); + } + return percentileList; + } + + @Override + public Object convertResults(List results) { + return results; } + @Override + public ObjectInspector getResultObjectInspector() { + return ObjectInspectorFactory.getStandardListObjectInspector( + PrimitiveObjectInspectorFactory.writableDoubleObjectInspector); + } } + /** * The evaluator for percentile computation based on long. */ @@ -395,7 +448,11 @@ protected void calculatePercentile(PercentileAgg percAgg, extends PercentileContEvaluator { public PercentileContLongEvaluator() { - super(new LongComparator()); + this(new PrimitiveConverter()); + } + + public PercentileContLongEvaluator(Converter converter) { + super(new LongComparator(), converter); } protected ArrayList getPartialInspectors() { @@ -428,13 +485,26 @@ protected LongWritable copyInput(LongWritable input) { } } + /** + * The evaluator for percentile computation based on array of longs. + */ + public static class PercentileContLongArrayEvaluator extends PercentileContLongEvaluator { + public PercentileContLongArrayEvaluator() { + super(new ArrayConverter()); + } + } + /** * The evaluator for percentile computation based on double. */ public static class PercentileContDoubleEvaluator extends PercentileContEvaluator { public PercentileContDoubleEvaluator() { - super(new DoubleComparator()); + this(new PrimitiveConverter()); + } + + public PercentileContDoubleEvaluator(Converter converter) { + super(new DoubleComparator(), converter); } @Override @@ -470,6 +540,15 @@ protected DoubleWritable copyInput(DoubleWritable input) { } } + /** + * The evaluator for percentile computation based on array of doubles. + */ + public static class PercentileContDoubleArrayEvaluator extends PercentileContDoubleEvaluator { + public PercentileContDoubleArrayEvaluator() { + super(new ArrayConverter()); + } + } + /** * continuous percentile calculators */ diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileDisc.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileDisc.java index 21580f79cb..c8d3c12c80 100644 --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileDisc.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFPercentileDisc.java @@ -26,6 +26,7 @@ import org.apache.hadoop.hive.ql.exec.WindowFunctionDescription; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.io.DoubleWritable; +import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.io.LongWritable; @@ -53,11 +54,13 @@ public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticE case INT: case LONG: case VOID: - return new PercentileDiscLongEvaluator(); + return parameters[1].getCategory() == ObjectInspector.Category.LIST ? + new PercentileDiscLongArrayEvaluator() : new PercentileDiscLongEvaluator(); case FLOAT: case DOUBLE: case DECIMAL: - return new PercentileDiscDoubleEvaluator(); + return parameters[1].getCategory() == ObjectInspector.Category.LIST ? + new PercentileDiscDoubleArrayEvaluator() : new PercentileDiscDoubleEvaluator(); case STRING: case TIMESTAMP: case VARCHAR: @@ -74,6 +77,22 @@ public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticE * The evaluator for discrete percentile computation based on long. */ public static class PercentileDiscLongEvaluator extends PercentileContLongEvaluator { + public PercentileDiscLongEvaluator() { + } + + @Override + protected PercentileCalculator getCalculator() { + return new PercentileDiscLongCalculator(); + } + } + + /** + * The evaluator for discrete percentile computation based on array of longs. + */ + public static class PercentileDiscLongArrayEvaluator extends PercentileContLongArrayEvaluator { + public PercentileDiscLongArrayEvaluator() { + } + @Override protected PercentileCalculator getCalculator() { return new PercentileDiscLongCalculator(); @@ -84,6 +103,24 @@ public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticE * The evaluator for discrete percentile computation based on double. */ public static class PercentileDiscDoubleEvaluator extends PercentileContDoubleEvaluator { + public PercentileDiscDoubleEvaluator() { + super(); + } + + @Override + protected PercentileCalculator getCalculator() { + return new PercentileDiscDoubleCalculator(); + } + } + + /** + * The evaluator for discrete percentile computation based on array of doubles. + */ + public static class PercentileDiscDoubleArrayEvaluator extends PercentileContDoubleArrayEvaluator { + public PercentileDiscDoubleArrayEvaluator() { + super(); + } + @Override protected PercentileCalculator getCalculator() { return new PercentileDiscDoubleCalculator(); diff --git ql/src/test/queries/clientpositive/udaf_percentile_cont.q ql/src/test/queries/clientpositive/udaf_percentile_cont.q index 7a1ac5c968..fc48ac078d 100644 --- ql/src/test/queries/clientpositive/udaf_percentile_cont.q +++ ql/src/test/queries/clientpositive/udaf_percentile_cont.q @@ -12,7 +12,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -24,7 +25,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -37,7 +39,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -49,7 +52,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -107,4 +111,4 @@ percentile_cont(0.2) WITHIN GROUP (ORDER BY value DESC NULLS FIRST), percentile_cont(0.2) WITHIN GROUP (ORDER BY value DESC NULLS LAST) FROM t_test; -DROP TABLE t_test; \ No newline at end of file +DROP TABLE t_test; diff --git ql/src/test/queries/clientpositive/udaf_percentile_disc.q ql/src/test/queries/clientpositive/udaf_percentile_disc.q index 6d93b3418a..80a33ab47c 100644 --- ql/src/test/queries/clientpositive/udaf_percentile_disc.q +++ ql/src/test/queries/clientpositive/udaf_percentile_disc.q @@ -12,7 +12,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -24,7 +25,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -37,7 +39,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -49,7 +52,8 @@ SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10; @@ -108,4 +112,4 @@ percentile_disc(0.2) WITHIN GROUP (ORDER BY value DESC NULLS FIRST), percentile_disc(0.2) WITHIN GROUP (ORDER BY value DESC NULLS LAST) FROM t_test; -DROP TABLE t_test; \ No newline at end of file +DROP TABLE t_test; diff --git ql/src/test/results/clientpositive/udaf_percentile_cont.q.out ql/src/test/results/clientpositive/udaf_percentile_cont.q.out index cddd908d73..04b5ed989c 100644 --- ql/src/test/results/clientpositive/udaf_percentile_cont.q.out +++ ql/src/test/results/clientpositive/udaf_percentile_cont.q.out @@ -14,7 +14,8 @@ PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -24,67 +25,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 4.5 4.5 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 117.0 117.0 119.0 -12 120.0 127.0 127.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 154.0 154.0 158.0 -16 160.0 166.5 166.5 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 186.5 186.5 189.0 -19 190.0 194.5 194.5 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 216.5 216.5 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 234.0 234.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 264.0 264.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 283.5 283.5 289.0 -29 291.0 297.0 297.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 324.0 324.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 376.0 376.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 42.5 42.5 47.0 -40 400.0 403.5 403.5 409.0 -41 411.0 415.5 415.5 419.0 -42 421.0 425.5 425.5 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 467.5 467.5 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 494.5 494.5 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 66.5 66.5 69.0 -7 70.0 73.0 73.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 4.5 4.5 9.0 [0.0,4.5,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,117.0,119.0] +12 120.0 127.0 127.0 129.0 [120.0,127.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 154.0 154.0 158.0 [150.0,154.0,158.0] +16 160.0 166.5 166.5 169.0 [160.0,166.5,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 186.5 186.5 189.0 [180.0,186.5,189.0] +19 190.0 194.5 194.5 199.0 [190.0,194.5,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 216.5 216.5 219.0 [213.0,216.5,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,234.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 264.0 264.0 266.0 [260.0,264.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,283.5,289.0] +29 291.0 297.0 297.0 298.0 [291.0,297.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 324.0 324.0 327.0 [321.0,324.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,376.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 42.5 42.5 47.0 [41.0,42.5,47.0] +40 400.0 403.5 403.5 409.0 [400.0,403.5,409.0] +41 411.0 415.5 415.5 419.0 [411.0,415.5,419.0] +42 421.0 425.5 425.5 429.0 [421.0,425.5,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,467.5,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 494.5 494.5 498.0 [490.0,494.5,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 66.5 66.5 69.0 [64.0,66.5,69.0] +7 70.0 73.0 73.0 78.0 [70.0,73.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -94,67 +97,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 4.5 4.5 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 117.0 117.0 119.0 -12 120.0 127.0 127.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 154.0 154.0 158.0 -16 160.0 166.5 166.5 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 186.5 186.5 189.0 -19 190.0 194.5 194.5 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 216.5 216.5 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 234.0 234.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 264.0 264.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 283.5 283.5 289.0 -29 291.0 297.0 297.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 324.0 324.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 376.0 376.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 42.5 42.5 47.0 -40 400.0 403.5 403.5 409.0 -41 411.0 415.5 415.5 419.0 -42 421.0 425.5 425.5 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 467.5 467.5 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 494.5 494.5 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 66.5 66.5 69.0 -7 70.0 73.0 73.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 4.5 4.5 9.0 [0.0,4.5,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,117.0,119.0] +12 120.0 127.0 127.0 129.0 [120.0,127.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 154.0 154.0 158.0 [150.0,154.0,158.0] +16 160.0 166.5 166.5 169.0 [160.0,166.5,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 186.5 186.5 189.0 [180.0,186.5,189.0] +19 190.0 194.5 194.5 199.0 [190.0,194.5,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 216.5 216.5 219.0 [213.0,216.5,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,234.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 264.0 264.0 266.0 [260.0,264.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,283.5,289.0] +29 291.0 297.0 297.0 298.0 [291.0,297.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 324.0 324.0 327.0 [321.0,324.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,376.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 42.5 42.5 47.0 [41.0,42.5,47.0] +40 400.0 403.5 403.5 409.0 [400.0,403.5,409.0] +41 411.0 415.5 415.5 419.0 [411.0,415.5,419.0] +42 421.0 425.5 425.5 429.0 [421.0,425.5,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,467.5,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 494.5 494.5 498.0 [490.0,494.5,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 66.5 66.5 69.0 [64.0,66.5,69.0] +7 70.0 73.0 73.0 78.0 [70.0,73.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -164,67 +169,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 4.5 4.5 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 117.0 117.0 119.0 -12 120.0 127.0 127.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 154.0 154.0 158.0 -16 160.0 166.5 166.5 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 186.5 186.5 189.0 -19 190.0 194.5 194.5 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 216.5 216.5 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 234.0 234.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 264.0 264.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 283.5 283.5 289.0 -29 291.0 297.0 297.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 324.0 324.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 376.0 376.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 42.5 42.5 47.0 -40 400.0 403.5 403.5 409.0 -41 411.0 415.5 415.5 419.0 -42 421.0 425.5 425.5 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 467.5 467.5 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 494.5 494.5 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 66.5 66.5 69.0 -7 70.0 73.0 73.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 4.5 4.5 9.0 [0.0,4.5,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,117.0,119.0] +12 120.0 127.0 127.0 129.0 [120.0,127.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 154.0 154.0 158.0 [150.0,154.0,158.0] +16 160.0 166.5 166.5 169.0 [160.0,166.5,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 186.5 186.5 189.0 [180.0,186.5,189.0] +19 190.0 194.5 194.5 199.0 [190.0,194.5,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 216.5 216.5 219.0 [213.0,216.5,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,234.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 264.0 264.0 266.0 [260.0,264.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,283.5,289.0] +29 291.0 297.0 297.0 298.0 [291.0,297.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 324.0 324.0 327.0 [321.0,324.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,376.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 42.5 42.5 47.0 [41.0,42.5,47.0] +40 400.0 403.5 403.5 409.0 [400.0,403.5,409.0] +41 411.0 415.5 415.5 419.0 [411.0,415.5,419.0] +42 421.0 425.5 425.5 429.0 [421.0,425.5,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,467.5,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 494.5 494.5 498.0 [490.0,494.5,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 66.5 66.5 69.0 [64.0,66.5,69.0] +7 70.0 73.0 73.0 78.0 [70.0,73.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -234,62 +241,63 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(CAST(substr(value, 5) AS INT), 0.0), percentile_cont(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_cont(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)), - percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_cont(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_cont(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 4.5 4.5 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 117.0 117.0 119.0 -12 120.0 127.0 127.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 154.0 154.0 158.0 -16 160.0 166.5 166.5 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 186.5 186.5 189.0 -19 190.0 194.5 194.5 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 216.5 216.5 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 234.0 234.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 264.0 264.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 283.5 283.5 289.0 -29 291.0 297.0 297.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 324.0 324.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 376.0 376.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 42.5 42.5 47.0 -40 400.0 403.5 403.5 409.0 -41 411.0 415.5 415.5 419.0 -42 421.0 425.5 425.5 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 467.5 467.5 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 494.5 494.5 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 66.5 66.5 69.0 -7 70.0 73.0 73.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 4.5 4.5 9.0 [0.0,4.5,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,117.0,119.0] +12 120.0 127.0 127.0 129.0 [120.0,127.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 154.0 154.0 158.0 [150.0,154.0,158.0] +16 160.0 166.5 166.5 169.0 [160.0,166.5,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 186.5 186.5 189.0 [180.0,186.5,189.0] +19 190.0 194.5 194.5 199.0 [190.0,194.5,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 216.5 216.5 219.0 [213.0,216.5,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,234.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 264.0 264.0 266.0 [260.0,264.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,283.5,289.0] +29 291.0 297.0 297.0 298.0 [291.0,297.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 324.0 324.0 327.0 [321.0,324.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,376.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 42.5 42.5 47.0 [41.0,42.5,47.0] +40 400.0 403.5 403.5 409.0 [400.0,403.5,409.0] +41 411.0 415.5 415.5 419.0 [411.0,415.5,419.0] +42 421.0 425.5 425.5 429.0 [421.0,425.5,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,467.5,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 494.5 494.5 498.0 [490.0,494.5,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 66.5 66.5 69.0 [64.0,66.5,69.0] +7 70.0 73.0 73.0 78.0 [70.0,73.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_cont(NULL, 0.0), percentile_cont(0.0) WITHIN GROUP (ORDER BY NULL) diff --git ql/src/test/results/clientpositive/udaf_percentile_disc.q.out ql/src/test/results/clientpositive/udaf_percentile_disc.q.out index 83875ec514..d10fee577c 100644 --- ql/src/test/results/clientpositive/udaf_percentile_disc.q.out +++ ql/src/test/results/clientpositive/udaf_percentile_disc.q.out @@ -14,7 +14,8 @@ PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -24,67 +25,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 5.0 5.0 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 118.0 118.0 119.0 -12 120.0 128.0 128.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 155.0 155.0 158.0 -16 160.0 167.0 167.0 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 187.0 187.0 189.0 -19 190.0 195.0 195.0 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 217.0 217.0 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 235.0 235.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 265.0 265.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 284.0 284.0 289.0 -29 291.0 298.0 298.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 325.0 325.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 377.0 377.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 43.0 43.0 47.0 -40 400.0 404.0 404.0 409.0 -41 411.0 417.0 417.0 419.0 -42 421.0 427.0 427.0 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 468.0 468.0 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 495.0 495.0 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 67.0 67.0 69.0 -7 70.0 74.0 74.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 5.0 5.0 9.0 [0.0,5.0,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 118.0 118.0 119.0 [111.0,118.0,119.0] +12 120.0 128.0 128.0 129.0 [120.0,128.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 155.0 155.0 158.0 [150.0,155.0,158.0] +16 160.0 167.0 167.0 169.0 [160.0,167.0,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 187.0 187.0 189.0 [180.0,187.0,189.0] +19 190.0 195.0 195.0 199.0 [190.0,195.0,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 217.0 217.0 219.0 [213.0,217.0,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 235.0 235.0 239.0 [230.0,235.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 265.0 265.0 266.0 [260.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 284.0 284.0 289.0 [280.0,284.0,289.0] +29 291.0 298.0 298.0 298.0 [291.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 325.0 325.0 327.0 [321.0,325.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 377.0 377.0 379.0 [373.0,377.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 43.0 43.0 47.0 [41.0,43.0,47.0] +40 400.0 404.0 404.0 409.0 [400.0,404.0,409.0] +41 411.0 417.0 417.0 419.0 [411.0,417.0,419.0] +42 421.0 427.0 427.0 429.0 [421.0,427.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 468.0 468.0 469.0 [460.0,468.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 495.0 495.0 498.0 [490.0,495.0,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 67.0 67.0 69.0 [64.0,67.0,69.0] +7 70.0 74.0 74.0 78.0 [70.0,74.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -94,67 +97,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 5.0 5.0 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 118.0 118.0 119.0 -12 120.0 128.0 128.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 155.0 155.0 158.0 -16 160.0 167.0 167.0 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 187.0 187.0 189.0 -19 190.0 195.0 195.0 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 217.0 217.0 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 235.0 235.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 265.0 265.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 284.0 284.0 289.0 -29 291.0 298.0 298.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 325.0 325.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 377.0 377.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 43.0 43.0 47.0 -40 400.0 404.0 404.0 409.0 -41 411.0 417.0 417.0 419.0 -42 421.0 427.0 427.0 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 468.0 468.0 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 495.0 495.0 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 67.0 67.0 69.0 -7 70.0 74.0 74.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 5.0 5.0 9.0 [0.0,5.0,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 118.0 118.0 119.0 [111.0,118.0,119.0] +12 120.0 128.0 128.0 129.0 [120.0,128.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 155.0 155.0 158.0 [150.0,155.0,158.0] +16 160.0 167.0 167.0 169.0 [160.0,167.0,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 187.0 187.0 189.0 [180.0,187.0,189.0] +19 190.0 195.0 195.0 199.0 [190.0,195.0,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 217.0 217.0 219.0 [213.0,217.0,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 235.0 235.0 239.0 [230.0,235.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 265.0 265.0 266.0 [260.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 284.0 284.0 289.0 [280.0,284.0,289.0] +29 291.0 298.0 298.0 298.0 [291.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 325.0 325.0 327.0 [321.0,325.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 377.0 377.0 379.0 [373.0,377.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 43.0 43.0 47.0 [41.0,43.0,47.0] +40 400.0 404.0 404.0 409.0 [400.0,404.0,409.0] +41 411.0 417.0 417.0 419.0 [411.0,417.0,419.0] +42 421.0 427.0 427.0 429.0 [421.0,427.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 468.0 468.0 469.0 [460.0,468.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 495.0 495.0 498.0 [490.0,495.0,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 67.0 67.0 69.0 [64.0,67.0,69.0] +7 70.0 74.0 74.0 78.0 [70.0,74.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -164,67 +169,69 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 5.0 5.0 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 118.0 118.0 119.0 -12 120.0 128.0 128.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 155.0 155.0 158.0 -16 160.0 167.0 167.0 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 187.0 187.0 189.0 -19 190.0 195.0 195.0 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 217.0 217.0 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 235.0 235.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 265.0 265.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 284.0 284.0 289.0 -29 291.0 298.0 298.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 325.0 325.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 377.0 377.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 43.0 43.0 47.0 -40 400.0 404.0 404.0 409.0 -41 411.0 417.0 417.0 419.0 -42 421.0 427.0 427.0 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 468.0 468.0 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 495.0 495.0 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 67.0 67.0 69.0 -7 70.0 74.0 74.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 5.0 5.0 9.0 [0.0,5.0,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 118.0 118.0 119.0 [111.0,118.0,119.0] +12 120.0 128.0 128.0 129.0 [120.0,128.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 155.0 155.0 158.0 [150.0,155.0,158.0] +16 160.0 167.0 167.0 169.0 [160.0,167.0,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 187.0 187.0 189.0 [180.0,187.0,189.0] +19 190.0 195.0 195.0 199.0 [190.0,195.0,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 217.0 217.0 219.0 [213.0,217.0,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 235.0 235.0 239.0 [230.0,235.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 265.0 265.0 266.0 [260.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 284.0 284.0 289.0 [280.0,284.0,289.0] +29 291.0 298.0 298.0 298.0 [291.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 325.0 325.0 327.0 [321.0,325.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 377.0 377.0 379.0 [373.0,377.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 43.0 43.0 47.0 [41.0,43.0,47.0] +40 400.0 404.0 404.0 409.0 [400.0,404.0,409.0] +41 411.0 417.0 417.0 419.0 [411.0,417.0,419.0] +42 421.0 427.0 427.0 429.0 [421.0,427.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 468.0 468.0 469.0 [460.0,468.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 495.0 495.0 498.0 [490.0,495.0,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 67.0 67.0 69.0 [64.0,67.0,69.0] +7 70.0 74.0 74.0 78.0 [70.0,74.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 PREHOOK: type: QUERY @@ -234,62 +241,63 @@ POSTHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(CAST(substr(value, 5) AS INT), 0.0), percentile_disc(CAST(substr(value, 5) AS DOUBLE), 0.5), percentile_disc(0.5) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS INT)), - percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0) + percentile_disc(CAST(substr(value, 5) AS DECIMAL), 1.0), + percentile_disc(array(0.0, 0.5, 1.0)) WITHIN GROUP (ORDER BY CAST(substr(value, 5) AS DOUBLE)) FROM src GROUP BY CAST(key AS INT) DIV 10 POSTHOOK: type: QUERY POSTHOOK: Input: default@src #### A masked pattern was here #### -0 0.0 5.0 5.0 9.0 -1 10.0 15.0 15.0 19.0 -10 100.0 103.0 103.0 105.0 -11 111.0 118.0 118.0 119.0 -12 120.0 128.0 128.0 129.0 -13 131.0 137.0 137.0 138.0 -14 143.0 146.0 146.0 149.0 -15 150.0 155.0 155.0 158.0 -16 160.0 167.0 167.0 169.0 -17 170.0 175.0 175.0 179.0 -18 180.0 187.0 187.0 189.0 -19 190.0 195.0 195.0 199.0 -2 20.0 26.0 26.0 28.0 -20 200.0 205.0 205.0 209.0 -21 213.0 217.0 217.0 219.0 -22 221.0 224.0 224.0 229.0 -23 230.0 235.0 235.0 239.0 -24 241.0 244.0 244.0 249.0 -25 252.0 256.0 256.0 258.0 -26 260.0 265.0 265.0 266.0 -27 272.0 275.0 275.0 278.0 -28 280.0 284.0 284.0 289.0 -29 291.0 298.0 298.0 298.0 -3 30.0 35.0 35.0 37.0 -30 302.0 307.0 307.0 309.0 -31 310.0 316.0 316.0 318.0 -32 321.0 325.0 325.0 327.0 -33 331.0 333.0 333.0 339.0 -34 341.0 345.0 345.0 348.0 -35 351.0 353.0 353.0 356.0 -36 360.0 367.0 367.0 369.0 -37 373.0 377.0 377.0 379.0 -38 382.0 384.0 384.0 389.0 -39 392.0 396.0 396.0 399.0 -4 41.0 43.0 43.0 47.0 -40 400.0 404.0 404.0 409.0 -41 411.0 417.0 417.0 419.0 -42 421.0 427.0 427.0 429.0 -43 430.0 435.0 435.0 439.0 -44 443.0 446.0 446.0 449.0 -45 452.0 455.0 455.0 459.0 -46 460.0 468.0 468.0 469.0 -47 470.0 477.0 477.0 479.0 -48 480.0 484.0 484.0 489.0 -49 490.0 495.0 495.0 498.0 -5 51.0 54.0 54.0 58.0 -6 64.0 67.0 67.0 69.0 -7 70.0 74.0 74.0 78.0 -8 80.0 84.0 84.0 87.0 -9 90.0 95.0 95.0 98.0 +0 0.0 5.0 5.0 9.0 [0.0,5.0,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,105.0] +11 111.0 118.0 118.0 119.0 [111.0,118.0,119.0] +12 120.0 128.0 128.0 129.0 [120.0,128.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,149.0] +15 150.0 155.0 155.0 158.0 [150.0,155.0,158.0] +16 160.0 167.0 167.0 169.0 [160.0,167.0,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,179.0] +18 180.0 187.0 187.0 189.0 [180.0,187.0,189.0] +19 190.0 195.0 195.0 199.0 [190.0,195.0,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,209.0] +21 213.0 217.0 217.0 219.0 [213.0,217.0,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,229.0] +23 230.0 235.0 235.0 239.0 [230.0,235.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,258.0] +26 260.0 265.0 265.0 266.0 [260.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,278.0] +28 280.0 284.0 284.0 289.0 [280.0,284.0,289.0] +29 291.0 298.0 298.0 298.0 [291.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,318.0] +32 321.0 325.0 325.0 327.0 [321.0,325.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,369.0] +37 373.0 377.0 377.0 379.0 [373.0,377.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,399.0] +4 41.0 43.0 43.0 47.0 [41.0,43.0,47.0] +40 400.0 404.0 404.0 409.0 [400.0,404.0,409.0] +41 411.0 417.0 417.0 419.0 [411.0,417.0,419.0] +42 421.0 427.0 427.0 429.0 [421.0,427.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,459.0] +46 460.0 468.0 468.0 469.0 [460.0,468.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,489.0] +49 490.0 495.0 495.0 498.0 [490.0,495.0,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,58.0] +6 64.0 67.0 67.0 69.0 [64.0,67.0,69.0] +7 70.0 74.0 74.0 78.0 [70.0,74.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,98.0] PREHOOK: query: SELECT CAST(key AS INT) DIV 10, percentile_disc(NULL, 0.0), percentile_disc(0.0) WITHIN GROUP (ORDER BY NULL)