use of com.sap.hadoop.windowing.query2.definition.WindowFrameDef in project SQLWindowing by hbutani.
the class WindowSpecTranslation method translateWindowSpecOnInput.
/*
* <ol>
* <li> If wSpec points to a source WindowSpec. Validate that it is valid. If it hasn't been already translated then translate it.
* <li> Start with an empty WdwDef or a cloned WdwDef from the source WdwDef.
* <li> translate the PartitionSpec if it exists. Replace the existing PDef with this; also remove the OrderDef.
* <li> translate the OrderSpec if it exists. Replace existing OrderDef with this.
* <li> add in Partition Columns if not in OrderDef already.
* <li> translate the WindowSpec if it exists. Replace existing WdwDef with it.
* <li> If name is non-null add this def to TranslationInfo::nameToWdwDef map.
* </ol>
*/
static WindowDef translateWindowSpecOnInput(QueryDef qDef, WindowSpec wSpec, InputInfo iInfo, String inputDesc) throws WindowingException {
QuerySpec qSpec = qDef.getSpec();
WindowDef wDef;
fillInWindowSpec(qSpec, wSpec.getSourceId(), wSpec);
wDef = new WindowDef(wSpec);
PartitionSpec pSpec = wSpec.getPartition();
OrderSpec oSpec = wSpec.getOrder();
WindowFrameSpec wFrameSpec = wSpec.getWindow();
PartitionDef pDef = translatePartition(qDef, iInfo, pSpec);
OrderDef oDef = translateOrder(qDef, inputDesc, iInfo, oSpec, pDef);
WindowFrameDef wdwDef = translateWindowFrame(qDef, wFrameSpec, iInfo);
wDef.setPartDef(pDef);
wDef.setOrderDef(oDef);
wDef.setWindow(wdwDef);
return wDef;
}
use of com.sap.hadoop.windowing.query2.definition.WindowFrameDef in project SQLWindowing by hbutani.
the class WindowSpecTranslation method translateWindowFrame.
static WindowFrameDef translateWindowFrame(QueryDef qDef, WindowFrameSpec wfSpec, InputInfo iInfo) throws WindowingException {
if (wfSpec == null) {
return null;
}
BoundarySpec s = wfSpec.getStart();
BoundarySpec e = wfSpec.getEnd();
WindowFrameDef wfDef = new WindowFrameDef(wfSpec);
wfDef.setStart(translateBoundary(qDef, s, iInfo));
wfDef.setEnd(translateBoundary(qDef, e, iInfo));
int cmp = s.compareTo(e);
if (cmp > 0) {
throw new WindowingException(sprintf("Window range invalid, start boundary is greater than end boundary: %s", wfSpec));
}
return wfDef;
}
use of com.sap.hadoop.windowing.query2.definition.WindowFrameDef in project SQLWindowing by hbutani.
the class QueryDefWalker method walk.
/**
* Visit the partition columns and order columns
* Visit the window frame definitions
* @param window
* @throws WindowingException
*/
protected void walk(WindowDef window) throws WindowingException {
if (window == null)
return;
PartitionDef pDef = window.getPartDef();
if (pDef != null) {
ArrayList<ColumnDef> cols = pDef.getColumns();
for (ColumnDef col : cols) {
visitor.visit(col);
}
visitor.visit(pDef);
}
OrderDef oDef = window.getOrderDef();
if (oDef != null) {
ArrayList<OrderColumnDef> ocols = oDef.getColumns();
for (OrderColumnDef ocol : ocols) {
visitor.visit(ocol);
}
visitor.visit(oDef);
}
WindowFrameDef wFrmDef = window.getWindow();
if (wFrmDef != null) {
walk(wFrmDef.getStart());
walk(wFrmDef.getEnd());
visitor.visit(wFrmDef);
}
visitor.visit(window);
}
Aggregations