diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java index d7f1c7f..c1b8a1d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/PTFTranslator.java @@ -545,9 +545,7 @@ private BoundaryDef translate(ShapeDetails inpShape, BoundarySpec bndSpec) throws SemanticException { if (bndSpec instanceof ValueBoundarySpec) { ValueBoundarySpec vBndSpec = (ValueBoundarySpec) bndSpec; - ValueBoundaryDef vbDef = new ValueBoundaryDef(); - vbDef.setAmt(vBndSpec.getAmt()); - vbDef.setDirection(vBndSpec.getDirection()); + ValueBoundaryDef vbDef = new ValueBoundaryDef(vBndSpec.getDirection(), vBndSpec.getAmt()); PTFTranslator.validateNoLeadLagInValueBoundarySpec(vBndSpec.getExpression()); PTFExpressionDef exprDef = null; try { @@ -561,10 +559,7 @@ private BoundaryDef translate(ShapeDetails inpShape, BoundarySpec bndSpec) } else if (bndSpec instanceof RangeBoundarySpec) { RangeBoundarySpec rBndSpec = (RangeBoundarySpec) bndSpec; - RangeBoundaryDef rbDef = new RangeBoundaryDef(); - rbDef.setAmt(rBndSpec.getAmt()); - rbDef.setDirection(rBndSpec.getDirection()); - return rbDef; + return new RangeBoundaryDef(rBndSpec.getDirection(), rBndSpec.getAmt()); } else if (bndSpec instanceof CurrentRowSpec) { CurrentRowDef cbDef = new CurrentRowDef(); return cbDef; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java index 6dfa214..50f86df 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/WindowingSpec.java @@ -274,7 +274,7 @@ private void validateWindowFrame(WindowSpec wdwSpec) throws SemanticException { } if ( end.getDirection() == Direction.PRECEDING && - start.getAmt() == BoundarySpec.UNBOUNDED_AMOUNT ) { + end.getAmt() == BoundarySpec.UNBOUNDED_AMOUNT ) { throw new SemanticException("End of a WindowFrame cannot be UNBOUNDED PRECEDING"); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/BoundaryDef.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/BoundaryDef.java index eeb094c..c6518dc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/BoundaryDef.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/BoundaryDef.java @@ -28,11 +28,42 @@ public Direction getDirection() { return direction; } - public void setDirection(Direction direction) { - this.direction = direction; + /** + * Returns if the bound is PRECEDING. + * @return if the bound is PRECEDING + */ + public boolean isPreceding() { + return false; } + /** + * Returns if the bound is FOLLOWING. + * @return if the bound is FOLLOWING + */ + public boolean isFollowing() { + return false; + } + + /** + * Returns if the bound is CURRENT ROW. + * @return if the bound is CURRENT ROW + */ + public boolean isCurrentRow() { + return false; + } + + /** + * Returns offset from XX PRECEDING/FOLLOWING. + * + * @return offset from XX PRECEDING/FOLLOWING + */ public abstract int getAmt(); + /** + * Returns signed offset from XX PRECEDING/FOLLOWING. Nagative for preceding. + * + * @return signed offset from XX PRECEDING/FOLLOWING + */ + public abstract int getRelativeOffset(); public boolean isUnbounded() { return this.getAmt() == BoundarySpec.UNBOUNDED_AMOUNT; @@ -43,4 +74,4 @@ public String toString() { return direction == null ? "" : direction + "(" + (getAmt() == Integer.MAX_VALUE ? "MAX" : getAmt()) + ")"; } -} \ No newline at end of file +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/CurrentRowDef.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/CurrentRowDef.java index 768fae0..f5e2848 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/CurrentRowDef.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/CurrentRowDef.java @@ -35,4 +35,14 @@ public Direction getDirection() { public int getAmt() { return 0; } -} \ No newline at end of file + + @Override + public boolean isCurrentRow() { + return true; + } + + @Override + public int getRelativeOffset() { + return 0; + } +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/RangeBoundaryDef.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/RangeBoundaryDef.java index ce57625..f93399d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/RangeBoundaryDef.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/RangeBoundaryDef.java @@ -18,9 +18,28 @@ package org.apache.hadoop.hive.ql.plan.ptf; +import org.apache.hadoop.hive.ql.parse.WindowingSpec.Direction; public class RangeBoundaryDef extends BoundaryDef { private int amt; + private final int relativeOffset; + + public RangeBoundaryDef(Direction direction, int amt) { + this.direction = direction; + this.amt = amt; + + // Calculate relative offset + switch(this.direction) { + case PRECEDING: + relativeOffset = -amt; + break; + case FOLLOWING: + relativeOffset = amt; + break; + default: + relativeOffset = 0; + } + } public int compareTo(BoundaryDef other) { int c = getDirection().compareTo(other.getDirection()); @@ -28,7 +47,7 @@ public int compareTo(BoundaryDef other) { return c; } RangeBoundaryDef rb = (RangeBoundaryDef) other; - return getAmt() - rb.getAmt(); + return this.direction == Direction.PRECEDING ? rb.amt - this.amt : this.amt - rb.amt; } @Override @@ -36,7 +55,18 @@ public int getAmt() { return amt; } - public void setAmt(int amt) { - this.amt = amt; + @Override + public boolean isPreceding() { + return this.direction == Direction.PRECEDING; + } + + @Override + public boolean isFollowing() { + return this.direction == Direction.FOLLOWING; + } + + @Override + public int getRelativeOffset() { + return relativeOffset; } -} \ No newline at end of file +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/ValueBoundaryDef.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/ValueBoundaryDef.java index e89578c..3725ac8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/ValueBoundaryDef.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/ValueBoundaryDef.java @@ -18,13 +18,30 @@ package org.apache.hadoop.hive.ql.plan.ptf; -import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; -import org.apache.hadoop.hive.ql.plan.ExprNodeDesc; +import org.apache.hadoop.hive.ql.parse.WindowingSpec.Direction; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; public class ValueBoundaryDef extends BoundaryDef { private PTFExpressionDef expressionDef; - private int amt; + private final int amt; + private final int relativeOffset; + + public ValueBoundaryDef(Direction direction, int amt) { + this.direction = direction; + this.amt = amt; + + // Calculate relative offset + switch(this.direction) { + case PRECEDING: + relativeOffset = -amt; + break; + case FOLLOWING: + relativeOffset = amt; + break; + default: + relativeOffset = 0; + } + } public int compareTo(BoundaryDef other) { int c = getDirection().compareTo(other.getDirection()); @@ -32,7 +49,7 @@ public int compareTo(BoundaryDef other) { return c; } ValueBoundaryDef vb = (ValueBoundaryDef) other; - return getAmt() - vb.getAmt(); + return this.direction == Direction.PRECEDING ? vb.amt - this.amt : this.amt - vb.amt; } public PTFExpressionDef getExpressionDef() { @@ -43,14 +60,6 @@ public void setExpressionDef(PTFExpressionDef expressionDef) { this.expressionDef = expressionDef; } - public ExprNodeDesc getExprNode() { - return expressionDef == null ? null : expressionDef.getExprNode(); - } - - public ExprNodeEvaluator getExprEvaluator() { - return expressionDef == null ? null : expressionDef.getExprEvaluator(); - } - public ObjectInspector getOI() { return expressionDef == null ? null : expressionDef.getOI(); } @@ -60,7 +69,18 @@ public int getAmt() { return amt; } - public void setAmt(int amt) { - this.amt = amt; + @Override + public int getRelativeOffset() { + return relativeOffset; + } + + @Override + public boolean isPreceding() { + return this.direction == Direction.PRECEDING; + } + + @Override + public boolean isFollowing() { + return this.direction == Direction.FOLLOWING; } -} \ No newline at end of file +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/WindowFrameDef.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/WindowFrameDef.java index d153b08..5a85f69 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/WindowFrameDef.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ptf/WindowFrameDef.java @@ -22,11 +22,20 @@ public class WindowFrameDef { private BoundaryDef start; private BoundaryDef end; + private final int windowSize; public WindowFrameDef(BoundaryDef start, BoundaryDef end) { this.start = start; this.end = end; + + // Calculate window size + if (start.getDirection() == end.getDirection()) { + windowSize = Math.abs(end.getAmt() - start.getAmt()) + 1; + } else { + windowSize = end.getAmt() + start.getAmt() + 1; + } } + public BoundaryDef getStart() { return start; } @@ -44,11 +53,11 @@ public boolean isEndUnbounded() { } public int getWindowSize() { - return end.getAmt() + start.getAmt() + 1; + return windowSize; } @Override public String toString() { return start + "~" + end; } -} \ No newline at end of file +} diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java index 578c356..f27d066 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStreamingEvaluator.java @@ -65,7 +65,7 @@ public GenericUDAFStreamingEvaluator(GenericUDAFEvaluator wrappedEval, class StreamingState extends AbstractAggregationBuffer { final AggregationBuffer wrappedBuf; - final List results; + final List results; // Hold the aggregation results for each row in the partition int numRows; // Number of rows processed in the partition. StreamingState(AggregationBuffer buf) { @@ -127,7 +127,7 @@ public SumAvgEnhancer(GenericUDAFEvaluator wrappedEval, WindowFrameDef wFrameDef class SumAvgStreamingState extends StreamingState { - final List intermediateVals; + final List intermediateVals; // Keep track of S[0..x] SumAvgStreamingState(AggregationBuffer buf) { super(buf); @@ -163,20 +163,23 @@ protected void reset() { } /** - * After the number of rows processed is more than the size of FOLLOWING window, - * we can generate a PTF result for a previous row when a new row gets processed. + * For the cases "X preceding and Y preceding" or the number of processed rows + * is more than the size of FOLLOWING window, we are able to generate a PTF result + * for a previous row. * @return */ public boolean hasResultReady() { - return this.numRows >= wFrameDef.getEnd().getAmt(); + return this.numRows >= wFrameDef.getEnd().getRelativeOffset(); } /** - * Retrieve the next stored intermediate result to generate the result for next available row + * Retrieve the next stored intermediate result, i.e., + * Get S[x-1] in the computation of S[x..y] = S[y] - S[x-1]. */ public T2 retrieveNextIntermediateValue() { if (!wFrameDef.getStart().isUnbounded() - && (this.numRows - wFrameDef.getEnd().getAmt()) >= (wFrameDef.getStart().getAmt() + 1)) { + && !this.intermediateVals.isEmpty() + && this.numRows >= wFrameDef.getWindowSize()) { return this.intermediateVals.remove(0); } @@ -196,11 +199,20 @@ public void iterate(AggregationBuffer agg, Object[] parameters) SumAvgStreamingState ss = (SumAvgStreamingState) agg; wrappedEval.iterate(ss.wrappedBuf, parameters); - // Generate the result for a previous row, of whose window all the rows have been processed. + + // We need to insert 'null' before processing first row for the case: X preceding and y preceding + if (ss.numRows == 0) { + for (int i = wFrameDef.getEnd().getRelativeOffset(); i < 0; i++) { + ss.results.add(null); + } + } + + // Generate the result for the windowing ending at the current row if (ss.hasResultReady()) { ss.results.add(getNextResult(ss)); } - if (!wFrameDef.isStartUnbounded()) { + if (!wFrameDef.isStartUnbounded() + && ss.numRows + 1 >= wFrameDef.getStart().getRelativeOffset()) { ss.intermediateVals.add(getCurrentIntermediateResult(ss)); } @@ -212,11 +224,17 @@ public Object terminate(AggregationBuffer agg) throws HiveException { SumAvgStreamingState ss = (SumAvgStreamingState) agg; Object o = wrappedEval.terminate(ss.wrappedBuf); - // After all the rows are processed, continue to generate results for the rows that results haven't generate - for (int i = 0; i < wFrameDef.getEnd().getAmt(); i++) { + // After all the rows are processed, continue to generate results for the rows that results haven't generated. + // For the case: X following and Y following, process first Y-X results and then insert X nulls. + // For the case X preceding and Y following, process Y results. + for (int i = Math.max(0, wFrameDef.getStart().getRelativeOffset()); i < wFrameDef.getEnd().getRelativeOffset(); i++) { ss.results.add(getNextResult(ss)); ss.numRows++; } + for (int i = 0; i < wFrameDef.getStart().getRelativeOffset(); i++) { + ss.results.add(null); + ss.numRows++; + } return o; } diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udaf/TestStreamingSum.java b/ql/src/test/org/apache/hadoop/hive/ql/udaf/TestStreamingSum.java index 88cafc0..c26de3f 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/udaf/TestStreamingSum.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/udaf/TestStreamingSum.java @@ -54,19 +54,13 @@ public static WindowFrameDef wdwFrame(int p, int f) { if (p == 0) { start = new CurrentRowDef(); } else { - RangeBoundaryDef startR = new RangeBoundaryDef(); - startR.setDirection(Direction.PRECEDING); - startR.setAmt(p); - start = startR; + start = new RangeBoundaryDef(Direction.PRECEDING, p); } if (f == 0) { end = new CurrentRowDef(); } else { - RangeBoundaryDef endR = new RangeBoundaryDef(); - endR.setDirection(Direction.FOLLOWING); - endR.setAmt(f); - end = endR; + end = new RangeBoundaryDef(Direction.FOLLOWING, f); } return new WindowFrameDef(start, end); diff --git a/ql/src/test/queries/clientpositive/windowing_windowspec.q b/ql/src/test/queries/clientpositive/windowing_windowspec.q index 202eb74..63f97b7 100644 --- a/ql/src/test/queries/clientpositive/windowing_windowspec.q +++ b/ql/src/test/queries/clientpositive/windowing_windowspec.q @@ -31,8 +31,6 @@ select s, sum(i) over(partition by ts order by s) from over10k limit 100; select f, sum(f) over (partition by ts order by f range between unbounded preceding and current row) from over10k limit 100; -select f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100; - select s, i, round(avg(d) over (partition by s order by i) / 10.0 , 2) from over10k limit 7; select s, i, round((avg(d) over w1 + 10.0) - (avg(d) over w1 - 10.0),2) from over10k window w1 as (partition by s order by i) limit 7; diff --git a/ql/src/test/queries/clientpositive/windowing_windowspec2.q b/ql/src/test/queries/clientpositive/windowing_windowspec2.q new file mode 100644 index 0000000..3e8aa93 --- /dev/null +++ b/ql/src/test/queries/clientpositive/windowing_windowspec2.q @@ -0,0 +1,24 @@ +drop table over10k; + +create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|'; + +load data local inpath '../../data/files/over10k' into table over10k; + +select ts, f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100; +select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 preceding) from over10k limit 100; +select ts, f, sum(f) over (partition by ts order by f rows between 1 following and 2 following) from over10k limit 100; +select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 following) from over10k limit 100; + diff --git a/ql/src/test/results/clientpositive/windowing_windowspec.q.out b/ql/src/test/results/clientpositive/windowing_windowspec.q.out index 66b0b52..8d78c22 100644 --- a/ql/src/test/results/clientpositive/windowing_windowspec.q.out +++ b/ql/src/test/results/clientpositive/windowing_windowspec.q.out @@ -800,114 +800,6 @@ POSTHOOK: Input: default@over10k 71.68 722.6499947607517 79.46 802.1099938452244 80.02 882.1299904882908 -PREHOOK: query: select f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100 -PREHOOK: type: QUERY -PREHOOK: Input: default@over10k -#### A masked pattern was here #### -POSTHOOK: query: select f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100 -POSTHOOK: type: QUERY -POSTHOOK: Input: default@over10k -#### A masked pattern was here #### -3.17 14.0600004196167 -10.89 28.600000381469727 -14.54 43.38000011444092 -14.78 58.0600004196167 -17.85 67.78000068664551 -20.61 81.9300012588501 -28.69 96.3700008392334 -29.22 109.69000053405762 -31.17 127.42999839782715 -38.35 137.3499984741211 -38.61 147.60999870300293 -39.48 156.97999954223633 -40.54 160.22999954223633 -41.6 167.70000076293945 -46.08 182.5800018310547 -54.36 198.97999954223633 -56.94 222.3400001525879 -64.96 249.7799949645996 -73.52 273.99999618530273 -78.58 298.4700012207031 -81.41 318.2200012207031 -84.71 332.1300048828125 -87.43 344.9100036621094 -91.36 356.45999908447266 -92.96 366.79000091552734 -95.04 279.36000061035156 -0.83 2.8199999928474426 -1.99 6.550000011920929 -3.73 15.409999668598175 -8.86 25.199999570846558 -10.62 34.52999925613403 -11.32 43.6299991607666 -12.83 49.46999931335449 -14.7 53.80999946594238 -14.96 60.06999969482422 -17.58 66.34000015258789 -19.1 72.65000057220459 -21.01 84.64000129699707 -26.95 94.29000091552734 -27.23 104.26000022888184 -29.07 112.95999908447266 -29.71 117.8499984741211 -31.84 122.55999946594238 -31.94 128.80999946594238 -35.32 136.42000007629395 -37.32 143.07999992370605 -38.5 153.22000122070312 -42.08 162.20000076293945 -44.3 169.54000091552734 -44.66 177.88000106811523 -46.84 184.68999862670898 -48.89 190.02999877929688 -49.64 195.64999771118164 -50.28 200.89999771118164 -52.09 205.2699966430664 -53.26 209.71999740600586 -54.09 215.88999938964844 -56.45 220.55999755859375 -56.76 228.70999908447266 -61.41 236.5 -61.88 243.07999801635742 -63.03 250.87000274658203 -64.55 258.08000564575195 -68.62 272.3300018310547 -76.13 288.3500061035156 -79.05 304.2300033569336 -80.43 317.02000427246094 -81.41 323.74000549316406 -82.85 328.67000579833984 -83.98 332.4500045776367 -84.21 336.59000396728516 -85.55 341.67000579833984 -87.93 346.62000274658203 -88.93 356.6800003051758 -94.27 370.57999420166016 -99.45 282.6499938964844 -0.36 0.8400000035762787 -0.48 1.6300000250339508 -0.79 2.9000000059604645 -1.27 7.020000010728836 -4.48 15.540000021457672 -9.0 38.02000045776367 -23.27 61.87999963760376 -25.13 82.73999977111816 -25.34 99.64999961853027 -25.91 105.38999938964844 -29.01 110.72999954223633 -30.47 123.34000015258789 -37.95 136.72999954223633 -39.3 153.6299991607666 -45.91 175.5999984741211 -52.44 191.74999618530273 -54.1 209.14999771118164 -56.7 222.0099983215332 -58.77 231.6599998474121 -62.09 245.7599983215332 -68.2 260.73999786376953 -71.68 281.4299964904785 -79.46 299.35999298095703 -80.02 312.4499969482422 PREHOOK: query: select s, i, round(avg(d) over (partition by s order by i) / 10.0 , 2) from over10k limit 7 PREHOOK: type: QUERY PREHOOK: Input: default@over10k diff --git a/ql/src/test/results/clientpositive/windowing_windowspec2.q.out b/ql/src/test/results/clientpositive/windowing_windowspec2.q.out new file mode 100644 index 0000000..0879344 --- /dev/null +++ b/ql/src/test/results/clientpositive/windowing_windowspec2.q.out @@ -0,0 +1,478 @@ +PREHOOK: query: drop table over10k +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table over10k +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@over10k +POSTHOOK: query: create table over10k( + t tinyint, + si smallint, + i int, + b bigint, + f float, + d double, + bo boolean, + s string, + ts timestamp, + dec decimal, + bin binary) + row format delimited + fields terminated by '|' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@over10k +PREHOOK: query: load data local inpath '../../data/files/over10k' into table over10k +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@over10k +POSTHOOK: query: load data local inpath '../../data/files/over10k' into table over10k +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@over10k +PREHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@over10k +#### A masked pattern was here #### +POSTHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between 2 preceding and 1 preceding) from over10k limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over10k +#### A masked pattern was here #### +2013-03-01 09:11:58.70307 3.17 NULL +2013-03-01 09:11:58.70307 10.89 3.1700000762939453 +2013-03-01 09:11:58.70307 14.54 14.0600004196167 +2013-03-01 09:11:58.70307 14.78 25.43000030517578 +2013-03-01 09:11:58.70307 17.85 29.31999969482422 +2013-03-01 09:11:58.70307 20.61 32.63000011444092 +2013-03-01 09:11:58.70307 28.69 38.46000099182129 +2013-03-01 09:11:58.70307 29.22 49.30000114440918 +2013-03-01 09:11:58.70307 31.17 57.90999984741211 +2013-03-01 09:11:58.70307 38.35 60.38999938964844 +2013-03-01 09:11:58.70307 38.61 69.51999855041504 +2013-03-01 09:11:58.70307 39.48 76.95999908447266 +2013-03-01 09:11:58.70307 40.54 78.09000015258789 +2013-03-01 09:11:58.70307 41.6 80.02000045776367 +2013-03-01 09:11:58.70307 46.08 82.13999938964844 +2013-03-01 09:11:58.70307 54.36 87.68000030517578 +2013-03-01 09:11:58.70307 56.94 100.44000244140625 +2013-03-01 09:11:58.70307 64.96 111.29999923706055 +2013-03-01 09:11:58.70307 73.52 121.89999771118164 +2013-03-01 09:11:58.70307 78.58 138.47999572753906 +2013-03-01 09:11:58.70307 81.41 152.0999984741211 +2013-03-01 09:11:58.70307 84.71 159.99000549316406 +2013-03-01 09:11:58.70307 87.43 166.12000274658203 +2013-03-01 09:11:58.70307 91.36 172.13999938964844 +2013-03-01 09:11:58.70307 92.96 178.79000091552734 +2013-03-01 09:11:58.70307 95.04 184.31999969482422 +2013-03-01 09:11:58.703071 0.83 NULL +2013-03-01 09:11:58.703071 1.99 0.8299999833106995 +2013-03-01 09:11:58.703071 3.73 2.8199999928474426 +2013-03-01 09:11:58.703071 8.86 5.7200000286102295 +2013-03-01 09:11:58.703071 10.62 12.589999675750732 +2013-03-01 09:11:58.703071 11.32 19.479999542236328 +2013-03-01 09:11:58.703071 12.83 21.9399995803833 +2013-03-01 09:11:58.703071 14.7 24.149999618530273 +2013-03-01 09:11:58.703071 14.96 27.52999973297119 +2013-03-01 09:11:58.703071 17.58 29.65999984741211 +2013-03-01 09:11:58.703071 19.1 32.53999996185303 +2013-03-01 09:11:58.703071 21.01 36.68000030517578 +2013-03-01 09:11:58.703071 26.95 40.11000061035156 +2013-03-01 09:11:58.703071 27.23 47.96000099182129 +2013-03-01 09:11:58.703071 29.07 54.18000030517578 +2013-03-01 09:11:58.703071 29.71 56.29999923706055 +2013-03-01 09:11:58.703071 31.84 58.779998779296875 +2013-03-01 09:11:58.703071 31.94 61.54999923706055 +2013-03-01 09:11:58.703071 35.32 63.78000068664551 +2013-03-01 09:11:58.703071 37.32 67.26000022888184 +2013-03-01 09:11:58.703071 38.5 72.63999938964844 +2013-03-01 09:11:58.703071 42.08 75.81999969482422 +2013-03-01 09:11:58.703071 44.3 80.58000183105469 +2013-03-01 09:11:58.703071 44.66 86.38000106811523 +2013-03-01 09:11:58.703071 46.84 88.95999908447266 +2013-03-01 09:11:58.703071 48.89 91.5 +2013-03-01 09:11:58.703071 49.64 95.72999954223633 +2013-03-01 09:11:58.703071 50.28 98.52999877929688 +2013-03-01 09:11:58.703071 52.09 99.91999816894531 +2013-03-01 09:11:58.703071 53.26 102.36999893188477 +2013-03-01 09:11:58.703071 54.09 105.3499984741211 +2013-03-01 09:11:58.703071 56.45 107.3499984741211 +2013-03-01 09:11:58.703071 56.76 110.54000091552734 +2013-03-01 09:11:58.703071 61.41 113.20999908447266 +2013-03-01 09:11:58.703071 61.88 118.16999816894531 +2013-03-01 09:11:58.703071 63.03 123.29000091552734 +2013-03-01 09:11:58.703071 64.55 124.90999984741211 +2013-03-01 09:11:58.703071 68.62 127.58000183105469 +2013-03-01 09:11:58.703071 76.13 133.17000579833984 +2013-03-01 09:11:58.703071 79.05 144.75 +2013-03-01 09:11:58.703071 80.43 155.18000030517578 +2013-03-01 09:11:58.703071 81.41 159.4800033569336 +2013-03-01 09:11:58.703071 82.85 161.84000396728516 +2013-03-01 09:11:58.703071 83.98 164.26000213623047 +2013-03-01 09:11:58.703071 84.21 166.8300018310547 +2013-03-01 09:11:58.703071 85.55 168.19000244140625 +2013-03-01 09:11:58.703071 87.93 169.76000213623047 +2013-03-01 09:11:58.703071 88.93 173.4800033569336 +2013-03-01 09:11:58.703071 94.27 176.86000061035156 +2013-03-01 09:11:58.703071 99.45 183.1999969482422 +2013-03-01 09:11:58.703072 0.36 NULL +2013-03-01 09:11:58.703072 0.48 0.36000001430511475 +2013-03-01 09:11:58.703072 0.79 0.8400000035762787 +2013-03-01 09:11:58.703072 1.27 1.270000010728836 +2013-03-01 09:11:58.703072 4.48 2.060000002384186 +2013-03-01 09:11:58.703072 9.0 5.75 +2013-03-01 09:11:58.703072 23.27 13.480000019073486 +2013-03-01 09:11:58.703072 25.13 32.27000045776367 +2013-03-01 09:11:58.703072 25.34 48.39999961853027 +2013-03-01 09:11:58.703072 25.91 50.46999931335449 +2013-03-01 09:11:58.703072 29.01 51.25 +2013-03-01 09:11:58.703072 30.47 54.920000076293945 +2013-03-01 09:11:58.703072 37.95 59.47999954223633 +2013-03-01 09:11:58.703072 39.3 68.42000007629395 +2013-03-01 09:11:58.703072 45.91 77.25 +2013-03-01 09:11:58.703072 52.44 85.20999908447266 +2013-03-01 09:11:58.703072 54.1 98.3499984741211 +2013-03-01 09:11:58.703072 56.7 106.53999710083008 +2013-03-01 09:11:58.703072 58.77 110.79999923706055 +2013-03-01 09:11:58.703072 62.09 115.47000122070312 +2013-03-01 09:11:58.703072 68.2 120.86000061035156 +2013-03-01 09:11:58.703072 71.68 130.28999710083008 +2013-03-01 09:11:58.703072 79.46 139.87999725341797 +2013-03-01 09:11:58.703072 80.02 151.13999938964844 +PREHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 preceding) from over10k limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@over10k +#### A masked pattern was here #### +POSTHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 preceding) from over10k limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over10k +#### A masked pattern was here #### +2013-03-01 09:11:58.70307 3.17 NULL +2013-03-01 09:11:58.70307 10.89 3.1700000762939453 +2013-03-01 09:11:58.70307 14.54 14.0600004196167 +2013-03-01 09:11:58.70307 14.78 28.600000381469727 +2013-03-01 09:11:58.70307 17.85 43.38000011444092 +2013-03-01 09:11:58.70307 20.61 61.230000495910645 +2013-03-01 09:11:58.70307 28.69 81.8400011062622 +2013-03-01 09:11:58.70307 29.22 110.53000164031982 +2013-03-01 09:11:58.70307 31.17 139.75000095367432 +2013-03-01 09:11:58.70307 38.35 170.92000102996826 +2013-03-01 09:11:58.70307 38.61 209.26999950408936 +2013-03-01 09:11:58.70307 39.48 247.88000011444092 +2013-03-01 09:11:58.70307 40.54 287.35999965667725 +2013-03-01 09:11:58.70307 41.6 327.9000005722046 +2013-03-01 09:11:58.70307 46.08 369.4999990463257 +2013-03-01 09:11:58.70307 54.36 415.58000087738037 +2013-03-01 09:11:58.70307 56.94 469.94000148773193 +2013-03-01 09:11:58.70307 64.96 526.8800001144409 +2013-03-01 09:11:58.70307 73.52 591.8399991989136 +2013-03-01 09:11:58.70307 78.58 665.35999584198 +2013-03-01 09:11:58.70307 81.41 743.9399976730347 +2013-03-01 09:11:58.70307 84.71 825.350001335144 +2013-03-01 09:11:58.70307 87.43 910.0600004196167 +2013-03-01 09:11:58.70307 91.36 997.4900007247925 +2013-03-01 09:11:58.70307 92.96 1088.850001335144 +2013-03-01 09:11:58.70307 95.04 1181.8100004196167 +2013-03-01 09:11:58.703071 0.83 NULL +2013-03-01 09:11:58.703071 1.99 0.8299999833106995 +2013-03-01 09:11:58.703071 3.73 2.8199999928474426 +2013-03-01 09:11:58.703071 8.86 6.550000011920929 +2013-03-01 09:11:58.703071 10.62 15.409999668598175 +2013-03-01 09:11:58.703071 11.32 26.029999554157257 +2013-03-01 09:11:58.703071 12.83 37.349999248981476 +2013-03-01 09:11:58.703071 14.7 50.17999917268753 +2013-03-01 09:11:58.703071 14.96 64.87999898195267 +2013-03-01 09:11:58.703071 17.58 79.83999902009964 +2013-03-01 09:11:58.703071 19.1 97.4199989438057 +2013-03-01 09:11:58.703071 21.01 116.51999932527542 +2013-03-01 09:11:58.703071 26.95 137.52999955415726 +2013-03-01 09:11:58.703071 27.23 164.4800003170967 +2013-03-01 09:11:58.703071 29.07 191.70999985933304 +2013-03-01 09:11:58.703071 29.71 220.77999955415726 +2013-03-01 09:11:58.703071 31.84 250.4899986386299 +2013-03-01 09:11:58.703071 31.94 282.3299987912178 +2013-03-01 09:11:58.703071 35.32 314.2699993252754 +2013-03-01 09:11:58.703071 37.32 349.58999902009964 +2013-03-01 09:11:58.703071 38.5 386.90999871492386 +2013-03-01 09:11:58.703071 42.08 425.40999871492386 +2013-03-01 09:11:58.703071 44.3 467.49000054597855 +2013-03-01 09:11:58.703071 44.66 511.7899997830391 +2013-03-01 09:11:58.703071 46.84 556.4499996304512 +2013-03-01 09:11:58.703071 48.89 603.2899997830391 +2013-03-01 09:11:58.703071 49.64 652.1799991726875 +2013-03-01 09:11:58.703071 50.28 701.819998562336 +2013-03-01 09:11:58.703071 52.09 752.0999973416328 +2013-03-01 09:11:58.703071 53.26 804.1899974942207 +2013-03-01 09:11:58.703071 54.09 857.4499958157539 +2013-03-01 09:11:58.703071 56.45 911.5399959683418 +2013-03-01 09:11:58.703071 56.76 967.9899967312813 +2013-03-01 09:11:58.703071 61.41 1024.7499950528145 +2013-03-01 09:11:58.703071 61.88 1086.1599949002266 +2013-03-01 09:11:58.703071 63.03 1148.0399959683418 +2013-03-01 09:11:58.703071 64.55 1211.0699947476387 +2013-03-01 09:11:58.703071 68.62 1275.6199977993965 +2013-03-01 09:11:58.703071 76.13 1344.2400005459785 +2013-03-01 09:11:58.703071 79.05 1420.3699977993965 +2013-03-01 09:11:58.703071 80.43 1499.4200008511543 +2013-03-01 09:11:58.703071 81.41 1579.85000115633 +2013-03-01 09:11:58.703071 82.85 1661.2600048184395 +2013-03-01 09:11:58.703071 83.98 1744.1100032925606 +2013-03-01 09:11:58.703071 84.21 1828.0900066494942 +2013-03-01 09:11:58.703071 85.55 1912.3000057339668 +2013-03-01 09:11:58.703071 87.93 1997.8500087857246 +2013-03-01 09:11:58.703071 88.93 2085.7800090909004 +2013-03-01 09:11:58.703071 94.27 2174.710009396076 +2013-03-01 09:11:58.703071 99.45 2268.9800060391426 +2013-03-01 09:11:58.703072 0.36 NULL +2013-03-01 09:11:58.703072 0.48 0.36000001430511475 +2013-03-01 09:11:58.703072 0.79 0.8400000035762787 +2013-03-01 09:11:58.703072 1.27 1.6300000250339508 +2013-03-01 09:11:58.703072 4.48 2.9000000059604645 +2013-03-01 09:11:58.703072 9.0 7.380000025033951 +2013-03-01 09:11:58.703072 23.27 16.38000002503395 +2013-03-01 09:11:58.703072 25.13 39.65000048279762 +2013-03-01 09:11:58.703072 25.34 64.77999964356422 +2013-03-01 09:11:58.703072 25.91 90.11999979615211 +2013-03-01 09:11:58.703072 29.01 116.02999964356422 +2013-03-01 09:11:58.703072 30.47 145.03999987244606 +2013-03-01 09:11:58.703072 37.95 175.50999918580055 +2013-03-01 09:11:58.703072 39.3 213.45999994874 +2013-03-01 09:11:58.703072 45.91 252.75999918580055 +2013-03-01 09:11:58.703072 52.44 298.66999903321266 +2013-03-01 09:11:58.703072 54.1 351.10999765992165 +2013-03-01 09:11:58.703072 56.7 405.20999613404274 +2013-03-01 09:11:58.703072 58.77 461.9099968969822 +2013-03-01 09:11:58.703072 62.09 520.6799973547459 +2013-03-01 09:11:58.703072 68.2 582.7699975073338 +2013-03-01 09:11:58.703072 71.68 650.9699944555759 +2013-03-01 09:11:58.703072 79.46 722.6499947607517 +2013-03-01 09:11:58.703072 80.02 802.1099938452244 +PREHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between 1 following and 2 following) from over10k limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@over10k +#### A masked pattern was here #### +POSTHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between 1 following and 2 following) from over10k limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over10k +#### A masked pattern was here #### +2013-03-01 09:11:58.70307 3.17 25.43000030517578 +2013-03-01 09:11:58.70307 10.89 29.31999969482422 +2013-03-01 09:11:58.70307 14.54 32.63000011444092 +2013-03-01 09:11:58.70307 14.78 38.46000099182129 +2013-03-01 09:11:58.70307 17.85 49.30000114440918 +2013-03-01 09:11:58.70307 20.61 57.90999984741211 +2013-03-01 09:11:58.70307 28.69 60.38999938964844 +2013-03-01 09:11:58.70307 29.22 69.51999855041504 +2013-03-01 09:11:58.70307 31.17 76.95999908447266 +2013-03-01 09:11:58.70307 38.35 78.09000015258789 +2013-03-01 09:11:58.70307 38.61 80.02000045776367 +2013-03-01 09:11:58.70307 39.48 82.13999938964844 +2013-03-01 09:11:58.70307 40.54 87.68000030517578 +2013-03-01 09:11:58.70307 41.6 100.44000244140625 +2013-03-01 09:11:58.70307 46.08 111.29999923706055 +2013-03-01 09:11:58.70307 54.36 121.89999771118164 +2013-03-01 09:11:58.70307 56.94 138.47999572753906 +2013-03-01 09:11:58.70307 64.96 152.0999984741211 +2013-03-01 09:11:58.70307 73.52 159.99000549316406 +2013-03-01 09:11:58.70307 78.58 166.12000274658203 +2013-03-01 09:11:58.70307 81.41 172.13999938964844 +2013-03-01 09:11:58.70307 84.71 178.79000091552734 +2013-03-01 09:11:58.70307 87.43 184.31999969482422 +2013-03-01 09:11:58.70307 91.36 188.0 +2013-03-01 09:11:58.70307 92.96 95.04000091552734 +2013-03-01 09:11:58.70307 95.04 NULL +2013-03-01 09:11:58.703071 0.83 5.7200000286102295 +2013-03-01 09:11:58.703071 1.99 12.589999675750732 +2013-03-01 09:11:58.703071 3.73 19.479999542236328 +2013-03-01 09:11:58.703071 8.86 21.9399995803833 +2013-03-01 09:11:58.703071 10.62 24.149999618530273 +2013-03-01 09:11:58.703071 11.32 27.52999973297119 +2013-03-01 09:11:58.703071 12.83 29.65999984741211 +2013-03-01 09:11:58.703071 14.7 32.53999996185303 +2013-03-01 09:11:58.703071 14.96 36.68000030517578 +2013-03-01 09:11:58.703071 17.58 40.11000061035156 +2013-03-01 09:11:58.703071 19.1 47.96000099182129 +2013-03-01 09:11:58.703071 21.01 54.18000030517578 +2013-03-01 09:11:58.703071 26.95 56.29999923706055 +2013-03-01 09:11:58.703071 27.23 58.779998779296875 +2013-03-01 09:11:58.703071 29.07 61.54999923706055 +2013-03-01 09:11:58.703071 29.71 63.78000068664551 +2013-03-01 09:11:58.703071 31.84 67.26000022888184 +2013-03-01 09:11:58.703071 31.94 72.63999938964844 +2013-03-01 09:11:58.703071 35.32 75.81999969482422 +2013-03-01 09:11:58.703071 37.32 80.58000183105469 +2013-03-01 09:11:58.703071 38.5 86.38000106811523 +2013-03-01 09:11:58.703071 42.08 88.95999908447266 +2013-03-01 09:11:58.703071 44.3 91.5 +2013-03-01 09:11:58.703071 44.66 95.72999954223633 +2013-03-01 09:11:58.703071 46.84 98.52999877929688 +2013-03-01 09:11:58.703071 48.89 99.91999816894531 +2013-03-01 09:11:58.703071 49.64 102.36999893188477 +2013-03-01 09:11:58.703071 50.28 105.3499984741211 +2013-03-01 09:11:58.703071 52.09 107.3499984741211 +2013-03-01 09:11:58.703071 53.26 110.54000091552734 +2013-03-01 09:11:58.703071 54.09 113.20999908447266 +2013-03-01 09:11:58.703071 56.45 118.16999816894531 +2013-03-01 09:11:58.703071 56.76 123.29000091552734 +2013-03-01 09:11:58.703071 61.41 124.90999984741211 +2013-03-01 09:11:58.703071 61.88 127.58000183105469 +2013-03-01 09:11:58.703071 63.03 133.17000579833984 +2013-03-01 09:11:58.703071 64.55 144.75 +2013-03-01 09:11:58.703071 68.62 155.18000030517578 +2013-03-01 09:11:58.703071 76.13 159.4800033569336 +2013-03-01 09:11:58.703071 79.05 161.84000396728516 +2013-03-01 09:11:58.703071 80.43 164.26000213623047 +2013-03-01 09:11:58.703071 81.41 166.8300018310547 +2013-03-01 09:11:58.703071 82.85 168.19000244140625 +2013-03-01 09:11:58.703071 83.98 169.76000213623047 +2013-03-01 09:11:58.703071 84.21 173.4800033569336 +2013-03-01 09:11:58.703071 85.55 176.86000061035156 +2013-03-01 09:11:58.703071 87.93 183.1999969482422 +2013-03-01 09:11:58.703071 88.93 193.7199935913086 +2013-03-01 09:11:58.703071 94.27 99.44999694824219 +2013-03-01 09:11:58.703071 99.45 NULL +2013-03-01 09:11:58.703072 0.36 1.270000010728836 +2013-03-01 09:11:58.703072 0.48 2.060000002384186 +2013-03-01 09:11:58.703072 0.79 5.75 +2013-03-01 09:11:58.703072 1.27 13.480000019073486 +2013-03-01 09:11:58.703072 4.48 32.27000045776367 +2013-03-01 09:11:58.703072 9.0 48.39999961853027 +2013-03-01 09:11:58.703072 23.27 50.46999931335449 +2013-03-01 09:11:58.703072 25.13 51.25 +2013-03-01 09:11:58.703072 25.34 54.920000076293945 +2013-03-01 09:11:58.703072 25.91 59.47999954223633 +2013-03-01 09:11:58.703072 29.01 68.42000007629395 +2013-03-01 09:11:58.703072 30.47 77.25 +2013-03-01 09:11:58.703072 37.95 85.20999908447266 +2013-03-01 09:11:58.703072 39.3 98.3499984741211 +2013-03-01 09:11:58.703072 45.91 106.53999710083008 +2013-03-01 09:11:58.703072 52.44 110.79999923706055 +2013-03-01 09:11:58.703072 54.1 115.47000122070312 +2013-03-01 09:11:58.703072 56.7 120.86000061035156 +2013-03-01 09:11:58.703072 58.77 130.28999710083008 +2013-03-01 09:11:58.703072 62.09 139.87999725341797 +2013-03-01 09:11:58.703072 68.2 151.13999938964844 +2013-03-01 09:11:58.703072 71.68 159.47999572753906 +2013-03-01 09:11:58.703072 79.46 161.30999755859375 +2013-03-01 09:11:58.703072 80.02 168.27000427246094 +PREHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 following) from over10k limit 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@over10k +#### A masked pattern was here #### +POSTHOOK: query: select ts, f, sum(f) over (partition by ts order by f rows between unbounded preceding and 1 following) from over10k limit 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over10k +#### A masked pattern was here #### +2013-03-01 09:11:58.70307 3.17 14.0600004196167 +2013-03-01 09:11:58.70307 10.89 28.600000381469727 +2013-03-01 09:11:58.70307 14.54 43.38000011444092 +2013-03-01 09:11:58.70307 14.78 61.230000495910645 +2013-03-01 09:11:58.70307 17.85 81.8400011062622 +2013-03-01 09:11:58.70307 20.61 110.53000164031982 +2013-03-01 09:11:58.70307 28.69 139.75000095367432 +2013-03-01 09:11:58.70307 29.22 170.92000102996826 +2013-03-01 09:11:58.70307 31.17 209.26999950408936 +2013-03-01 09:11:58.70307 38.35 247.88000011444092 +2013-03-01 09:11:58.70307 38.61 287.35999965667725 +2013-03-01 09:11:58.70307 39.48 327.9000005722046 +2013-03-01 09:11:58.70307 40.54 369.4999990463257 +2013-03-01 09:11:58.70307 41.6 415.58000087738037 +2013-03-01 09:11:58.70307 46.08 469.94000148773193 +2013-03-01 09:11:58.70307 54.36 526.8800001144409 +2013-03-01 09:11:58.70307 56.94 591.8399991989136 +2013-03-01 09:11:58.70307 64.96 665.35999584198 +2013-03-01 09:11:58.70307 73.52 743.9399976730347 +2013-03-01 09:11:58.70307 78.58 825.350001335144 +2013-03-01 09:11:58.70307 81.41 910.0600004196167 +2013-03-01 09:11:58.70307 84.71 997.4900007247925 +2013-03-01 09:11:58.70307 87.43 1088.850001335144 +2013-03-01 09:11:58.70307 91.36 1181.8100004196167 +2013-03-01 09:11:58.70307 92.96 1276.850001335144 +2013-03-01 09:11:58.70307 95.04 1276.850001335144 +2013-03-01 09:11:58.703071 0.83 2.8199999928474426 +2013-03-01 09:11:58.703071 1.99 6.550000011920929 +2013-03-01 09:11:58.703071 3.73 15.409999668598175 +2013-03-01 09:11:58.703071 8.86 26.029999554157257 +2013-03-01 09:11:58.703071 10.62 37.349999248981476 +2013-03-01 09:11:58.703071 11.32 50.17999917268753 +2013-03-01 09:11:58.703071 12.83 64.87999898195267 +2013-03-01 09:11:58.703071 14.7 79.83999902009964 +2013-03-01 09:11:58.703071 14.96 97.4199989438057 +2013-03-01 09:11:58.703071 17.58 116.51999932527542 +2013-03-01 09:11:58.703071 19.1 137.52999955415726 +2013-03-01 09:11:58.703071 21.01 164.4800003170967 +2013-03-01 09:11:58.703071 26.95 191.70999985933304 +2013-03-01 09:11:58.703071 27.23 220.77999955415726 +2013-03-01 09:11:58.703071 29.07 250.4899986386299 +2013-03-01 09:11:58.703071 29.71 282.3299987912178 +2013-03-01 09:11:58.703071 31.84 314.2699993252754 +2013-03-01 09:11:58.703071 31.94 349.58999902009964 +2013-03-01 09:11:58.703071 35.32 386.90999871492386 +2013-03-01 09:11:58.703071 37.32 425.40999871492386 +2013-03-01 09:11:58.703071 38.5 467.49000054597855 +2013-03-01 09:11:58.703071 42.08 511.7899997830391 +2013-03-01 09:11:58.703071 44.3 556.4499996304512 +2013-03-01 09:11:58.703071 44.66 603.2899997830391 +2013-03-01 09:11:58.703071 46.84 652.1799991726875 +2013-03-01 09:11:58.703071 48.89 701.819998562336 +2013-03-01 09:11:58.703071 49.64 752.0999973416328 +2013-03-01 09:11:58.703071 50.28 804.1899974942207 +2013-03-01 09:11:58.703071 52.09 857.4499958157539 +2013-03-01 09:11:58.703071 53.26 911.5399959683418 +2013-03-01 09:11:58.703071 54.09 967.9899967312813 +2013-03-01 09:11:58.703071 56.45 1024.7499950528145 +2013-03-01 09:11:58.703071 56.76 1086.1599949002266 +2013-03-01 09:11:58.703071 61.41 1148.0399959683418 +2013-03-01 09:11:58.703071 61.88 1211.0699947476387 +2013-03-01 09:11:58.703071 63.03 1275.6199977993965 +2013-03-01 09:11:58.703071 64.55 1344.2400005459785 +2013-03-01 09:11:58.703071 68.62 1420.3699977993965 +2013-03-01 09:11:58.703071 76.13 1499.4200008511543 +2013-03-01 09:11:58.703071 79.05 1579.85000115633 +2013-03-01 09:11:58.703071 80.43 1661.2600048184395 +2013-03-01 09:11:58.703071 81.41 1744.1100032925606 +2013-03-01 09:11:58.703071 82.85 1828.0900066494942 +2013-03-01 09:11:58.703071 83.98 1912.3000057339668 +2013-03-01 09:11:58.703071 84.21 1997.8500087857246 +2013-03-01 09:11:58.703071 85.55 2085.7800090909004 +2013-03-01 09:11:58.703071 87.93 2174.710009396076 +2013-03-01 09:11:58.703071 88.93 2268.9800060391426 +2013-03-01 09:11:58.703071 94.27 2368.430002987385 +2013-03-01 09:11:58.703071 99.45 2368.430002987385 +2013-03-01 09:11:58.703072 0.36 0.8400000035762787 +2013-03-01 09:11:58.703072 0.48 1.6300000250339508 +2013-03-01 09:11:58.703072 0.79 2.9000000059604645 +2013-03-01 09:11:58.703072 1.27 7.380000025033951 +2013-03-01 09:11:58.703072 4.48 16.38000002503395 +2013-03-01 09:11:58.703072 9.0 39.65000048279762 +2013-03-01 09:11:58.703072 23.27 64.77999964356422 +2013-03-01 09:11:58.703072 25.13 90.11999979615211 +2013-03-01 09:11:58.703072 25.34 116.02999964356422 +2013-03-01 09:11:58.703072 25.91 145.03999987244606 +2013-03-01 09:11:58.703072 29.01 175.50999918580055 +2013-03-01 09:11:58.703072 30.47 213.45999994874 +2013-03-01 09:11:58.703072 37.95 252.75999918580055 +2013-03-01 09:11:58.703072 39.3 298.66999903321266 +2013-03-01 09:11:58.703072 45.91 351.10999765992165 +2013-03-01 09:11:58.703072 52.44 405.20999613404274 +2013-03-01 09:11:58.703072 54.1 461.9099968969822 +2013-03-01 09:11:58.703072 56.7 520.6799973547459 +2013-03-01 09:11:58.703072 58.77 582.7699975073338 +2013-03-01 09:11:58.703072 62.09 650.9699944555759 +2013-03-01 09:11:58.703072 68.2 722.6499947607517 +2013-03-01 09:11:58.703072 71.68 802.1099938452244 +2013-03-01 09:11:58.703072 79.46 882.1299904882908 +2013-03-01 09:11:58.703072 80.02 963.4199914038181