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..ad61410180 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,14 @@ 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()); + for (int i = 0; i < percAgg.percentiles.size(); ++i) { + results.add(new DoubleWritable(0)); + } } - - calculatePercentile(percAgg, entriesList, total); - - return result; + calculatePercentile(percAgg.percentiles, entriesList, total, results); + return converter.convertResults(results); } @Override @@ -372,22 +373,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)); + for (int i = 0; i < percentiles.size(); ++i) { + DoubleWritable percentile = percentiles.get(i); + double position = maxPosition * percentile.get(); + results.get(i).set(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 +451,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 +488,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 +543,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..db54eaa6af 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.1, 0.5, 0.8, 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.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, 0.7, 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..f12cb6cd5e 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.1, 0.5, 0.8, 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.1, 0.5, 0.8, 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,0.0,4.5,5.6000000000000005,9.0] +1 10.0 15.0 15.0 19.0 [10.0,10.9,15.0,18.0,19.0] +10 100.0 103.0 103.0 105.0 [100.0,100.0,103.0,104.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,112.8,117.0,119.0,119.0] +12 120.0 127.0 127.0 129.0 [120.0,120.0,127.0,128.2,129.0] +13 131.0 137.0 137.0 138.0 [131.0,133.0,137.0,138.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,144.0,146.0,149.0,149.0] +15 150.0 154.0 154.0 158.0 [150.0,151.4,154.0,156.60000000000002,158.0] +16 160.0 166.5 166.5 169.0 [160.0,162.5,166.5,169.0,169.0] +17 170.0 175.0 175.0 179.0 [170.0,172.0,175.0,177.60000000000002,179.0] +18 180.0 186.5 186.5 189.0 [180.0,180.7,186.5,187.0,189.0] +19 190.0 194.5 194.5 199.0 [190.0,191.0,194.5,197.0,199.0] +2 20.0 26.0 26.0 28.0 [20.0,22.4,26.0,26.8,28.0] +20 200.0 205.0 205.0 209.0 [200.0,200.39999999999998,205.0,208.0,209.0] +21 213.0 216.5 216.5 219.0 [213.0,213.0,216.5,218.2,219.0] +22 221.0 224.0 224.0 229.0 [221.0,221.0,224.0,228.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,230.0,234.0,238.0,239.0] +24 241.0 244.0 244.0 249.0 [241.0,241.6,244.0,247.8,249.0] +25 252.0 256.0 256.0 258.0 [252.0,253.8,256.0,256.8,258.0] +26 260.0 264.0 264.0 266.0 [260.0,261.0,264.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,272.20000000000005,275.0,277.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,280.3,283.5,287.4,289.0] +29 291.0 297.0 297.0 298.0 [291.0,291.5,297.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,32.1,35.0,36.2,37.0] +30 302.0 307.0 307.0 309.0 [302.0,304.1,307.0,308.6,309.0] +31 310.0 316.0 316.0 318.0 [310.0,311.0,316.0,317.6,318.0] +32 321.0 324.0 324.0 327.0 [321.0,321.0,324.0,327.0,327.0] +33 331.0 333.0 333.0 339.0 [331.0,331.0,333.0,336.8,339.0] +34 341.0 345.0 345.0 348.0 [341.0,342.0,345.0,348.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,351.6,353.0,354.2,356.0] +36 360.0 367.0 367.0 369.0 [360.0,362.0,367.0,369.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,373.5,376.0,378.0,379.0] +38 382.0 384.0 384.0 389.0 [382.0,382.0,384.0,385.6,389.0] +39 392.0 396.0 396.0 399.0 [392.0,393.1,396.0,397.0,399.0] +4 41.0 42.5 42.5 47.0 [41.0,41.5,42.5,44.0,47.0] +40 400.0 403.5 403.5 409.0 [400.0,401.0,403.5,406.2,409.0] +41 411.0 415.5 415.5 419.0 [411.0,412.79999999999995,415.5,417.2,419.0] +42 421.0 425.5 425.5 429.0 [421.0,422.5,425.5,429.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,430.0,435.0,438.0,439.0] +44 443.0 446.0 446.0 449.0 [443.0,443.40000000000003,446.0,448.2,449.0] +45 452.0 455.0 455.0 459.0 [452.0,453.0,455.0,458.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,462.0,467.5,469.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,471.20000000000005,477.0,478.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,480.0,484.0,489.0,489.0] +49 490.0 494.5 494.5 498.0 [490.0,491.1,494.5,497.8,498.0] +5 51.0 54.0 54.0 58.0 [51.0,51.0,54.0,57.8,58.0] +6 64.0 66.5 66.5 69.0 [64.0,64.5,66.5,67.0,69.0] +7 70.0 73.0 73.0 78.0 [70.0,70.0,73.0,76.19999999999999,78.0] +8 80.0 84.0 84.0 87.0 [80.0,81.60000000000001,84.0,85.4,87.0] +9 90.0 95.0 95.0 98.0 [90.0,90.0,95.0,97.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.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.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 [4.5,9.0] +1 10.0 15.0 15.0 19.0 [15.0,19.0] +10 100.0 103.0 103.0 105.0 [103.0,105.0] +11 111.0 117.0 117.0 119.0 [117.0,119.0] +12 120.0 127.0 127.0 129.0 [127.0,129.0] +13 131.0 137.0 137.0 138.0 [137.0,138.0] +14 143.0 146.0 146.0 149.0 [146.0,149.0] +15 150.0 154.0 154.0 158.0 [154.0,158.0] +16 160.0 166.5 166.5 169.0 [166.5,169.0] +17 170.0 175.0 175.0 179.0 [175.0,179.0] +18 180.0 186.5 186.5 189.0 [186.5,189.0] +19 190.0 194.5 194.5 199.0 [194.5,199.0] +2 20.0 26.0 26.0 28.0 [26.0,28.0] +20 200.0 205.0 205.0 209.0 [205.0,209.0] +21 213.0 216.5 216.5 219.0 [216.5,219.0] +22 221.0 224.0 224.0 229.0 [224.0,229.0] +23 230.0 234.0 234.0 239.0 [234.0,239.0] +24 241.0 244.0 244.0 249.0 [244.0,249.0] +25 252.0 256.0 256.0 258.0 [256.0,258.0] +26 260.0 264.0 264.0 266.0 [264.0,266.0] +27 272.0 275.0 275.0 278.0 [275.0,278.0] +28 280.0 283.5 283.5 289.0 [283.5,289.0] +29 291.0 297.0 297.0 298.0 [297.0,298.0] +3 30.0 35.0 35.0 37.0 [35.0,37.0] +30 302.0 307.0 307.0 309.0 [307.0,309.0] +31 310.0 316.0 316.0 318.0 [316.0,318.0] +32 321.0 324.0 324.0 327.0 [324.0,327.0] +33 331.0 333.0 333.0 339.0 [333.0,339.0] +34 341.0 345.0 345.0 348.0 [345.0,348.0] +35 351.0 353.0 353.0 356.0 [353.0,356.0] +36 360.0 367.0 367.0 369.0 [367.0,369.0] +37 373.0 376.0 376.0 379.0 [376.0,379.0] +38 382.0 384.0 384.0 389.0 [384.0,389.0] +39 392.0 396.0 396.0 399.0 [396.0,399.0] +4 41.0 42.5 42.5 47.0 [42.5,47.0] +40 400.0 403.5 403.5 409.0 [403.5,409.0] +41 411.0 415.5 415.5 419.0 [415.5,419.0] +42 421.0 425.5 425.5 429.0 [425.5,429.0] +43 430.0 435.0 435.0 439.0 [435.0,439.0] +44 443.0 446.0 446.0 449.0 [446.0,449.0] +45 452.0 455.0 455.0 459.0 [455.0,459.0] +46 460.0 467.5 467.5 469.0 [467.5,469.0] +47 470.0 477.0 477.0 479.0 [477.0,479.0] +48 480.0 484.0 484.0 489.0 [484.0,489.0] +49 490.0 494.5 494.5 498.0 [494.5,498.0] +5 51.0 54.0 54.0 58.0 [54.0,58.0] +6 64.0 66.5 66.5 69.0 [66.5,69.0] +7 70.0 73.0 73.0 78.0 [73.0,78.0] +8 80.0 84.0 84.0 87.0 [84.0,87.0] +9 90.0 95.0 95.0 98.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, 0.7, 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, 0.7, 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,5.0,9.0] +1 10.0 15.0 15.0 19.0 [10.0,15.0,17.299999999999997,19.0] +10 100.0 103.0 103.0 105.0 [100.0,103.0,104.0,105.0] +11 111.0 117.0 117.0 119.0 [111.0,117.0,118.30000000000001,119.0] +12 120.0 127.0 127.0 129.0 [120.0,127.0,128.0,129.0] +13 131.0 137.0 137.0 138.0 [131.0,137.0,138.0,138.0] +14 143.0 146.0 146.0 149.0 [143.0,146.0,147.5,149.0] +15 150.0 154.0 154.0 158.0 [150.0,154.0,155.9,158.0] +16 160.0 166.5 166.5 169.0 [160.0,166.5,167.5,169.0] +17 170.0 175.0 175.0 179.0 [170.0,175.0,176.4,179.0] +18 180.0 186.5 186.5 189.0 [180.0,186.5,187.0,189.0] +19 190.0 194.5 194.5 199.0 [190.0,194.5,196.5,199.0] +2 20.0 26.0 26.0 28.0 [20.0,26.0,26.2,28.0] +20 200.0 205.0 205.0 209.0 [200.0,205.0,207.8,209.0] +21 213.0 216.5 216.5 219.0 [213.0,216.5,217.3,219.0] +22 221.0 224.0 224.0 229.0 [221.0,224.0,226.0,229.0] +23 230.0 234.0 234.0 239.0 [230.0,234.0,237.10000000000002,239.0] +24 241.0 244.0 244.0 249.0 [241.0,244.0,247.2,249.0] +25 252.0 256.0 256.0 258.0 [252.0,256.0,256.2,258.0] +26 260.0 264.0 264.0 266.0 [260.0,264.0,265.0,266.0] +27 272.0 275.0 275.0 278.0 [272.0,275.0,277.0,278.0] +28 280.0 283.5 283.5 289.0 [280.0,283.5,286.09999999999997,289.0] +29 291.0 297.0 297.0 298.0 [291.0,297.0,298.0,298.0] +3 30.0 35.0 35.0 37.0 [30.0,35.0,35.0,37.0] +30 302.0 307.0 307.0 309.0 [302.0,307.0,307.9,309.0] +31 310.0 316.0 316.0 318.0 [310.0,316.0,317.0,318.0] +32 321.0 324.0 324.0 327.0 [321.0,324.0,325.6,327.0] +33 331.0 333.0 333.0 339.0 [331.0,333.0,335.6,339.0] +34 341.0 345.0 345.0 348.0 [341.0,345.0,348.0,348.0] +35 351.0 353.0 353.0 356.0 [351.0,353.0,353.29999999999995,356.0] +36 360.0 367.0 367.0 369.0 [360.0,367.0,368.0,369.0] +37 373.0 376.0 376.0 379.0 [373.0,376.0,377.5,379.0] +38 382.0 384.0 384.0 389.0 [382.0,384.0,384.4,389.0] +39 392.0 396.0 396.0 399.0 [392.0,396.0,396.7,399.0] +4 41.0 42.5 42.5 47.0 [41.0,42.5,43.5,47.0] +40 400.0 403.5 403.5 409.0 [400.0,403.5,406.0,409.0] +41 411.0 415.5 415.5 419.0 [411.0,415.5,417.0,419.0] +42 421.0 425.5 425.5 429.0 [421.0,425.5,428.0,429.0] +43 430.0 435.0 435.0 439.0 [430.0,435.0,437.79999999999995,439.0] +44 443.0 446.0 446.0 449.0 [443.0,446.0,447.6,449.0] +45 452.0 455.0 455.0 459.0 [452.0,455.0,458.0,459.0] +46 460.0 467.5 467.5 469.0 [460.0,467.5,468.0,469.0] +47 470.0 477.0 477.0 479.0 [470.0,477.0,478.0,479.0] +48 480.0 484.0 484.0 489.0 [480.0,484.0,487.79999999999995,489.0] +49 490.0 494.5 494.5 498.0 [490.0,494.5,496.7,498.0] +5 51.0 54.0 54.0 58.0 [51.0,54.0,57.199999999999996,58.0] +6 64.0 66.5 66.5 69.0 [64.0,66.5,67.0,69.0] +7 70.0 73.0 73.0 78.0 [70.0,73.0,76.0,78.0] +8 80.0 84.0 84.0 87.0 [80.0,84.0,84.6,87.0] +9 90.0 95.0 95.0 98.0 [90.0,95.0,97.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)