define name of value column
The name of the column containing the value is now part of the csv settings. This allows us to use different names than "duration".
This commit is contained in:
@@ -19,36 +19,40 @@ public class CsvReaderSettings {
|
||||
|
||||
private String timeColumn;
|
||||
|
||||
private String valueColumn;
|
||||
|
||||
private byte comment = '#';
|
||||
|
||||
public CsvReaderSettings() {
|
||||
this("@timestamp", (byte) ',', Collections.emptyList());
|
||||
this("@timestamp", "duration", (byte) ',', Collections.emptyList());
|
||||
}
|
||||
|
||||
private CsvReaderSettings(final String timeColumn, final byte separator, final Collection<String> ignoreColumns) {
|
||||
private CsvReaderSettings(final String timeColumn, final String valueColumn, final byte separator,
|
||||
final Collection<String> ignoreColumns) {
|
||||
|
||||
this.timeColumn = timeColumn;
|
||||
this.valueColumn = valueColumn;
|
||||
this.separator = separator;
|
||||
this.ignoreColumnNames.addAll(ignoreColumns);
|
||||
}
|
||||
|
||||
public static CsvReaderSettings create(final String timeColumn, final byte separator,
|
||||
public static CsvReaderSettings create(final String timeColumn, final String valueColumn, final byte separator,
|
||||
final String... ignoreColumnNames) {
|
||||
return new CsvReaderSettings(timeColumn, separator, List.of(ignoreColumnNames));
|
||||
return new CsvReaderSettings(timeColumn, valueColumn, separator, List.of(ignoreColumnNames));
|
||||
}
|
||||
|
||||
public static CsvReaderSettings create(final String timeColumn, final char separator,
|
||||
public static CsvReaderSettings create(final String timeColumn, final String valueColumn, final char separator,
|
||||
final String... ignoreColumnNames) {
|
||||
return CsvReaderSettings.create(timeColumn, separator, List.of(ignoreColumnNames));
|
||||
return CsvReaderSettings.create(timeColumn, valueColumn, separator, List.of(ignoreColumnNames));
|
||||
}
|
||||
|
||||
public static CsvReaderSettings create(final String timeColumn, final char separator,
|
||||
public static CsvReaderSettings create(final String timeColumn, final String valueColumn, final char separator,
|
||||
final Collection<String> ignoreColumnNames) {
|
||||
Preconditions.checkTrue(separator == (byte) separator,
|
||||
"Only separators that fulfill separator == (byte)separator are supported. "
|
||||
+ "This restriction is because the parsing algorithm skips the overhead of "
|
||||
+ "translating bytes to characters.");
|
||||
return new CsvReaderSettings(timeColumn, (byte) separator, ignoreColumnNames);
|
||||
return new CsvReaderSettings(timeColumn, valueColumn, (byte) separator, ignoreColumnNames);
|
||||
}
|
||||
|
||||
public String getTimeColumn() {
|
||||
@@ -59,6 +63,14 @@ public class CsvReaderSettings {
|
||||
this.timeColumn = timeColumn;
|
||||
}
|
||||
|
||||
public String getValueColumn() {
|
||||
return valueColumn;
|
||||
}
|
||||
|
||||
public void setValueColumn(final String valueColumn) {
|
||||
this.valueColumn = valueColumn;
|
||||
}
|
||||
|
||||
public byte getSeparator() {
|
||||
return separator;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ class CsvToEntryTransformer {
|
||||
int[] columns = null;
|
||||
final byte[] buffer = new byte[4096 * 16];
|
||||
final int keyTimestamp = Tags.STRING_COMPRESSOR.put(settings.getTimeColumn());
|
||||
final int keyDuration = Tags.STRING_COMPRESSOR.put("duration");
|
||||
final int keyDuration = Tags.STRING_COMPRESSOR.put(settings.getValueColumn());
|
||||
final FastISODateParser dateParser = new FastISODateParser();
|
||||
|
||||
final Tags additionalTags = initAditionalTags();
|
||||
|
||||
@@ -67,7 +67,7 @@ public final class IngestionHandler implements Callable<Void> {
|
||||
} else {
|
||||
in.reset();
|
||||
final CsvToEntryTransformer csvTransformer = new CsvToEntryTransformer(queue,
|
||||
CsvReaderSettings.create("@timestamp", ','));
|
||||
CsvReaderSettings.create("@timestamp", "duration", ','));
|
||||
csvTransformer.readCSV(in);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user