/** * compute the column ordinal as per data is stored * * @param segmentProperties * @param column * @return */ public static int getColumnOrdinal(SegmentProperties segmentProperties, CarbonColumn column) { if (column.isMeasure()) { // as measures are stored at the end after all dimensions and complex dimensions hence add // the last dimension ordinal to measure ordinal. Segment properties will store min max // length in one array on the order normal dimension, complex dimension and then measure return segmentProperties.getLastDimensionColOrdinal() + column.getOrdinal(); } else { return column.getOrdinal(); } }
protected void addValue2BloomIndex(int indexColIdx, Object value) { byte[] indexValue; // convert measure to bytes // convert non-dict dimensions to simple bytes without length // convert internal-dict dimensions to simple bytes without any encode if (indexColumns.get(indexColIdx).isMeasure()) { // NULL value of all measures are already processed in `ColumnPage.getData` // or `RawBytesReadSupport.readRow` with actual data type // Carbon stores boolean as byte. Here we convert it for `getValueAsBytes` if (indexColumns.get(indexColIdx).getDataType().equals(DataTypes.BOOLEAN)) { value = BooleanConvert.boolean2Byte((Boolean)value); } indexValue = CarbonUtil.getValueAsBytes(indexColumns.get(indexColIdx).getDataType(), value); } else { if (indexColumns.get(indexColIdx).hasEncoding(Encoding.DICTIONARY) || indexColumns.get(indexColIdx).hasEncoding(Encoding.DIRECT_DICTIONARY)) { indexValue = convertDictionaryValue(indexColIdx, value); } else { indexValue = convertNonDictionaryValue(indexColIdx, value); } } if (indexValue.length == 0) { indexValue = CarbonCommonConstants.MEMBER_DEFAULT_VAL_ARRAY; } indexBloomFilters.get(indexColIdx).add(new Key(indexValue)); }
public void setDataFields(DataField[] dataFields) { this.dataFields = dataFields; // set counts for each column category for (DataField dataField : dataFields) { CarbonColumn column = dataField.getColumn(); if (column.isDimension()) { dimensionCount++; if (column.isComplex()) { if (!dataField.hasDictionaryEncoding()) { complexNonDictionaryColumnCount++; } else { complexDictionaryColumnCount++; } } else if (!dataField.hasDictionaryEncoding()) { noDictionaryCount++; } } if (column.isMeasure()) { measureCount++; } } }
if (carbonColumn.hasEncoding(Encoding.IMPLICIT)) { return new ConditionalFilterResolverImpl(expression, isExpressionResolve, true, currentCondExpression.getColumnList().get(0).getCarbonColumn().isMeasure()); if (column.isMeasure()) { if (FilterUtil.checkIfExpressionContainsColumn(currentCondExpression.getLeft()) && FilterUtil.checkIfExpressionContainsColumn(currentCondExpression.getRight()) || ( currentCondExpression.getColumnList().get(0).getCarbonColumn().isMeasure()); currentCondExpression.getColumnList().get(0).getCarbonColumn().isMeasure()); column = currentCondExpression.getColumnList().get(0).getCarbonColumn(); if (currentCondExpression.isSingleColumn() && ! column.getDataType().isComplexType()) { if (column.isMeasure()) { if (FilterUtil.checkIfExpressionContainsColumn(currentCondExpression.getLeft()) && FilterUtil.checkIfExpressionContainsColumn(currentCondExpression.getRight()) || ( .hasEncoding(Encoding.DICTIONARY) && !condExpression.getColumnList().get(0) .getCarbonColumn().hasEncoding(Encoding.DIRECT_DICTIONARY)) || (condExpression.getColumnList().get(0).getCarbonColumn().isMeasure())) { return new ConditionalFilterResolverImpl(expression, true, true, condExpression.getColumnList().get(0).getCarbonColumn().isMeasure());
if (carbonColumn.isMeasure()) {
org.apache.carbondata.core.metadata.datatype.DataTypes.INT), true, null); } else if (carbonColumn.isMeasure()) { DataType dataType = carbonColumn.getDataType(); if (dataType == org.apache.carbondata.core.metadata.datatype.DataTypes.BOOLEAN