You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ne...@apache.org on 2020/05/12 17:21:23 UTC
[incubator-pinot] branch master updated: Schema method to fetch
field spec of time column (#5370)
This is an automated email from the ASF dual-hosted git repository.
nehapawar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 7562d4d Schema method to fetch field spec of time column (#5370)
7562d4d is described below
commit 7562d4db4f9b95f35a86e1d5566dcab2e91378e2
Author: Neha Pawar <ne...@gmail.com>
AuthorDate: Tue May 12 10:21:12 2020 -0700
Schema method to fetch field spec of time column (#5370)
Introducing method in Schema.getFieldSpecForTimeColumn(String timeColumnName). If, FieldType for time columnName is
DATE_TIME - return the DateTimeFieldSpec
TIME - convert to DateTimeFieldSpec before returning
---
.../org/apache/pinot/common/data/SchemaTest.java | 47 ++++++++++++++++++----
.../java/org/apache/pinot/spi/data/Schema.java | 20 +++++++++
2 files changed, 59 insertions(+), 8 deletions(-)
diff --git a/pinot-common/src/test/java/org/apache/pinot/common/data/SchemaTest.java b/pinot-common/src/test/java/org/apache/pinot/common/data/SchemaTest.java
index 61413f6..0d5cbcf 100644
--- a/pinot-common/src/test/java/org/apache/pinot/common/data/SchemaTest.java
+++ b/pinot-common/src/test/java/org/apache/pinot/common/data/SchemaTest.java
@@ -84,7 +84,7 @@ public class SchemaTest {
Assert.assertEquals(dimensionFieldSpec.getFieldType(), FieldSpec.FieldType.DIMENSION);
Assert.assertEquals(dimensionFieldSpec.getName(), "svDimension");
Assert.assertEquals(dimensionFieldSpec.getDataType(), FieldSpec.DataType.INT);
- Assert.assertEquals(dimensionFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(dimensionFieldSpec.isSingleValueField());
Assert.assertEquals(dimensionFieldSpec.getDefaultNullValue(), Integer.MIN_VALUE);
dimensionFieldSpec = schema.getDimensionSpec("svDimensionWithDefault");
@@ -92,7 +92,7 @@ public class SchemaTest {
Assert.assertEquals(dimensionFieldSpec.getFieldType(), FieldSpec.FieldType.DIMENSION);
Assert.assertEquals(dimensionFieldSpec.getName(), "svDimensionWithDefault");
Assert.assertEquals(dimensionFieldSpec.getDataType(), FieldSpec.DataType.INT);
- Assert.assertEquals(dimensionFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(dimensionFieldSpec.isSingleValueField());
Assert.assertEquals(dimensionFieldSpec.getDefaultNullValue(), 10);
dimensionFieldSpec = schema.getDimensionSpec("mvDimension");
@@ -100,7 +100,7 @@ public class SchemaTest {
Assert.assertEquals(dimensionFieldSpec.getFieldType(), FieldSpec.FieldType.DIMENSION);
Assert.assertEquals(dimensionFieldSpec.getName(), "mvDimension");
Assert.assertEquals(dimensionFieldSpec.getDataType(), FieldSpec.DataType.STRING);
- Assert.assertEquals(dimensionFieldSpec.isSingleValueField(), false);
+ Assert.assertFalse(dimensionFieldSpec.isSingleValueField());
Assert.assertEquals(dimensionFieldSpec.getDefaultNullValue(), "null");
dimensionFieldSpec = schema.getDimensionSpec("mvDimensionWithDefault");
@@ -108,7 +108,7 @@ public class SchemaTest {
Assert.assertEquals(dimensionFieldSpec.getFieldType(), FieldSpec.FieldType.DIMENSION);
Assert.assertEquals(dimensionFieldSpec.getName(), "mvDimensionWithDefault");
Assert.assertEquals(dimensionFieldSpec.getDataType(), FieldSpec.DataType.STRING);
- Assert.assertEquals(dimensionFieldSpec.isSingleValueField(), false);
+ Assert.assertFalse(dimensionFieldSpec.isSingleValueField());
Assert.assertEquals(dimensionFieldSpec.getDefaultNullValue(), defaultString);
MetricFieldSpec metricFieldSpec = schema.getMetricSpec("metric");
@@ -116,7 +116,7 @@ public class SchemaTest {
Assert.assertEquals(metricFieldSpec.getFieldType(), FieldSpec.FieldType.METRIC);
Assert.assertEquals(metricFieldSpec.getName(), "metric");
Assert.assertEquals(metricFieldSpec.getDataType(), FieldSpec.DataType.INT);
- Assert.assertEquals(metricFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(metricFieldSpec.isSingleValueField());
Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), 0);
metricFieldSpec = schema.getMetricSpec("metricWithDefault");
@@ -124,7 +124,7 @@ public class SchemaTest {
Assert.assertEquals(metricFieldSpec.getFieldType(), FieldSpec.FieldType.METRIC);
Assert.assertEquals(metricFieldSpec.getName(), "metricWithDefault");
Assert.assertEquals(metricFieldSpec.getDataType(), FieldSpec.DataType.INT);
- Assert.assertEquals(metricFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(metricFieldSpec.isSingleValueField());
Assert.assertEquals(metricFieldSpec.getDefaultNullValue(), 5);
TimeFieldSpec timeFieldSpec = schema.getTimeFieldSpec();
@@ -132,7 +132,7 @@ public class SchemaTest {
Assert.assertEquals(timeFieldSpec.getFieldType(), FieldSpec.FieldType.TIME);
Assert.assertEquals(timeFieldSpec.getName(), "time");
Assert.assertEquals(timeFieldSpec.getDataType(), FieldSpec.DataType.LONG);
- Assert.assertEquals(timeFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(timeFieldSpec.isSingleValueField());
Assert.assertEquals(timeFieldSpec.getDefaultNullValue(), Long.MIN_VALUE);
DateTimeFieldSpec dateTimeFieldSpec = schema.getDateTimeSpec("dateTime");
@@ -140,7 +140,38 @@ public class SchemaTest {
Assert.assertEquals(dateTimeFieldSpec.getFieldType(), FieldSpec.FieldType.DATE_TIME);
Assert.assertEquals(dateTimeFieldSpec.getName(), "dateTime");
Assert.assertEquals(dateTimeFieldSpec.getDataType(), FieldSpec.DataType.LONG);
- Assert.assertEquals(dateTimeFieldSpec.isSingleValueField(), true);
+ Assert.assertTrue(dateTimeFieldSpec.isSingleValueField());
+ Assert.assertEquals(dateTimeFieldSpec.getDefaultNullValue(), Long.MIN_VALUE);
+ Assert.assertEquals(dateTimeFieldSpec.getFormat(), "1:HOURS:EPOCH");
+ Assert.assertEquals(dateTimeFieldSpec.getGranularity(), "1:HOURS");
+ }
+
+ @Test
+ public void testFetchFieldSpecForTime() {
+ Schema schema = new Schema.SchemaBuilder().addSingleValueDimension("svDimension", FieldSpec.DataType.INT)
+ .addMetric("metric", FieldSpec.DataType.INT)
+ .addTime(new TimeGranularitySpec(FieldSpec.DataType.LONG, TimeUnit.DAYS, "time"), null)
+ .addDateTime("dateTime", FieldSpec.DataType.LONG, "1:HOURS:EPOCH", "1:HOURS").build();
+
+ // Test method which fetches the DateTimeFieldSpec given the timeColumnName
+ // Test is on TIME
+ DateTimeFieldSpec dateTimeFieldSpec = schema.getSpecForTimeColumn("time");
+ Assert.assertNotNull(dateTimeFieldSpec);
+ Assert.assertEquals(dateTimeFieldSpec.getFieldType(), FieldSpec.FieldType.DATE_TIME);
+ Assert.assertEquals(dateTimeFieldSpec.getName(), "time");
+ Assert.assertEquals(dateTimeFieldSpec.getDataType(), FieldSpec.DataType.LONG);
+ Assert.assertTrue(dateTimeFieldSpec.isSingleValueField());
+ Assert.assertEquals(dateTimeFieldSpec.getDefaultNullValue(), Long.MIN_VALUE);
+ Assert.assertEquals(dateTimeFieldSpec.getFormat(), "1:DAYS:EPOCH");
+ Assert.assertEquals(dateTimeFieldSpec.getGranularity(), "1:DAYS");
+
+ // Test it on DATE_TIME
+ dateTimeFieldSpec = schema.getSpecForTimeColumn("dateTime");
+ Assert.assertNotNull(dateTimeFieldSpec);
+ Assert.assertEquals(dateTimeFieldSpec.getFieldType(), FieldSpec.FieldType.DATE_TIME);
+ Assert.assertEquals(dateTimeFieldSpec.getName(), "dateTime");
+ Assert.assertEquals(dateTimeFieldSpec.getDataType(), FieldSpec.DataType.LONG);
+ Assert.assertTrue(dateTimeFieldSpec.isSingleValueField());
Assert.assertEquals(dateTimeFieldSpec.getDefaultNullValue(), Long.MIN_VALUE);
Assert.assertEquals(dateTimeFieldSpec.getFormat(), "1:HOURS:EPOCH");
Assert.assertEquals(dateTimeFieldSpec.getGranularity(), "1:HOURS");
diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java b/pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java
index 8fb05b3..a3a2b64 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/data/Schema.java
@@ -299,6 +299,26 @@ public final class Schema {
return null;
}
+ /**
+ * Fetches the DateTimeFieldSpec for the given time column name.
+ * If the columnName is a DATE_TIME column, returns the DateTimeFieldSpec
+ * If the columnName is a TIME column, converts to DateTimeFieldSpec before returning
+ */
+ @JsonIgnore
+ @Nullable
+ public DateTimeFieldSpec getSpecForTimeColumn(String timeColumnName) {
+ FieldSpec fieldSpec = _fieldSpecMap.get(timeColumnName);
+ if (fieldSpec != null) {
+ if (fieldSpec.getFieldType() == FieldType.DATE_TIME) {
+ return (DateTimeFieldSpec) fieldSpec;
+ }
+ if (fieldSpec.getFieldType() == FieldType.TIME) {
+ return convertToDateTimeFieldSpec((TimeFieldSpec) fieldSpec);
+ }
+ }
+ return null;
+ }
+
@JsonIgnore
public List<String> getDimensionNames() {
return _dimensionNames;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org