This is an automated email from the ASF dual-hosted git repository.

ccaominh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new b5dfa53  Make it easier for devs to add CalciteQueryTests (#9922)
b5dfa53 is described below

commit b5dfa5322b2611eb7626dbe8c4023f4946ea46f9
Author: Suneet Saldanha <[email protected]>
AuthorDate: Wed May 27 13:03:53 2020 -0700

    Make it easier for devs to add CalciteQueryTests (#9922)
    
    * Add ingestion specs for CalciteQueryTests
    
    This PR introduces ingestion specs that can be used for local testing
    so that CalciteQueryTests can be built on a druid cluster.
    
    * Add README
    
    * Update sql/src/test/resources/calcite/tests/README.md
---
 .../druid/sql/calcite/util/CalciteTests.java       | 348 ++++++++++-----------
 sql/src/test/resources/calcite/tests/README.md     |   7 +
 sql/src/test/resources/calcite/tests/foo.json      |  53 ++++
 sql/src/test/resources/calcite/tests/foo2.json     |  47 +++
 sql/src/test/resources/calcite/tests/foo4.json     |  52 +++
 sql/src/test/resources/calcite/tests/lookyloo.json |   6 +
 sql/src/test/resources/calcite/tests/numFoo.json   |  79 +++++
 7 files changed, 413 insertions(+), 179 deletions(-)

diff --git 
a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java 
b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
index 0874281..588d5ad 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/util/CalciteTests.java
@@ -124,6 +124,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.Executor;
 import java.util.function.BooleanSupplier;
+import java.util.stream.Collectors;
 
 /**
  * Utility functions for Calcite tests.
@@ -309,189 +310,178 @@ public class CalciteTests
       .withRollup(false)
       .build();
 
-  public static final List<InputRow> ROWS1 = ImmutableList.of(
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-01")
-              .put("m1", "1.0")
-              .put("m2", "1.0")
-              .put("dim1", "")
-              .put("dim2", ImmutableList.of("a"))
-              .put("dim3", ImmutableList.of("a", "b"))
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-02")
-              .put("m1", "2.0")
-              .put("m2", "2.0")
-              .put("dim1", "10.1")
-              .put("dim2", ImmutableList.of())
-              .put("dim3", ImmutableList.of("b", "c"))
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-03")
-              .put("m1", "3.0")
-              .put("m2", "3.0")
-              .put("dim1", "2")
-              .put("dim2", ImmutableList.of(""))
-              .put("dim3", ImmutableList.of("d"))
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-01")
-              .put("m1", "4.0")
-              .put("m2", "4.0")
-              .put("dim1", "1")
-              .put("dim2", ImmutableList.of("a"))
-              .put("dim3", ImmutableList.of(""))
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-02")
-              .put("m1", "5.0")
-              .put("m2", "5.0")
-              .put("dim1", "def")
-              .put("dim2", ImmutableList.of("abc"))
-              .put("dim3", ImmutableList.of())
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-03")
-              .put("m1", "6.0")
-              .put("m2", "6.0")
-              .put("dim1", "abc")
-              .build()
-      )
+  public static final List<ImmutableMap<String, Object>> RAW_ROWS1 = 
ImmutableList.of(
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01")
+          .put("m1", "1.0")
+          .put("m2", "1.0")
+          .put("dim1", "")
+          .put("dim2", ImmutableList.of("a"))
+          .put("dim3", ImmutableList.of("a", "b"))
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-02")
+          .put("m1", "2.0")
+          .put("m2", "2.0")
+          .put("dim1", "10.1")
+          .put("dim2", ImmutableList.of())
+          .put("dim3", ImmutableList.of("b", "c"))
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-03")
+          .put("m1", "3.0")
+          .put("m2", "3.0")
+          .put("dim1", "2")
+          .put("dim2", ImmutableList.of(""))
+          .put("dim3", ImmutableList.of("d"))
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-01")
+          .put("m1", "4.0")
+          .put("m2", "4.0")
+          .put("dim1", "1")
+          .put("dim2", ImmutableList.of("a"))
+          .put("dim3", ImmutableList.of(""))
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-02")
+          .put("m1", "5.0")
+          .put("m2", "5.0")
+          .put("dim1", "def")
+          .put("dim2", ImmutableList.of("abc"))
+          .put("dim3", ImmutableList.of())
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-03")
+          .put("m1", "6.0")
+          .put("m2", "6.0")
+          .put("dim1", "abc")
+          .build()
   );
-
-  public static final List<InputRow> ROWS1_WITH_NUMERIC_DIMS = 
ImmutableList.of(
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-01")
-              .put("m1", "1.0")
-              .put("m2", "1.0")
-              .put("d1", 1.0)
-              .put("f1", 1.0f)
-              .put("l1", 7L)
-              .put("dim1", "")
-              .put("dim2", ImmutableList.of("a"))
-              .put("dim3", ImmutableList.of("a", "b"))
-              .put("dim4", "a")
-              .put("dim5", "aa")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-02")
-              .put("m1", "2.0")
-              .put("m2", "2.0")
-              .put("d1", 1.7)
-              .put("d2", 1.7)
-              .put("f1", 0.1f)
-              .put("f2", 0.1f)
-              .put("l1", 325323L)
-              .put("l2", 325323L)
-              .put("dim1", "10.1")
-              .put("dim2", ImmutableList.of())
-              .put("dim3", ImmutableList.of("b", "c"))
-              .put("dim4", "a")
-              .put("dim5", "ab")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-03")
-              .put("m1", "3.0")
-              .put("m2", "3.0")
-              .put("d1", 0.0)
-              .put("d2", 0.0)
-              .put("f1", 0.0)
-              .put("f2", 0.0)
-              .put("l1", 0)
-              .put("l2", 0)
-              .put("dim1", "2")
-              .put("dim2", ImmutableList.of(""))
-              .put("dim3", ImmutableList.of("d"))
-              .put("dim4", "a")
-              .put("dim5", "ba")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-01")
-              .put("m1", "4.0")
-              .put("m2", "4.0")
-              .put("dim1", "1")
-              .put("dim2", ImmutableList.of("a"))
-              .put("dim3", ImmutableList.of(""))
-              .put("dim4", "b")
-              .put("dim5", "ad")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-02")
-              .put("m1", "5.0")
-              .put("m2", "5.0")
-              .put("dim1", "def")
-              .put("dim2", ImmutableList.of("abc"))
-              .put("dim3", ImmutableList.of())
-              .put("dim4", "b")
-              .put("dim5", "aa")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2001-01-03")
-              .put("m1", "6.0")
-              .put("m2", "6.0")
-              .put("dim1", "abc")
-              .put("dim4", "b")
-              .put("dim5", "ab")
-              .build(),
-          PARSER_NUMERIC_DIMS
-      )
+  public static final List<InputRow> ROWS1 =
+      
RAW_ROWS1.stream().map(CalciteTests::createRow).collect(Collectors.toList());
+
+  public static final List<ImmutableMap<String, Object>> 
RAW_ROWS1_WITH_NUMERIC_DIMS = ImmutableList.of(
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01")
+          .put("m1", "1.0")
+          .put("m2", "1.0")
+          .put("d1", 1.0)
+          .put("f1", 1.0f)
+          .put("l1", 7L)
+          .put("dim1", "")
+          .put("dim2", ImmutableList.of("a"))
+          .put("dim3", ImmutableList.of("a", "b"))
+          .put("dim4", "a")
+          .put("dim5", "aa")
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-02")
+          .put("m1", "2.0")
+          .put("m2", "2.0")
+          .put("d1", 1.7)
+          .put("d2", 1.7)
+          .put("f1", 0.1f)
+          .put("f2", 0.1f)
+          .put("l1", 325323L)
+          .put("l2", 325323L)
+          .put("dim1", "10.1")
+          .put("dim2", ImmutableList.of())
+          .put("dim3", ImmutableList.of("b", "c"))
+          .put("dim4", "a")
+          .put("dim5", "ab")
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-03")
+          .put("m1", "3.0")
+          .put("m2", "3.0")
+          .put("d1", 0.0)
+          .put("d2", 0.0)
+          .put("f1", 0.0)
+          .put("f2", 0.0)
+          .put("l1", 0)
+          .put("l2", 0)
+          .put("dim1", "2")
+          .put("dim2", ImmutableList.of(""))
+          .put("dim3", ImmutableList.of("d"))
+          .put("dim4", "a")
+          .put("dim5", "ba")
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-01")
+          .put("m1", "4.0")
+          .put("m2", "4.0")
+          .put("dim1", "1")
+          .put("dim2", ImmutableList.of("a"))
+          .put("dim3", ImmutableList.of(""))
+          .put("dim4", "b")
+          .put("dim5", "ad")
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-02")
+          .put("m1", "5.0")
+          .put("m2", "5.0")
+          .put("dim1", "def")
+          .put("dim2", ImmutableList.of("abc"))
+          .put("dim3", ImmutableList.of())
+          .put("dim4", "b")
+          .put("dim5", "aa")
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2001-01-03")
+          .put("m1", "6.0")
+          .put("m2", "6.0")
+          .put("dim1", "abc")
+          .put("dim4", "b")
+          .put("dim5", "ab")
+          .build()
   );
-
-  public static final List<InputRow> ROWS2 = ImmutableList.of(
-      createRow("2000-01-01", "דרואיד", "he", 1.0),
-      createRow("2000-01-01", "druid", "en", 1.0),
-      createRow("2000-01-01", "друид", "ru", 1.0)
+  public static final List<InputRow> ROWS1_WITH_NUMERIC_DIMS =
+      RAW_ROWS1_WITH_NUMERIC_DIMS.stream().map(raw -> createRow(raw, 
PARSER_NUMERIC_DIMS)).collect(Collectors.toList());
+
+  public static final List<ImmutableMap<String, Object>> RAW_ROWS2 = 
ImmutableList.of(
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01")
+          .put("dim1", "דרואיד")
+          .put("dim2", "he")
+          .put("m1", 1.0)
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01")
+          .put("dim1", "druid")
+          .put("dim2", "en")
+          .put("m1", 1.0)
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01")
+          .put("dim1", "друид")
+          .put("dim2", "ru")
+          .put("m1", 1.0)
+          .build()
   );
-
-  public static final List<InputRow> ROWS1_WITH_FULL_TIMESTAMP = 
ImmutableList.of(
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-01T10:51:45.695Z")
-              .put("m1", "1.0")
-              .put("m2", "1.0")
-              .put("dim1", "")
-              .put("dim2", ImmutableList.of("a"))
-              .put("dim3", ImmutableList.of("a", "b"))
-              .build()
-      ),
-      createRow(
-          ImmutableMap.<String, Object>builder()
-              .put("t", "2000-01-18T10:51:45.695Z")
-              .put("m1", "2.0")
-              .put("m2", "2.0")
-              .put("dim1", "10.1")
-              .put("dim2", ImmutableList.of())
-              .put("dim3", ImmutableList.of("b", "c"))
-              .build()
-      )
+  public static final List<InputRow> ROWS2 =
+      
RAW_ROWS2.stream().map(CalciteTests::createRow).collect(Collectors.toList());
+
+  public static final List<ImmutableMap<String, Object>> 
RAW_ROWS1_WITH_FULL_TIMESTAMP = ImmutableList.of(
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-01T10:51:45.695Z")
+          .put("m1", "1.0")
+          .put("m2", "1.0")
+          .put("dim1", "")
+          .put("dim2", ImmutableList.of("a"))
+          .put("dim3", ImmutableList.of("a", "b"))
+          .build(),
+      ImmutableMap.<String, Object>builder()
+          .put("t", "2000-01-18T10:51:45.695Z")
+          .put("m1", "2.0")
+          .put("m2", "2.0")
+          .put("dim1", "10.1")
+          .put("dim2", ImmutableList.of())
+          .put("dim3", ImmutableList.of("b", "c"))
+          .build()
   );
+  public static final List<InputRow> ROWS1_WITH_FULL_TIMESTAMP =
+      
RAW_ROWS1_WITH_FULL_TIMESTAMP.stream().map(CalciteTests::createRow).collect(Collectors.toList());
 
 
   public static final List<InputRow> FORBIDDEN_ROWS = ImmutableList.of(
diff --git a/sql/src/test/resources/calcite/tests/README.md 
b/sql/src/test/resources/calcite/tests/README.md
new file mode 100644
index 0000000..461679c
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/README.md
@@ -0,0 +1,7 @@
+This package contains ingestion specs for datasources used by Calcite Tests.
+
+The purpose of these files is to make it easier to look at and manipulate the 
data under test so that you can easily
+validate if the results of the SQL query written are as expected. 
+
+> NOTE: The provided specs are not guaranteed to be in sync with the 
datasources used by the test. The source of truth
+> is org.apache.druid.sql.calcite.util.CalciteTests
diff --git a/sql/src/test/resources/calcite/tests/foo.json 
b/sql/src/test/resources/calcite/tests/foo.json
new file mode 100644
index 0000000..4b0d65b
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/foo.json
@@ -0,0 +1,53 @@
+{
+  "type": "index_parallel",
+  "spec": {
+    "ioConfig": {
+      "type": "index_parallel",
+      "inputSource": {
+        "type": "inline",
+        "data": 
"{\"t\":\"2000-01-01\",\"m1\":\"1.0\",\"m2\":\"1.0\",\"dim1\":\"\",\"dim2\":[\"a\"],\"dim3\":[\"a\",\"b\"]},\n{\"t\":\"2000-01-02\",\"m1\":\"2.0\",\"m2\":\"2.0\",\"dim1\":\"10.1\",\"dim2\":[],\"dim3\":[\"b\",\"c\"]},\n{\"t\":\"2000-01-03\",\"m1\":\"3.0\",\"m2\":\"3.0\",\"dim1\":\"2\",\"dim2\":[\"\"],\"dim3\":[\"d\"]},\n{\"t\":\"2001-01-01\",\"m1\":\"4.0\",\"m2\":\"4.0\",\"dim1\":\"1\",\"dim2\":[\"a\"],\"dim3\":[\"\"]},\n{\"t\":\"2001-01-02\",\"m1\":\"5.0\",\"m2\":\"5.0\",
 [...]
+      },
+      "inputFormat": {
+        "type": "json"
+      }
+    },
+    "tuningConfig": {
+      "type": "index_parallel",
+      "partitionsSpec": {
+        "type": "dynamic"
+      }
+    },
+    "dataSchema": {
+      "dataSource": "foo",
+      "granularitySpec": {
+        "type": "uniform",
+        "queryGranularity": "NONE",
+        "rollup": false,
+        "segmentGranularity": "YEAR"
+      },
+      "timestampSpec": {
+        "column": "t",
+        "format": "auto"
+      },
+      "dimensionsSpec": {
+        "dimensions": [
+          "dim1",
+          "dim2",
+          "dim3"
+        ]
+      },
+      "metricsSpec": [
+        {
+          "name": "m1",
+          "type": "floatSum",
+          "fieldName": "m1"
+        },
+        {
+          "name": "m2",
+          "type": "doubleSum",
+          "fieldName": "m2"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/sql/src/test/resources/calcite/tests/foo2.json 
b/sql/src/test/resources/calcite/tests/foo2.json
new file mode 100644
index 0000000..d865c2c
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/foo2.json
@@ -0,0 +1,47 @@
+{
+  "type": "index_parallel",
+  "spec": {
+    "ioConfig": {
+      "type": "index_parallel",
+      "inputSource": {
+        "type": "inline",
+        "data": 
"{\"t\":\"2000-01-01\",\"dim1\":\"דרואיד\",\"dim2\":\"he\",\"m1\":1.0}\n{\"t\":\"2000-01-01\",\"dim1\":\"druid\",\"dim2\":\"en\",\"m1\":1.0}\n{\"t\":\"2000-01-01\",\"dim1\":\"друид\",\"dim2\":\"ru\",\"m1\":1.0}"
+      },
+      "inputFormat": {
+        "type": "json"
+      }
+    },
+    "tuningConfig": {
+      "type": "index_parallel",
+      "partitionsSpec": {
+        "type": "dynamic"
+      }
+    },
+    "dataSchema": {
+      "dataSource": "foo2",
+      "granularitySpec": {
+        "type": "uniform",
+        "queryGranularity": "NONE",
+        "rollup": false,
+        "segmentGranularity": "YEAR"
+      },
+      "timestampSpec": {
+        "column": "t",
+        "format": "auto"
+      },
+      "dimensionsSpec": {
+        "dimensions": [
+          "dim1",
+          "dim2"
+        ]
+      },
+      "metricsSpec": [
+        {
+          "name": "m1",
+          "type": "longSum",
+          "fieldName": "m1"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/sql/src/test/resources/calcite/tests/foo4.json 
b/sql/src/test/resources/calcite/tests/foo4.json
new file mode 100644
index 0000000..ddf275f
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/foo4.json
@@ -0,0 +1,52 @@
+{
+  "type": "index_parallel",
+  "spec": {
+    "ioConfig": {
+      "type": "index_parallel",
+      "inputSource": {
+        "type": "inline",
+        "data": 
"{\"t\":\"2000-01-01T10:51:45.695Z\",\"m1\":\"1.0\",\"m2\":\"1.0\",\"dim1\":\"\",\"dim2\":[\"a\"],\"dim3\":[\"a\",\"b\"]}\n{\"t\":\"2000-01-18T10:51:45.695Z\",\"m1\":\"2.0\",\"m2\":\"2.0\",\"dim1\":\"10.1\",\"dim2\":[],\"dim3\":[\"b\",\"c\"]}"
+      },
+      "inputFormat": {
+        "type": "json"
+      }
+    },
+    "tuningConfig": {
+      "type": "index_parallel",
+      "partitionsSpec": {
+        "type": "dynamic"
+      }
+    },
+    "dataSchema": {
+      "dataSource": "foo4",
+      "granularitySpec": {
+        "type": "uniform",
+        "queryGranularity": "HOUR",
+        "rollup": true,
+        "segmentGranularity": "YEAR"
+      },
+      "timestampSpec": {
+        "column": "t",
+        "format": "iso"
+      },
+      "dimensionsSpec": {
+        "dimensions": [
+          "dim2",
+          "dim3"
+        ]
+      },
+      "metricsSpec": [
+        {
+          "name": "m1",
+          "type": "floatSum",
+          "fieldName": "m1"
+        },
+        {
+          "name": "m2",
+          "type": "doubleSum",
+          "fieldName": "m2"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/sql/src/test/resources/calcite/tests/lookyloo.json 
b/sql/src/test/resources/calcite/tests/lookyloo.json
new file mode 100644
index 0000000..8514c3d
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/lookyloo.json
@@ -0,0 +1,6 @@
+{
+  "a": "xa",
+  "abc": "xabc",
+  "nosuchkey": "mysteryvalue",
+  "6": "x6"
+}
\ No newline at end of file
diff --git a/sql/src/test/resources/calcite/tests/numFoo.json 
b/sql/src/test/resources/calcite/tests/numFoo.json
new file mode 100644
index 0000000..f298b1d
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/numFoo.json
@@ -0,0 +1,79 @@
+{
+  "type": "index_parallel",
+  "spec": {
+    "ioConfig": {
+      "type": "index_parallel",
+      "inputSource": {
+        "type": "inline",
+        "data": 
"{\"t\":\"2000-01-01\",\"m1\":\"1.0\",\"m2\":\"1.0\",\"d1\":1.0,\"f1\":1.0,\"l1\":7,\"dim1\":\"\",\"dim2\":[\"a\"],\"dim3\":[\"a\",\"b\"],\"dim4\":\"a\",\"dim5\":\"aa\"}\n{\"t\":\"2000-01-02\",\"m1\":\"2.0\",\"m2\":\"2.0\",\"d1\":1.7,\"d2\":1.7,\"f1\":0.1,\"f2\":0.1,\"l1\":325323,\"l2\":325323,\"dim1\":\"10.1\",\"dim2\":[],\"dim3\":[\"b\",\"c\"],\"dim4\":\"a\",\"dim5\":\"ab\"}\n{\"t\":\"2000-01-03\",\"m1\":\"3.0\",\"m2\":\"3.0\",\"d1\":0.0,\"d2\":0.0,\"f1\":0.0,\"f2\":0.0
 [...]
+      },
+      "inputFormat": {
+        "type": "json"
+      }
+    },
+    "tuningConfig": {
+      "type": "index_parallel",
+      "partitionsSpec": {
+        "type": "dynamic"
+      }
+    },
+    "dataSchema": {
+      "dataSource": "numFoo",
+      "granularitySpec": {
+        "type": "uniform",
+        "queryGranularity": "NONE",
+        "rollup": false,
+        "segmentGranularity": "YEAR"
+      },
+      "timestampSpec": {
+        "column": "t",
+        "format": "auto"
+      },
+      "dimensionsSpec": {
+        "dimensions": [
+          {
+            "type": "double",
+            "name": "d1"
+          },
+          {
+            "type": "double",
+            "name": "d2"
+          },
+          "dim1",
+          "dim2",
+          "dim3",
+          "dim4",
+          "dim5",
+          {
+            "type": "float",
+            "name": "f1"
+          },
+          {
+            "type": "float",
+            "name": "f2"
+          },
+          {
+            "type": "long",
+            "name": "l1"
+          },
+          {
+            "type": "long",
+            "name": "l2"
+          }
+        ]
+      },
+      "metricsSpec": [
+        {
+          "name": "m1",
+          "type": "floatSum",
+          "fieldName": "m1"
+        },
+        {
+          "name": "m2",
+          "type": "doubleSum",
+          "fieldName": "m2"
+        }
+      ]
+    }
+  }
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to