This is an automated email from the ASF dual-hosted git repository. xvrl pushed a commit to branch transformspec-add-dims in repository https://gitbox.apache.org/repos/asf/druid.git
commit b154180065ea76e7b19e84d90d94ebf2a8cd5375 Author: Xavier Léauté <[email protected]> AuthorDate: Fri Mar 20 00:21:38 2020 -0700 support schemaless ingestion for transformed dimensions fixes #7952 --- .../firehose/IngestSegmentFirehoseFactoryTest.java | 2 +- .../apache/druid/segment/transform/Transformer.java | 19 ++++++++++++++++++- .../druid/segment/indexing/TransformSpecTest.java | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/firehose/IngestSegmentFirehoseFactoryTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/firehose/IngestSegmentFirehoseFactoryTest.java index 1a786ec..8a7824d 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/firehose/IngestSegmentFirehoseFactoryTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/firehose/IngestSegmentFirehoseFactoryTest.java @@ -509,7 +509,7 @@ public class IngestSegmentFirehoseFactoryTest skipped++; continue; } - Assert.assertArrayEquals(new String[]{DIM_NAME}, row.getDimensions().toArray()); + Assert.assertArrayEquals(new String[]{DIM_NAME, METRIC_FLOAT_NAME}, row.getDimensions().toArray()); Assert.assertArrayEquals(new String[]{DIM_VALUE}, row.getDimension(DIM_NAME).toArray()); Assert.assertEquals(METRIC_LONG_VALUE.longValue(), row.getMetric(METRIC_LONG_NAME).longValue()); Assert.assertEquals( diff --git a/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java b/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java index 48b0421..9d350cf 100644 --- a/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java +++ b/processing/src/main/java/org/apache/druid/segment/transform/Transformer.java @@ -19,6 +19,7 @@ package org.apache.druid.segment.transform; +import com.google.common.collect.Sets; import org.apache.druid.data.input.InputRow; import org.apache.druid.data.input.InputRowListPlusRawValues; import org.apache.druid.data.input.Row; @@ -37,6 +38,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; /** * @@ -138,17 +140,32 @@ public class Transformer { private final InputRow row; private final Map<String, RowFunction> transforms; + private final List<String> dimensions; public TransformedInputRow(final InputRow row, final Map<String, RowFunction> transforms) { this.row = row; this.transforms = transforms; + + Set<String> transformedDims = Sets.newHashSet(transforms.keySet()); + + for (String dim : row.getDimensions()) { + transformedDims.remove(dim); + } + + if (transformedDims.isEmpty()) { + this.dimensions = row.getDimensions(); + } else { + this.dimensions = new ArrayList<>(row.getDimensions().size() + transforms.size()); + dimensions.addAll(row.getDimensions()); + dimensions.addAll(transformedDims); + } } @Override public List<String> getDimensions() { - return row.getDimensions(); + return dimensions; } @Override diff --git a/server/src/test/java/org/apache/druid/segment/indexing/TransformSpecTest.java b/server/src/test/java/org/apache/druid/segment/indexing/TransformSpecTest.java index 8102a71..006a2f3 100644 --- a/server/src/test/java/org/apache/druid/segment/indexing/TransformSpecTest.java +++ b/server/src/test/java/org/apache/druid/segment/indexing/TransformSpecTest.java @@ -85,7 +85,7 @@ public class TransformSpecTest Assert.assertNotNull(row); Assert.assertEquals(DateTimes.of("2000-01-01").getMillis(), row.getTimestampFromEpoch()); Assert.assertEquals(DateTimes.of("2000-01-01"), row.getTimestamp()); - Assert.assertEquals(ImmutableList.of("f", "x", "y"), row.getDimensions()); + Assert.assertEquals(ImmutableList.of("f", "x", "y", "g", "h"), row.getDimensions()); Assert.assertEquals(ImmutableList.of("foo"), row.getDimension("x")); Assert.assertEquals(3.0, row.getMetric("b").doubleValue(), 0); Assert.assertEquals("foobar", row.getRaw("f")); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
