public MeasureCodec(MeasureDesc... measureDescs) { String[] dataTypes = new String[measureDescs.length]; for (int i = 0; i < dataTypes.length; i++) { dataTypes[i] = measureDescs[i].getFunction().getReturnType(); } init(dataTypes); }
DataType returnType = DataType.getType(measureDesc.getFunction().getReturnType()); DataType newReturnType = new DataType(returnType.getName(), returnType.getPrecision(), keyLength); measureDesc.getFunction().setReturnType(newReturnType.toString());
return; if (StringUtils.isEmpty(func.getReturnType())) { context.addResult(ResultLevel.ERROR, "Must define return type for function " + func.getExpression() + " in " + measure.getName()); return;
assertEquals(lm.getName(), im.getName()); assertEquals(lm.getFunction().getFullExpression(), im.getFunction().getFullExpression()); assertEquals(lm.getFunction().getReturnType(), im.getFunction().getReturnType());
public MeasureCodec(MeasureDesc... measureDescs) { String[] dataTypes = new String[measureDescs.length]; for (int i = 0; i < dataTypes.length; i++) { dataTypes[i] = measureDescs[i].getFunction().getReturnType(); } init(dataTypes); }
public MeasureAggregators(MeasureDesc... measureDescs) { descs = measureDescs; aggs = new MeasureAggregator[descs.length]; Map<String, Integer> measureIndexMap = new HashMap<String, Integer>(); for (int i = 0; i < descs.length; i++) { FunctionDesc func = descs[i].getFunction(); aggs[i] = MeasureAggregator.create(func.getExpression(), func.getReturnType()); measureIndexMap.put(descs[i].getName(), i); } // fill back dependent aggregator for (int i = 0; i < descs.length; i++) { String depMsrRef = descs[i].getDependentMeasureRef(); if (depMsrRef != null) { int index = measureIndexMap.get(depMsrRef); aggs[i].setDependentAggregator(aggs[index]); } } }
private static HCol buildHCol(HBaseColumnDesc desc) { byte[] family = Bytes.toBytes(desc.getColumnFamilyName()); byte[] qualifier = Bytes.toBytes(desc.getQualifier()); MeasureDesc[] measures = desc.getMeasures(); String[] funcNames = new String[measures.length]; String[] dataTypes = new String[measures.length]; for (int i = 0; i < measures.length; i++) { funcNames[i] = measures[i].getFunction().getExpression(); dataTypes[i] = measures[i].getFunction().getReturnType(); } return new HCol(family, qualifier, funcNames, dataTypes); }
private void initMeasureColumns(Map<String, TableDesc> tables) { if (measures == null || measures.isEmpty()) { return; } TableDesc factTable = tables.get(getFactTable()); for (MeasureDesc m : measures) { m.setName(m.getName().toUpperCase()); if (m.getDependentMeasureRef() != null) { m.setDependentMeasureRef(m.getDependentMeasureRef().toUpperCase()); } FunctionDesc f = m.getFunction(); f.setExpression(f.getExpression().toUpperCase()); f.setReturnDataType(DataType.getInstance(f.getReturnType())); ParameterDesc p = f.getParameter(); p.normalizeColumnValue(); if (p.isColumnType()) { ArrayList<TblColRef> colRefs = Lists.newArrayList(); for (String cName : p.getValue().split("\\s*,\\s*")) { ColumnDesc sourceColumn = factTable.findColumnByName(cName); TblColRef colRef = new TblColRef(sourceColumn); colRefs.add(colRef); allColumns.add(colRef); } if (colRefs.isEmpty() == false) p.setColRefs(colRefs); } } }
f.setReturnDataType(DataType.getInstance(f.getReturnType()));
return; if (StringUtils.isEmpty(func.getReturnType())) { context.addResult(ResultLevel.ERROR, "Must define return type for function " + func.getExpression() + " in " + measure.getName()); return;
public static EndpointAggregators fromFunctions(TableRecordInfo tableInfo, List<FunctionDesc> metrics) { String[] funcNames = new String[metrics.size()]; String[] dataTypes = new String[metrics.size()]; MetricInfo[] metricInfos = new MetricInfo[metrics.size()]; for (int i = 0; i < metrics.size(); i++) { FunctionDesc functionDesc = metrics.get(i); //TODO: what if funcionDesc's type is different from tablDesc? cause scale difference funcNames[i] = functionDesc.getExpression(); dataTypes[i] = functionDesc.getReturnType(); if (functionDesc.isCount()) { metricInfos[i] = new MetricInfo(MetricType.Count); } else if (functionDesc.isDimensionAsMetric()) { metricInfos[i] = new MetricInfo(MetricType.DimensionAsMetric); } else { int index = tableInfo.findFactTableColumn(functionDesc.getParameter().getValue()); if (index < 0) { throw new IllegalStateException("Column " + functionDesc.getParameter().getValue() + " is not found in II"); } if (functionDesc.isCountDistinct()) { metricInfos[i] = new MetricInfo(MetricType.DistinctCount, index, functionDesc.getReturnDataType().getPrecision()); } else { metricInfos[i] = new MetricInfo(MetricType.Normal, index); } } } return new EndpointAggregators(funcNames, dataTypes, metricInfos, tableInfo.getDigest()); }
if (functionDesc.isCount()) { functionDesc.setReturnType("bigint"); functionDesc.setReturnDataType(DataType.getInstance(functionDesc.getReturnType())); } else { boolean updated = false; } else { functionDesc.setReturnType(column.getColumn().getType().toString()); functionDesc.setReturnDataType(DataType.getInstance(functionDesc.getReturnType()));
public MeasureCodec(MeasureDesc... measureDescs) { String[] dataTypes = new String[measureDescs.length]; for (int i = 0; i < dataTypes.length; i++) { dataTypes[i] = measureDescs[i].getFunction().getReturnType(); } init(dataTypes); }
public MeasureCodec(MeasureDesc... measureDescs) { String[] dataTypes = new String[measureDescs.length]; for (int i = 0; i < dataTypes.length; i++) { dataTypes[i] = measureDescs[i].getFunction().getReturnType(); } init(dataTypes); }
return; if (StringUtils.isEmpty(func.getReturnType())) { context.addResult(ResultLevel.ERROR, "Must define return type for function " + func.getExpression() + " in " + measure.getName()); return;
DataType returnType = DataType.getType(measureDesc.getFunction().getReturnType()); DataType newReturnType = new DataType(returnType.getName(), returnType.getPrecision(), keyLength); measureDesc.getFunction().setReturnType(newReturnType.toString());
return; if (StringUtils.isEmpty(func.getReturnType())) { context.addResult(ResultLevel.ERROR, "Must define return type for function " + func.getExpression() + " in " + measure.getName()); return;