use of org.pentaho.di.core.row.value.ValueMetaInteger in project pentaho-kettle by pentaho.
the class ExecSQLRow method getResultRow.
public static final RowMetaAndData getResultRow(Result result, String upd, String ins, String del, String read) {
RowMetaAndData resultRow = new RowMetaAndData();
if (upd != null && upd.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(upd);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesUpdated()));
}
if (ins != null && ins.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(ins);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesOutput()));
}
if (del != null && del.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(del);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesDeleted()));
}
if (read != null && read.length() > 0) {
ValueMetaInterface meta = new ValueMetaInteger(read);
meta.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
resultRow.addValue(meta, new Long(result.getNrLinesRead()));
}
return resultRow;
}
use of org.pentaho.di.core.row.value.ValueMetaInteger in project pentaho-kettle by pentaho.
the class TextFileInputMeta method getFields.
@Override
public void getFields(RowMetaInterface row, String name, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore) throws KettleStepException {
if (!inputFiles.passingThruFields) {
// all incoming fields are not transmitted !
row.clear();
} else {
if (info != null) {
boolean found = false;
for (int i = 0; i < info.length && !found; i++) {
if (info[i] != null) {
row.mergeRowMeta(info[i], name);
found = true;
}
}
}
}
for (int i = 0; i < inputFields.length; i++) {
BaseFileField field = inputFields[i];
int type = field.getType();
if (type == ValueMetaInterface.TYPE_NONE) {
type = ValueMetaInterface.TYPE_STRING;
}
try {
ValueMetaInterface v = ValueMetaFactory.createValueMeta(field.getName(), type);
v.setLength(field.getLength());
v.setPrecision(field.getPrecision());
v.setOrigin(name);
v.setConversionMask(field.getFormat());
v.setDecimalSymbol(field.getDecimalSymbol());
v.setGroupingSymbol(field.getGroupSymbol());
v.setCurrencySymbol(field.getCurrencySymbol());
v.setDateFormatLenient(content.dateFormatLenient);
v.setDateFormatLocale(content.dateFormatLocale);
v.setTrimType(field.getTrimType());
row.addValueMeta(v);
} catch (Exception e) {
throw new KettleStepException(e);
}
}
if (errorHandling.errorIgnored) {
if (errorCountField != null && errorCountField.length() > 0) {
ValueMetaInterface v = new ValueMetaInteger(errorCountField);
v.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
v.setOrigin(name);
row.addValueMeta(v);
}
if (errorFieldsField != null && errorFieldsField.length() > 0) {
ValueMetaInterface v = new ValueMetaString(errorFieldsField);
v.setOrigin(name);
row.addValueMeta(v);
}
if (errorTextField != null && errorTextField.length() > 0) {
ValueMetaInterface v = new ValueMetaString(errorTextField);
v.setOrigin(name);
row.addValueMeta(v);
}
}
if (content.includeFilename) {
ValueMetaInterface v = new ValueMetaString(content.filenameField);
v.setLength(100);
v.setOrigin(name);
row.addValueMeta(v);
}
if (content.includeRowNumber) {
ValueMetaInterface v = new ValueMetaInteger(content.rowNumberField);
v.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.shortFilenameField)) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(additionalOutputFields.shortFilenameField));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.extensionField)) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(additionalOutputFields.extensionField));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.pathField)) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(additionalOutputFields.pathField));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.sizeField)) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(additionalOutputFields.sizeField));
v.setOrigin(name);
v.setLength(9);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.hiddenField)) {
ValueMetaInterface v = new ValueMetaBoolean(space.environmentSubstitute(additionalOutputFields.hiddenField));
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.lastModificationField)) {
ValueMetaInterface v = new ValueMetaDate(space.environmentSubstitute(additionalOutputFields.lastModificationField));
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.uriField)) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(additionalOutputFields.uriField));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (StringUtils.isNotBlank(additionalOutputFields.rootUriField)) {
ValueMetaInterface v = new ValueMetaString(additionalOutputFields.rootUriField);
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
}
use of org.pentaho.di.core.row.value.ValueMetaInteger in project pentaho-kettle by pentaho.
the class DimensionLookup method dimInsert.
/**
* This inserts new record into dimension Optionally, if the entry already exists, update date range from previous
* version of the entry.
*/
public Long dimInsert(RowMetaInterface inputRowMeta, Object[] row, Long technicalKey, boolean newEntry, Long versionNr, Date dateFrom, Date dateTo) throws KettleException {
DatabaseMeta databaseMeta = meta.getDatabaseMeta();
if (data.prepStatementInsert == null && data.prepStatementUpdate == null) {
// first time: construct prepared statement
RowMetaInterface insertRowMeta = new RowMeta();
/*
* Construct the SQL statement...
*
* INSERT INTO d_customer(keyfield, versionfield, datefrom, dateto, key[], fieldlookup[], last_updated,
* last_inserted, last_version) VALUES (val_key ,val_version , val_datfrom, val_datto, keynrs[], fieldnrs[],
* last_updated, last_inserted, last_version) ;
*/
String sql = "INSERT INTO " + data.schemaTable + "( ";
if (!isAutoIncrement()) {
// NO
sql += databaseMeta.quoteField(meta.getKeyField()) + ", ";
// AUTOINCREMENT
// the first return value
insertRowMeta.addValueMeta(data.outputRowMeta.getValueMeta(inputRowMeta.size()));
// after the input
} else {
if (databaseMeta.needsPlaceHolder()) {
// placeholder on informix!
sql += "0, ";
}
}
sql += databaseMeta.quoteField(meta.getVersionField()) + ", " + databaseMeta.quoteField(meta.getDateFrom()) + ", " + databaseMeta.quoteField(meta.getDateTo());
insertRowMeta.addValueMeta(new ValueMetaInteger(meta.getVersionField()));
insertRowMeta.addValueMeta(new ValueMetaDate(meta.getDateFrom()));
insertRowMeta.addValueMeta(new ValueMetaDate(meta.getDateTo()));
for (int i = 0; i < meta.getKeyLookup().length; i++) {
sql += ", " + databaseMeta.quoteField(meta.getKeyLookup()[i]);
insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
}
for (int i = 0; i < meta.getFieldLookup().length; i++) {
//
if (!DimensionLookupMeta.isUpdateTypeWithoutArgument(meta.isUpdate(), meta.getFieldUpdate()[i])) {
sql += ", " + databaseMeta.quoteField(meta.getFieldLookup()[i]);
insertRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.fieldnrs[i]));
}
}
//
for (int i = 0; i < meta.getFieldUpdate().length; i++) {
ValueMetaInterface valueMeta = null;
switch(meta.getFieldUpdate()[i]) {
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSUP:
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSERTED:
valueMeta = new ValueMetaDate(meta.getFieldLookup()[i]);
break;
case DimensionLookupMeta.TYPE_UPDATE_LAST_VERSION:
valueMeta = new ValueMetaBoolean(meta.getFieldLookup()[i]);
break;
default:
break;
}
if (valueMeta != null) {
sql += ", " + databaseMeta.quoteField(valueMeta.getName());
insertRowMeta.addValueMeta(valueMeta);
}
}
sql += ") VALUES (";
if (!isAutoIncrement()) {
sql += "?, ";
}
sql += "?, ?, ?";
for (int i = 0; i < data.keynrs.length; i++) {
sql += ", ?";
}
for (int i = 0; i < meta.getFieldLookup().length; i++) {
//
if (!DimensionLookupMeta.isUpdateTypeWithoutArgument(meta.isUpdate(), meta.getFieldUpdate()[i])) {
sql += ", ?";
}
}
//
for (int i = 0; i < meta.getFieldUpdate().length; i++) {
switch(meta.getFieldUpdate()[i]) {
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSUP:
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSERTED:
case DimensionLookupMeta.TYPE_UPDATE_LAST_VERSION:
sql += ", ?";
break;
default:
break;
}
}
sql += " )";
try {
if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
logDetailed("SQL w/ return keys=[" + sql + "]");
data.prepStatementInsert = data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql), Statement.RETURN_GENERATED_KEYS);
} else {
logDetailed("SQL=[" + sql + "]");
data.prepStatementInsert = data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql));
}
// pstmt=con.prepareStatement(sql, new String[] { "klant_tk" } );
} catch (SQLException ex) {
throw new KettleDatabaseException("Unable to prepare dimension insert :" + Const.CR + sql, ex);
}
/*
* UPDATE d_customer SET dateto = val_datnow, last_updated = <now> last_version = false WHERE keylookup[] =
* keynrs[] AND versionfield = val_version - 1 ;
*/
RowMetaInterface updateRowMeta = new RowMeta();
String sql_upd = "UPDATE " + data.schemaTable + Const.CR;
// The end of the date range
//
sql_upd += "SET " + databaseMeta.quoteField(meta.getDateTo()) + " = ?" + Const.CR;
updateRowMeta.addValueMeta(new ValueMetaDate(meta.getDateTo()));
//
for (int i = 0; i < meta.getFieldUpdate().length; i++) {
ValueMetaInterface valueMeta = null;
switch(meta.getFieldUpdate()[i]) {
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSUP:
case DimensionLookupMeta.TYPE_UPDATE_DATE_UPDATED:
valueMeta = new ValueMetaDate(meta.getFieldLookup()[i]);
break;
case DimensionLookupMeta.TYPE_UPDATE_LAST_VERSION:
valueMeta = new ValueMetaBoolean(meta.getFieldLookup()[i]);
break;
default:
break;
}
if (valueMeta != null) {
sql_upd += ", " + databaseMeta.quoteField(valueMeta.getName()) + " = ?" + Const.CR;
updateRowMeta.addValueMeta(valueMeta);
}
}
sql_upd += "WHERE ";
for (int i = 0; i < meta.getKeyLookup().length; i++) {
if (i > 0) {
sql_upd += "AND ";
}
sql_upd += databaseMeta.quoteField(meta.getKeyLookup()[i]) + " = ?" + Const.CR;
updateRowMeta.addValueMeta(inputRowMeta.getValueMeta(data.keynrs[i]));
}
sql_upd += "AND " + databaseMeta.quoteField(meta.getVersionField()) + " = ? ";
updateRowMeta.addValueMeta(new ValueMetaInteger(meta.getVersionField()));
try {
logDetailed("Preparing update: " + Const.CR + sql_upd + Const.CR);
data.prepStatementUpdate = data.db.getConnection().prepareStatement(databaseMeta.stripCR(sql_upd));
} catch (SQLException ex) {
throw new KettleDatabaseException("Unable to prepare dimension update :" + Const.CR + sql_upd, ex);
}
data.insertRowMeta = insertRowMeta;
data.updateRowMeta = updateRowMeta;
}
Object[] insertRow = new Object[data.insertRowMeta.size()];
int insertIndex = 0;
if (!isAutoIncrement()) {
insertRow[insertIndex++] = technicalKey;
}
// Caller is responsible for setting proper version number depending
// on if newEntry == true
insertRow[insertIndex++] = versionNr;
switch(data.startDateChoice) {
case DimensionLookupMeta.START_DATE_ALTERNATIVE_NONE:
insertRow[insertIndex++] = dateFrom;
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_SYSDATE:
// use the time the step execution begins as the date from (passed in as dateFrom).
// before, the current system time was used. this caused an exclusion of the row in the
// lookup portion of the step that uses this 'valueDate' and not the current time.
// the result was multiple inserts for what should have been 1 [PDI-4317]
insertRow[insertIndex++] = dateFrom;
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_START_OF_TRANS:
insertRow[insertIndex++] = getTrans().getStartDate();
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_NULL:
insertRow[insertIndex++] = null;
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_COLUMN_VALUE:
insertRow[insertIndex++] = inputRowMeta.getDate(row, data.startDateFieldIndex);
break;
default:
throw new KettleStepException(BaseMessages.getString(PKG, "DimensionLookup.Exception.IllegalStartDateSelection", Integer.toString(data.startDateChoice)));
}
insertRow[insertIndex++] = dateTo;
for (int i = 0; i < data.keynrs.length; i++) {
insertRow[insertIndex++] = row[data.keynrs[i]];
}
for (int i = 0; i < data.fieldnrs.length; i++) {
if (data.fieldnrs[i] >= 0) {
// Ignore last_version, last_updated, etc. These are handled below...
//
insertRow[insertIndex++] = row[data.fieldnrs[i]];
}
}
//
for (int i = 0; i < meta.getFieldUpdate().length; i++) {
switch(meta.getFieldUpdate()[i]) {
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSUP:
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSERTED:
insertRow[insertIndex++] = new Date();
break;
case DimensionLookupMeta.TYPE_UPDATE_LAST_VERSION:
insertRow[insertIndex++] = Boolean.TRUE;
// Always the last version on insert.
break;
default:
break;
}
}
if (isDebug()) {
logDebug("rins, size=" + data.insertRowMeta.size() + ", values=" + data.insertRowMeta.getString(insertRow));
}
// INSERT NEW VALUE!
data.db.setValues(data.insertRowMeta, insertRow, data.prepStatementInsert);
data.db.insertRow(data.prepStatementInsert);
if (isDebug()) {
logDebug("Row inserted!");
}
if (technicalKey == null && databaseMeta.supportsAutoGeneratedKeys()) {
try {
RowMetaAndData keys = data.db.getGeneratedKeys(data.prepStatementInsert);
if (keys.getRowMeta().size() > 0) {
technicalKey = keys.getRowMeta().getInteger(keys.getData(), 0);
} else {
throw new KettleDatabaseException("Unable to retrieve value of auto-generated technical key : no value found!");
}
} catch (Exception e) {
throw new KettleDatabaseException("Unable to retrieve value of auto-generated technical key : unexpected error: ", e);
}
}
if (!newEntry) {
// we have to update the previous version in the dimension!
/*
* UPDATE d_customer SET dateto = val_datfrom , last_updated = <now> , last_version = false WHERE keylookup[] =
* keynrs[] AND versionfield = val_version - 1 ;
*/
Object[] updateRow = new Object[data.updateRowMeta.size()];
int updateIndex = 0;
switch(data.startDateChoice) {
case DimensionLookupMeta.START_DATE_ALTERNATIVE_NONE:
updateRow[updateIndex++] = dateFrom;
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_SYSDATE:
updateRow[updateIndex++] = new Date();
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_START_OF_TRANS:
updateRow[updateIndex++] = getTrans().getCurrentDate();
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_NULL:
updateRow[updateIndex++] = null;
break;
case DimensionLookupMeta.START_DATE_ALTERNATIVE_COLUMN_VALUE:
updateRow[updateIndex++] = inputRowMeta.getDate(row, data.startDateFieldIndex);
break;
default:
throw new KettleStepException(BaseMessages.getString("DimensionLookup.Exception.IllegalStartDateSelection", Integer.toString(data.startDateChoice)));
}
//
for (int i = 0; i < meta.getFieldUpdate().length; i++) {
switch(meta.getFieldUpdate()[i]) {
case DimensionLookupMeta.TYPE_UPDATE_DATE_INSUP:
updateRow[updateIndex++] = new Date();
break;
case DimensionLookupMeta.TYPE_UPDATE_LAST_VERSION:
updateRow[updateIndex++] = Boolean.FALSE;
// Never the last version on this update
break;
case DimensionLookupMeta.TYPE_UPDATE_DATE_UPDATED:
updateRow[updateIndex++] = new Date();
break;
default:
break;
}
}
for (int i = 0; i < data.keynrs.length; i++) {
updateRow[updateIndex++] = row[data.keynrs[i]];
}
updateRow[updateIndex++] = versionNr - 1;
if (isRowLevel()) {
logRowlevel("UPDATE using rupd=" + data.updateRowMeta.getString(updateRow));
}
// UPDATE VALUES
// set values for update
//
data.db.setValues(data.updateRowMeta, updateRow, data.prepStatementUpdate);
if (isDebug()) {
logDebug("Values set for update (" + data.updateRowMeta.size() + ")");
}
// do the actual update
data.db.insertRow(data.prepStatementUpdate);
if (isDebug()) {
logDebug("Row updated!");
}
}
return technicalKey;
}
use of org.pentaho.di.core.row.value.ValueMetaInteger in project pentaho-kettle by pentaho.
the class ExcelInputMeta method getFields.
@Override
public void getFields(RowMetaInterface row, String name, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore) throws KettleStepException {
for (int i = 0; i < field.length; i++) {
int type = field[i].getType();
if (type == ValueMetaInterface.TYPE_NONE) {
type = ValueMetaInterface.TYPE_STRING;
}
try {
ValueMetaInterface v = ValueMetaFactory.createValueMeta(field[i].getName(), type);
v.setLength(field[i].getLength());
v.setPrecision(field[i].getPrecision());
v.setOrigin(name);
v.setConversionMask(field[i].getFormat());
v.setDecimalSymbol(field[i].getDecimalSymbol());
v.setGroupingSymbol(field[i].getGroupSymbol());
v.setCurrencySymbol(field[i].getCurrencySymbol());
row.addValueMeta(v);
} catch (Exception e) {
throw new KettleStepException(e);
}
}
if (fileField != null && fileField.length() > 0) {
ValueMetaInterface v = new ValueMetaString(fileField);
v.setLength(250);
v.setPrecision(-1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (sheetField != null && sheetField.length() > 0) {
ValueMetaInterface v = new ValueMetaString(sheetField);
v.setLength(250);
v.setPrecision(-1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (sheetRowNumberField != null && sheetRowNumberField.length() > 0) {
ValueMetaInterface v = new ValueMetaInteger(sheetRowNumberField);
v.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
v.setOrigin(name);
row.addValueMeta(v);
}
if (rowNumberField != null && rowNumberField.length() > 0) {
ValueMetaInterface v = new ValueMetaInteger(rowNumberField);
v.setLength(ValueMetaInterface.DEFAULT_INTEGER_LENGTH, 0);
v.setOrigin(name);
row.addValueMeta(v);
}
if (getShortFileNameField() != null && getShortFileNameField().length() > 0) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(getShortFileNameField()));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (getExtensionField() != null && getExtensionField().length() > 0) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(getExtensionField()));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (getPathField() != null && getPathField().length() > 0) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(getPathField()));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (getSizeField() != null && getSizeField().length() > 0) {
ValueMetaInterface v = new ValueMetaInteger(space.environmentSubstitute(getSizeField()));
v.setOrigin(name);
v.setLength(9);
row.addValueMeta(v);
}
if (isHiddenField() != null && isHiddenField().length() > 0) {
ValueMetaInterface v = new ValueMetaBoolean(space.environmentSubstitute(isHiddenField()));
v.setOrigin(name);
row.addValueMeta(v);
}
if (getLastModificationDateField() != null && getLastModificationDateField().length() > 0) {
ValueMetaInterface v = new ValueMetaDate(space.environmentSubstitute(getLastModificationDateField()));
v.setOrigin(name);
row.addValueMeta(v);
}
if (getUriField() != null && getUriField().length() > 0) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(getUriField()));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
if (getRootUriField() != null && getRootUriField().length() > 0) {
ValueMetaInterface v = new ValueMetaString(space.environmentSubstitute(getRootUriField()));
v.setLength(100, -1);
v.setOrigin(name);
row.addValueMeta(v);
}
}
use of org.pentaho.di.core.row.value.ValueMetaInteger in project pentaho-kettle by pentaho.
the class MemoryGroupBy method getAggregateResult.
/**
* Used for junits in MemoryGroupByAggregationNullsTest
*
* @param aggregate
* @return
* @throws KettleValueException
*/
Object[] getAggregateResult(Aggregate aggregate) throws KettleValueException {
Object[] result = new Object[data.subjectnrs.length];
if (data.subjectnrs != null) {
for (int i = 0; i < data.subjectnrs.length; i++) {
Object ag = aggregate.agg[i];
switch(meta.getAggregateType()[i]) {
case MemoryGroupByMeta.TYPE_GROUP_SUM:
break;
case MemoryGroupByMeta.TYPE_GROUP_AVERAGE:
ag = ValueDataUtil.divide(data.aggMeta.getValueMeta(i), ag, new ValueMetaInteger("c"), aggregate.counts[i]);
break;
case MemoryGroupByMeta.TYPE_GROUP_MEDIAN:
case MemoryGroupByMeta.TYPE_GROUP_PERCENTILE:
double percentile = 50.0;
if (meta.getAggregateType()[i] == MemoryGroupByMeta.TYPE_GROUP_PERCENTILE) {
percentile = Double.parseDouble(meta.getValueField()[i]);
}
@SuppressWarnings("unchecked") List<Double> valuesList = (List<Double>) aggregate.agg[i];
double[] values = new double[valuesList.size()];
for (int v = 0; v < values.length; v++) {
values[v] = valuesList.get(v);
}
ag = new Percentile().evaluate(values, percentile);
break;
case MemoryGroupByMeta.TYPE_GROUP_COUNT_ANY:
case MemoryGroupByMeta.TYPE_GROUP_COUNT_ALL:
case MemoryGroupByMeta.TYPE_GROUP_COUNT_DISTINCT:
ag = aggregate.counts[i];
break;
case MemoryGroupByMeta.TYPE_GROUP_MIN:
break;
case MemoryGroupByMeta.TYPE_GROUP_MAX:
break;
case MemoryGroupByMeta.TYPE_GROUP_STANDARD_DEVIATION:
double sum = (Double) ag / aggregate.counts[i];
ag = Double.valueOf(Math.sqrt(sum));
break;
case MemoryGroupByMeta.TYPE_GROUP_CONCAT_COMMA:
case MemoryGroupByMeta.TYPE_GROUP_CONCAT_STRING:
ag = ((StringBuilder) ag).toString();
break;
default:
break;
}
if (ag == null && allNullsAreZero) {
// PDI-11530 seems all rows for min function was nulls...
ValueMetaInterface vm = data.aggMeta.getValueMeta(i);
ag = ValueDataUtil.getZeroForValueMetaType(vm);
}
result[i] = ag;
}
}
return result;
}
Aggregations