@Override public ITuple makeCopy() { Tuple ret = new Tuple(this.info); for (int i = 0; i < this.values.length; ++i) { ret.values[i] = this.values[i]; } return ret; }
public void setMeasureValue(int idx, Object fieldValue) { fieldValue = convertWritableToJava(fieldValue); String dataType = getDataTypeName(idx); } else if ("decimal".equals(dataType)) { if (fieldValue instanceof BigDecimal) { fieldValue = normalizeDecimal((BigDecimal) fieldValue); } else if (fieldValue instanceof Number) { fieldValue = new BigDecimal(((Number) fieldValue).doubleValue()); fieldValue = (int) (millis / (1000 * 3600 * 24)); } else if ((!"varchar".equals(dataType) || !"char".equals(dataType)) && fieldValue instanceof String) { fieldValue = convertOptiqCellValue((String) fieldValue, dataType);
@Override public void fillTuple(Tuple tuple, int row) { tuple.setDimensionValue(extendedColumnInTupleIdx, value); } };
public void setDimensionValue(int idx, String fieldValue) { Object objectValue = convertOptiqCellValue(fieldValue, getDataTypeName(idx)); values[idx] = objectValue; }
case "date": return Integer.valueOf(dateToEpicDays(strValue));// Optiq expects Integer instead of Long. by honma case "datetime": case "timestamp": return Double.valueOf(strValue); case "decimal": return normalizeDecimal(new BigDecimal(strValue)); case "float": return Float.valueOf(strValue);
protected Collection<Tuple> generateTuple(int number, List<TblColRef> columns, int[] matches) { Collection<Tuple> tuples = new ArrayList<Tuple>(number); TupleInfo info = new TupleInfo(); for (int i = 0; i < columns.size(); i++) { TblColRef column = columns.get(i); info.setField(column.getName(), column, i); } int allMatches = 0; Random rand = new Random(); for (int i = 0; i < number; i++) { Tuple t = new Tuple(info); boolean isFullMatch = true; for (int k = 0; k < columns.size(); k++) { TblColRef column = columns.get(k); int index = Math.abs(rand.nextInt()) % SAMPLE_DATA[k].length; t.setDimensionValue(column.getName(), SAMPLE_DATA[k][index]); if (index == 0) { matches[k]++; } else { isFullMatch = false; } } if (isFullMatch) { allMatches++; } tuples.add(t); } matches[2] = allMatches; return tuples; }
@Override public void fillTuple(Tuple tuple, int row) { if (expectRow++ != row) throw new IllegalStateException(); Counter<ByteArray> counter = topNCounterIterator.next(); int offset = counter.getItem().offset(); for (int i = 0; i < dimensionEncodings.length; i++) { String colValue = dimensionEncodings[i].decode(counter.getItem().array(), offset, dimensionEncodings[i].getLengthOfEncoding()); tuple.setDimensionValue(literalTupleIdx[i], colValue); offset += dimensionEncodings[i].getLengthOfEncoding(); } tuple.setMeasureValue(numericTupleIdx, counter.getCount()); } };
@Override public boolean moveNext() { while (currentDict == null || !currentDict.hasNext()) { if (!iterator.hasNext()) { return false; } final Dictionary<String> dict = iterator.next(); currentDict = dict.enumeratorValues().iterator(); } current[dictColIdx] = Tuple.convertOptiqCellValue(currentDict.next(), dictCol.getDatatype()); return true; }
public void setDimensionValue(String fieldName, String fieldValue) { Object objectValue = convertOptiqCellValue(fieldValue, getDataType(fieldName)); setFieldObjectValue(fieldName, objectValue); }
/** The simple filling mode, one tuple per storage record. */ public void fillTupleSimply(Tuple tuple, int indexInTuple, Object measureValue) { tuple.setMeasureValue(indexInTuple, measureValue); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); for (String field : info.getAllFields()) { sb.append(field); sb.append("="); sb.append(getValue(field)); sb.append(","); } return sb.toString(); }
public static long getTs(ITuple row, TblColRef partitionCol) { //ts column type differentiate if (partitionCol.getDatatype().equals("date")) { return epicDaysToMillis(Integer.parseInt(row.getValue(partitionCol).toString())); } else { return Long.parseLong(row.getValue(partitionCol).toString()); } }
@Override public void fillTuple(Tuple tuple, int row) { if (expectRow++ != row) throw new IllegalStateException(); Counter<ByteArray> counter = topNCounterIterator.next(); int offset = counter.getItem().offset(); for (int i = 0; i < dimensionEncodings.length; i++) { String colValue = dimensionEncodings[i].decode(counter.getItem().array(), offset, dimensionEncodings[i].getLengthOfEncoding()); tuple.setDimensionValue(literalTupleIdx[i], colValue); offset += dimensionEncodings[i].getLengthOfEncoding(); } tuple.setMeasureValue(numericTupleIdx, counter.getCount()); } };
@Override public boolean moveNext() { boolean hasNext = iterator.hasNext(); if (hasNext) { String[] row = iterator.next(); for (int i = 0, n = colDescs.size(); i < n; i++) { ColumnDesc colDesc = colDescs.get(i); int colIdx = colDesc.getZeroBasedIndex(); if (colIdx >= 0) { current[i] = Tuple.convertOptiqCellValue(row[colIdx], colDesc.getUpgradedType().getName()); } else { current[i] = null; // fake column } } } return hasNext; }
public void setDimensionValue(int idx, String fieldValue) { Object objectValue = convertOptiqCellValue(fieldValue, getDataTypeName(idx)); values[idx] = objectValue; }
public void setMeasureValue(String fieldName, Object fieldValue) { setMeasureValue(info.getFieldIndex(fieldName), fieldValue); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); for (String field : info.getAllFields()) { sb.append(field); sb.append("="); sb.append(getValue(field)); sb.append(","); } return sb.toString(); }
case "date": return Integer.valueOf(dateToEpicDays(strValue));// Optiq expects Integer instead of Long. by honma case "datetime": case "timestamp": return Double.valueOf(strValue); case "decimal": return normalizeDecimal(new BigDecimal(strValue)); case "float": return Float.valueOf(strValue);
public static long getTs(ITuple row, TblColRef partitionCol) { //ts column type differentiate if (partitionCol.getDatatype().equals("date")) { return epicDaysToMillis(Integer.parseInt(row.getValue(partitionCol).toString())); } else { return Long.parseLong(row.getValue(partitionCol).toString()); } }
@Override public void fillDerivedColumns(Object[] gtValues, Tuple tuple) { // composite keys are split, so only copy [0] is enough, see CubeDesc.initDimensionColumns() tuple.setDimensionValue(derivedTupleIdx[0], CubeTupleConverter.toString(gtValues[hostTmpIdx[0]])); } };