You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/03/10 12:48:45 UTC

[1/2] kylin git commit: fix bug and strength UT in cuboid scheduling

Repository: kylin
Updated Branches:
  refs/heads/master b7db093fb -> ea4a42c63


fix bug and strength UT in cuboid scheduling


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/ea4a42c6
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/ea4a42c6
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/ea4a42c6

Branch: refs/heads/master
Commit: ea4a42c63af0669c0b964eb7bb20ca7dcc52fa56
Parents: 8590b2d
Author: Hongbin Ma <ma...@apache.org>
Authored: Thu Mar 10 19:46:56 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Mar 10 19:47:02 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/cube/cuboid/Cuboid.java    |  1 -
 .../org/apache/kylin/cube/cuboid/CuboidCLI.java | 32 ++++++++++++++++++++
 .../kylin/cube/cuboid/CuboidSchedulerTest.java  | 10 ++++++
 3 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java
index c4e373b..16b0287 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/Cuboid.java
@@ -235,7 +235,6 @@ public class Cuboid implements Comparable<Cuboid> {
         for (HierarchyMask hierarchyMasks : hierarchyMaskList) {
             long result = cuboidID & hierarchyMasks.fullMask;
             if (result > 0) {
-                // if match one of the hierarchy constrains, return true;
                 for (long mask : hierarchyMasks.allMasks) {
                     if (result == mask) {
                         continue hier;

http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java
index 49382bd..d5918aa 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/cuboid/CuboidCLI.java
@@ -57,7 +57,9 @@ public class CuboidCLI {
                 if (!notfound) {
                     throw new IllegalStateException("Find duplicate spanning cuboid " + sc + " from cuboid " + cuboid);
                 }
+
                 cuboidQueue.push(sc);
+
             }
         }
 
@@ -68,6 +70,36 @@ public class CuboidCLI {
             if (enumCuboids.equals(cuboidSet) == false) {
                 throw new IllegalStateException("Expected cuboid set " + enumCuboids + "; but actual cuboid set " + cuboidSet);
             }
+
+            //check all valid and invalid
+            for (long i = 0; i < baseCuboid; ++i) {
+                if (cuboidSet.contains(i)) {
+                    if (!Cuboid.isValid(cubeDesc, i)) {
+                        throw new RuntimeException();
+                    }
+
+                    if (Cuboid.translateToValidCuboid(cubeDesc, i) != i) {
+                        throw new RuntimeException();
+                    }
+                } else {
+                    if (Cuboid.isValid(cubeDesc, i)) {
+                        throw new RuntimeException();
+                    }
+
+                    long corrected = Cuboid.translateToValidCuboid(cubeDesc, i);
+                    if (corrected == i) {
+                        throw new RuntimeException();
+                    }
+
+                    if (!Cuboid.isValid(cubeDesc, corrected)) {
+                        throw new RuntimeException();
+                    }
+
+                    if (Cuboid.translateToValidCuboid(cubeDesc, corrected) != corrected) {
+                        throw new RuntimeException();
+                    }
+                }
+            }
         }
 
         return cuboidSet.size();

http://git-wip-us.apache.org/repos/asf/kylin/blob/ea4a42c6/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
index 0711d6e..02c01b8 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidSchedulerTest.java
@@ -88,6 +88,10 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase {
     private CubeDesc getStreamingCubeDesc() {
         return getCubeDescManager().getCubeDesc("test_streaming_table_cube_desc");
     }
+    
+    private CubeDesc getSSBCubeDesc() {
+        return getCubeDescManager().getCubeDesc("ssb");
+    }
 
     private void testSpanningAndGetParent(CuboidScheduler scheduler, CubeDesc cube, long[] cuboidIds) {
         for (long cuboidId : cuboidIds) {
@@ -209,6 +213,12 @@ public class CuboidSchedulerTest extends LocalFileMetadataTestCase {
     }
 
     @Test
+    public void testCuboidGeneration6() {
+        CubeDesc cube = getSSBCubeDesc();
+        CuboidCLI.simulateCuboidGeneration(cube, true);
+    }
+
+    @Test
     public void testCuboidCounts1() {
         CubeDesc cube = getTestKylinCubeWithoutSeller();
         CuboidScheduler cuboidScheduler = new CuboidScheduler(cube);


[2/2] kylin git commit: test case for ssb

Posted by ma...@apache.org.
test case for ssb

Signed-off-by: Hongbin Ma <ma...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/8590b2d2
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/8590b2d2
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/8590b2d2

Branch: refs/heads/master
Commit: 8590b2d24f00c5495d0dd6608743ba2bfe431d83
Parents: b7db093
Author: shaofengshi <sh...@apache.org>
Authored: Thu Mar 10 17:43:41 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Mar 10 19:47:02 2016 +0800

----------------------------------------------------------------------
 .../cube/inmemcubing/InMemCubeBuilderTest.java  |  12 +-
 examples/test_case_data/localmeta/cube/ssb.json |  16 ++
 .../test_case_data/localmeta/cube_desc/ssb.json | 177 +++++++++++++++++++
 ...ediate_ssb_19920101000000_19920201000000.csv | 100 +++++++++++
 .../localmeta/model_desc/ssb.json               |  65 +++++++
 .../localmeta/table/SSB.CUSTOMER.json           |  41 +++++
 .../localmeta/table/SSB.DATES.json              |  77 ++++++++
 .../localmeta/table/SSB.PART.json               |  45 +++++
 .../localmeta/table/SSB.SUPPLIER.json           |  37 ++++
 .../localmeta/table/SSB.V_LINEORDER.json        |  85 +++++++++
 10 files changed, 650 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/core-cube/src/test/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilderTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilderTest.java b/core-cube/src/test/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilderTest.java
index b593e48..76674d3 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilderTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/inmemcubing/InMemCubeBuilderTest.java
@@ -61,8 +61,8 @@ public class InMemCubeBuilderTest extends LocalFileMetadataTestCase {
 
     private static final Logger logger = LoggerFactory.getLogger(InMemCubeBuilderTest.class);
 
-    private static final int INPUT_ROWS = 70000;
-    private static final int THREADS = 4;
+    private static final int INPUT_ROWS = 1000;
+    private static final int THREADS = 1;
 
     private static CubeInstance cube;
     private static String flatTable;
@@ -75,8 +75,8 @@ public class InMemCubeBuilderTest extends LocalFileMetadataTestCase {
         KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
         CubeManager cubeManager = CubeManager.getInstance(kylinConfig);
 
-        cube = cubeManager.getCube("test_kylin_cube_without_slr_left_join_empty");
-        flatTable = "../examples/test_case_data/localmeta/data/flatten_data_for_without_slr_left_join.csv";
+        cube = cubeManager.getCube("ssb");
+        flatTable = "../examples/test_case_data/localmeta/data/kylin_intermediate_ssb_19920101000000_19920201000000.csv";
         dictionaryMap = getDictionaryMap(cube, flatTable);
     }
 
@@ -213,7 +213,9 @@ public class InMemCubeBuilderTest extends LocalFileMetadataTestCase {
         List<String> lines = FileUtils.readLines(new File(flatTable), "UTF-8");
         for (String line : lines) {
             String[] row = line.trim().split(",");
-            assert row.length == nColumns;
+            if ( row.length != nColumns) {
+                throw new IllegalStateException();
+            }
             if (row[c] != null) {
                 result.add(Bytes.toBytes(row[c]));
             }

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/cube/ssb.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube/ssb.json b/examples/test_case_data/localmeta/cube/ssb.json
new file mode 100644
index 0000000..879754e
--- /dev/null
+++ b/examples/test_case_data/localmeta/cube/ssb.json
@@ -0,0 +1,16 @@
+{
+  "uuid" : "70a9f288-3c01-4745-a04b-5641e82d6c69",
+  "version" : "2.1",
+  "name" : "ssb",
+  "owner" : "ADMIN",
+  "cost" : 50,
+  "status" : "DISABLED",
+  "segments" : [ {
+  } ],
+  "last_modified" : 1457534216410,
+  "descriptor" : "ssb",
+  "create_time_utc" : 1457444500888,
+  "size_kb" : 0,
+  "input_records_count" : 0,
+  "input_records_size" : 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/cube_desc/ssb.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube_desc/ssb.json b/examples/test_case_data/localmeta/cube_desc/ssb.json
new file mode 100644
index 0000000..7fa0e9a
--- /dev/null
+++ b/examples/test_case_data/localmeta/cube_desc/ssb.json
@@ -0,0 +1,177 @@
+{
+  "uuid" : "5c44df30-daec-486e-af90-927bf7851057",
+  "version" : "2.1",
+  "name" : "ssb",
+  "description" : "",
+  "dimensions" : [ {
+    "name" : "SSB.PART_DERIVED",
+    "table" : "SSB.PART",
+    "column" : null,
+    "derived" : [ "P_MFGR", "P_CATEGORY", "P_BRAND" ]
+  }, {
+    "name" : "C_CITY",
+    "table" : "SSB.CUSTOMER",
+    "column" : "C_CITY",
+    "derived" : null
+  }, {
+    "name" : "C_REGION",
+    "table" : "SSB.CUSTOMER",
+    "column" : "C_REGION",
+    "derived" : null
+  }, {
+    "name" : "C_NATION",
+    "table" : "SSB.CUSTOMER",
+    "column" : "C_NATION",
+    "derived" : null
+  }, {
+    "name" : "S_CITY",
+    "table" : "SSB.SUPPLIER",
+    "column" : "S_CITY",
+    "derived" : null
+  }, {
+    "name" : "S_REGION",
+    "table" : "SSB.SUPPLIER",
+    "column" : "S_REGION",
+    "derived" : null
+  }, {
+    "name" : "S_NATION",
+    "table" : "SSB.SUPPLIER",
+    "column" : "S_NATION",
+    "derived" : null
+  }, {
+    "name" : "D_YEAR",
+    "table" : "SSB.DATES",
+    "column" : "D_YEAR",
+    "derived" : null
+  }, {
+    "name" : "D_YEARMONTH",
+    "table" : "SSB.DATES",
+    "column" : "D_YEARMONTH",
+    "derived" : null
+  }, {
+    "name" : "D_YEARMONTHNUM",
+    "table" : "SSB.DATES",
+    "column" : "D_YEARMONTHNUM",
+    "derived" : null
+  }, {
+    "name" : "D_WEEKNUMINYEAR",
+    "table" : "SSB.DATES",
+    "column" : "D_WEEKNUMINYEAR",
+    "derived" : null
+  } ],
+  "measures" : [ {
+    "name" : "_COUNT_",
+    "function" : {
+      "expression" : "COUNT",
+      "parameter" : {
+        "type" : "constant",
+        "value" : "1",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  }, {
+    "name" : "TOTAL_REVENUE",
+    "function" : {
+      "expression" : "SUM",
+      "parameter" : {
+        "type" : "column",
+        "value" : "LO_REVENUE",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  }, {
+    "name" : "TOTAL_SUPPLYCOST",
+    "function" : {
+      "expression" : "SUM",
+      "parameter" : {
+        "type" : "column",
+        "value" : "LO_SUPPLYCOST",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  }, {
+    "name" : "TOTAL_V_REVENUE",
+    "function" : {
+      "expression" : "SUM",
+      "parameter" : {
+        "type" : "column",
+        "value" : "V_REVENUE",
+        "next_parameter" : null
+      },
+      "returntype" : "bigint"
+    },
+    "dependent_measure_ref" : null
+  } ],
+  "rowkey" : {
+    "rowkey_columns" : [ {
+      "column" : "LO_PARTKEY",
+      "encoding" : "dict"
+    }, {
+      "column" : "C_CITY",
+      "encoding" : "dict"
+    }, {
+      "column" : "C_REGION",
+      "encoding" : "dict"
+    }, {
+      "column" : "C_NATION",
+      "encoding" : "dict"
+    }, {
+      "column" : "S_CITY",
+      "encoding" : "dict"
+    }, {
+      "column" : "S_REGION",
+      "encoding" : "dict"
+    }, {
+      "column" : "S_NATION",
+      "encoding" : "dict"
+    }, {
+      "column" : "D_YEAR",
+      "encoding" : "dict"
+    }, {
+      "column" : "D_YEARMONTH",
+      "encoding" : "dict"
+    }, {
+      "column" : "D_YEARMONTHNUM",
+      "encoding" : "dict"
+    }, {
+      "column" : "D_WEEKNUMINYEAR",
+      "encoding" : "dict"
+    } ]
+  },
+  "signature" : "5iV8LVYs+PmVUju8QNQ5TQ==",
+  "last_modified" : 1457503036686,
+  "model_name" : "ssb",
+  "null_string" : null,
+  "hbase_mapping" : {
+    "column_family" : [ {
+      "name" : "F1",
+      "columns" : [ {
+        "qualifier" : "M",
+        "measure_refs" : [ "_COUNT_", "TOTAL_REVENUE", "TOTAL_SUPPLYCOST", "TOTAL_V_REVENUE" ]
+      } ]
+    } ]
+  },
+  "aggregation_groups" : [ {
+    "includes" : [ "LO_PARTKEY", "C_CITY", "C_REGION", "C_NATION", "S_CITY", "S_REGION", "S_NATION", "D_YEAR", "D_YEARMONTH", "D_YEARMONTHNUM", "D_WEEKNUMINYEAR" ],
+    "select_rule" : {
+      "hierarchy_dims" : [ [ "C_REGION", "C_NATION", "C_CITY" ], [ "S_REGION", "S_NATION", "S_CITY" ], [ "D_YEAR", "D_YEARMONTH", "D_YEARMONTHNUM", "D_WEEKNUMINYEAR" ] ],
+      "mandatory_dims" : [ ],
+      "joint_dims" : [ ]
+    }
+  } ],
+  "notify_list" : [ ],
+  "status_need_notify" : [ ],
+  "partition_date_start" : 694224000000,
+  "partition_date_end" : 3153600000000,
+  "auto_merge_time_ranges" : [ 604800000, 2419200000 ],
+  "retention_range" : 0,
+  "engine_type" : 2,
+  "storage_type" : 2,
+  "override_kylin_properties" : { }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/data/kylin_intermediate_ssb_19920101000000_19920201000000.csv
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/data/kylin_intermediate_ssb_19920101000000_19920201000000.csv b/examples/test_case_data/localmeta/data/kylin_intermediate_ssb_19920101000000_19920201000000.csv
new file mode 100644
index 0000000..407074f
--- /dev/null
+++ b/examples/test_case_data/localmeta/data/kylin_intermediate_ssb_19920101000000_19920201000000.csv
@@ -0,0 +1,100 @@
+54540,JORDAN   8,MIDDLE EAST,JORDAN,EGYPT    1,MIDDLE EAST,EGYPT,1992,Jan1992,199201,4,3833495,89672,20176290
+304647,JORDAN   8,MIDDLE EAST,JORDAN,IRAQ     5,MIDDLE EAST,IRAQ,1992,Jan1992,199201,3,2081053,99097,23122820
+891817,JORDAN   8,MIDDLE EAST,JORDAN,ALGERIA  1,AFRICA,ALGERIA,1992,Jan1992,199201,4,5670493,108526,29844705
+756262,JORDAN   8,MIDDLE EAST,JORDAN,CHINA    9,ASIA,CHINA,1992,Jan1992,199201,4,6129769,79093,46138050
+666351,JORDAN   8,MIDDLE EAST,JORDAN,RUSSIA   3,EUROPE,RUSSIA,1992,Jan1992,199201,2,4165365,79039,31352216
+835761,JORDAN   8,MIDDLE EAST,JORDAN,MOROCCO  3,AFRICA,MOROCCO,1992,Jan1992,199201,4,1628851,101803,6786880
+359288,JORDAN   8,MIDDLE EAST,JORDAN,EGYPT    4,MIDDLE EAST,EGYPT,1992,Jan1992,199201,2,6014213,80836,45268272
+718610,JORDAN   8,MIDDLE EAST,JORDAN,PERU     1,AMERICA,PERU,1992,Jan1992,199201,2,5543686,97714,48205968
+543324,JORDAN   8,MIDDLE EAST,JORDAN,CANADA   2,AMERICA,CANADA,1992,Jan1992,199201,2,6029793,82038,12305700
+642580,JORDAN   8,MIDDLE EAST,JORDAN,MOROCCO  9,AFRICA,MOROCCO,1992,Jan1992,199201,4,1096236,91353,12180400
+488134,JORDAN   8,MIDDLE EAST,JORDAN,INDONESIA5,ASIA,INDONESIA,1992,Jan1992,199201,4,4852003,67326,42191336
+600300,JORDAN   8,MIDDLE EAST,JORDAN,PERU     4,AMERICA,PERU,1992,Jan1992,199201,3,3948888,72016,25205670
+629068,JORDAN   8,MIDDLE EAST,JORDAN,INDIA    3,ASIA,INDIA,1992,Jan1992,199201,4,493529,59821,498515
+662324,JORDAN   8,MIDDLE EAST,JORDAN,CHINA    4,ASIA,CHINA,1992,Jan1992,199201,2,3668499,77177,31899992
+27105,JORDAN   8,MIDDLE EAST,JORDAN,JORDAN   9,MIDDLE EAST,JORDAN,1992,Jan1992,199201,2,1201364,61926,3715560
+230406,JORDAN   8,MIDDLE EAST,JORDAN,BRAZIL   6,AMERICA,BRAZIL,1992,Jan1992,199201,3,3231391,80183,24322298
+636404,JORDAN   8,MIDDLE EAST,JORDAN,MOZAMBIQU5,AFRICA,MOZAMBIQUE,1992,Jan1992,199201,2,5220741,80422,27477585
+797334,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,JORDAN   5,MIDDLE EAST,JORDAN,1992,Jan1992,199201,4,2665080,85878,5438940
+636211,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,VIETNAM  6,ASIA,VIETNAM,1992,Jan1992,199201,4,4339781,68830,13422006
+412854,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,JAPAN    3,ASIA,JAPAN,1992,Jan1992,199201,4,7065553,106009,53181583
+403310,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,IRAQ     6,MIDDLE EAST,IRAQ,1992,Jan1992,199201,2,798344,72797,5095818
+546702,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,FRANCE   8,EUROPE,FRANCE,1992,Jan1992,199201,4,5945512,104920,0
+831954,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,CHINA    5,ASIA,CHINA,1992,Jan1992,199201,4,8241426,113154,43375930
+15661,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,KENYA    1,AFRICA,KENYA,1992,Jan1992,199201,1,7492288,94599,7567968
+831084,SAUDI ARA4,MIDDLE EAST,SAUDI ARABIA,FRANCE   2,EUROPE,FRANCE,1992,Jan1992,199201,1,2194516,60902,14007552
+283562,ROMANIA  7,EUROPE,ROMANIA,JAPAN    4,ASIA,JAPAN,1992,Jan1992,199201,1,6329027,92733,62594775
+639460,ROMANIA  7,EUROPE,ROMANIA,GERMANY  1,EUROPE,GERMANY,1992,Jan1992,199201,1,1234297,83965,2518974
+263842,ROMANIA  7,EUROPE,ROMANIA,ALGERIA  3,AFRICA,ALGERIA,1992,Jan1992,199201,3,902915,108349,0
+332645,ROMANIA  7,EUROPE,ROMANIA,INDIA    8,ASIA,INDIA,1992,Jan1992,199201,2,6509204,100657,20131560
+957058,ROMANIA  7,EUROPE,ROMANIA,CHINA    0,ASIA,CHINA,1992,Jan1992,199201,3,1555438,66900,11707605
+226995,ROMANIA  7,EUROPE,ROMANIA,KENYA    5,AFRICA,KENYA,1992,Jan1992,199201,2,3974654,115318,25370136
+393867,ROMANIA  7,EUROPE,ROMANIA,ALGERIA  7,AFRICA,ALGERIA,1992,Jan1992,199201,1,4239357,117651,27059730
+998179,ROMANIA  7,EUROPE,ROMANIA,IRAN     7,MIDDLE EAST,IRAN,1992,Jan1992,199201,2,3592566,76627,11111031
+383783,ROMANIA  7,EUROPE,ROMANIA,JAPAN    2,ASIA,JAPAN,1992,Jan1992,199201,1,7370007,112006,47042604
+387948,ROMANIA  7,EUROPE,ROMANIA,BRAZIL   7,AMERICA,BRAZIL,1992,Jan1992,199201,2,9776535,122155,19952114
+379515,ROMANIA  7,EUROPE,ROMANIA,ARGENTINA2,AMERICA,ARGENTINA,1992,Jan1992,199201,3,5190097,95670,39065250
+505473,ROMANIA  7,EUROPE,ROMANIA,ARGENTINA3,AMERICA,ARGENTINA,1992,Jan1992,199201,3,2018084,88707,19959075
+423210,ROMANIA  7,EUROPE,ROMANIA,GERMANY  5,EUROPE,GERMANY,1992,Jan1992,199201,1,322959,67991,1699785
+279170,ROMANIA  7,EUROPE,ROMANIA,IRAQ     5,MIDDLE EAST,IRAQ,1992,Jan1992,199201,2,4914957,68949,48609468
+856452,ROMANIA  7,EUROPE,ROMANIA,RUSSIA   3,EUROPE,RUSSIA,1992,Jan1992,199201,1,3309763,84504,21126150
+816854,ROMANIA  7,EUROPE,ROMANIA,ROMANIA  8,EUROPE,ROMANIA,1992,Jan1992,199201,1,2443717,106248,21249720
+678247,ROMANIA  7,EUROPE,ROMANIA,UNITED KI0,EUROPE,UNITED KINGDOM,1992,Jan1992,199201,1,367563,73512,0
+98372,ROMANIA  7,EUROPE,ROMANIA,FRANCE   0,EUROPE,FRANCE,1992,Jan1992,199201,2,4834665,82222,9866664
+240580,ROMANIA  7,EUROPE,ROMANIA,SAUDI ARA6,MIDDLE EAST,SAUDI ARABIA,1992,Jan1992,199201,1,2744628,91234,14445415
+547655,CHINA    4,ASIA,CHINA,PERU     9,AMERICA,PERU,1992,Jan1992,199201,1,7127209,102157,70488882
+380567,CHINA    4,ASIA,CHINA,PERU     2,AMERICA,PERU,1992,Jan1992,199201,1,3196247,98853,9885300
+266841,CHINA    4,ASIA,CHINA,UNITED ST7,AMERICA,UNITED STATES,1992,Jan1992,199201,1,166320,108469,1446264
+720209,CHINA    4,ASIA,CHINA,UNITED KI9,EUROPE,UNITED KINGDOM,1992,Jan1992,199201,1,5310014,73750,59000160
+751631,CHINA    4,ASIA,CHINA,GERMANY  0,EUROPE,GERMANY,1992,Jan1992,199201,3,2190745,100956,16489480
+843820,CHINA    4,ASIA,CHINA,MOZAMBIQU5,AFRICA,MOZAMBIQUE,1992,Jan1992,199201,1,5587655,105826,23281896
+30096,CHINA    4,ASIA,CHINA,EGYPT    4,MIDDLE EAST,EGYPT,1992,Jan1992,199201,3,2216354,61565,24626160
+675496,CHINA    4,ASIA,CHINA,KENYA    6,AFRICA,KENYA,1992,Jan1992,199201,3,5731336,88287,30164930
+433088,CHINA    4,ASIA,CHINA,INDIA    6,ASIA,INDIA,1992,Jan1992,199201,1,3920870,61263,16336960
+897776,CHINA    4,ASIA,CHINA,JAPAN    9,ASIA,JAPAN,1992,Jan1992,199201,1,8430538,106423,26073831
+784370,CHINA    4,ASIA,CHINA,MOROCCO  0,AFRICA,MOROCCO,1992,Jan1992,199201,1,820247,87260,5235624
+23545,CHINA    4,ASIA,CHINA,BRAZIL   4,AMERICA,BRAZIL,1992,Jan1992,199201,1,4593593,88112,39944288
+296221,CHINA    4,ASIA,CHINA,FRANCE   1,EUROPE,FRANCE,1992,Jan1992,199201,4,1601848,73032,10224564
+706630,CHINA    4,ASIA,CHINA,IRAN     6,MIDDLE EAST,IRAN,1992,Jan1992,199201,3,294588,98196,3273200
+697821,CHINA    4,ASIA,CHINA,EGYPT    7,MIDDLE EAST,EGYPT,1992,Jan1992,199201,1,3721244,109127,28009366
+596762,CHINA    4,ASIA,CHINA,GERMANY  1,EUROPE,GERMANY,1992,Jan1992,199201,2,184015,111524,185874
+659386,CHINA    4,ASIA,CHINA,GERMANY  7,EUROPE,GERMANY,1992,Jan1992,199201,4,3462930,80721,3497910
+184270,CHINA    4,ASIA,CHINA,CANADA   3,AMERICA,CANADA,1992,Jan1992,199201,1,4313349,81256,42659505
+720238,CHINA    4,ASIA,CHINA,ETHIOPIA 2,AFRICA,ETHIOPIA,1992,Jan1992,199201,3,249123,75492,251640
+27452,CHINA    4,ASIA,CHINA,ALGERIA  0,AFRICA,ALGERIA,1992,Jan1992,199201,1,4950846,82767,15311895
+305657,CHINA    4,ASIA,CHINA,INDIA    4,ASIA,INDIA,1992,Jan1992,199201,3,6733692,99758,74818800
+648403,CHINA    4,ASIA,CHINA,JAPAN    3,ASIA,JAPAN,1992,Jan1992,199201,3,5112232,81082,15811029
+176995,CHINA    4,ASIA,CHINA,INDONESIA7,ASIA,INDONESIA,1992,Jan1992,199201,3,5202766,124319,39160611
+70310,CHINA    4,ASIA,CHINA,UNITED KI6,EUROPE,UNITED KINGDOM,1992,Jan1992,199201,1,4711540,76818,40969920
+255617,CHINA    4,ASIA,CHINA,MOROCCO  9,AFRICA,MOROCCO,1992,Jan1992,199201,2,4560540,94356,0
+75211,CHINA    4,ASIA,CHINA,IRAN     7,MIDDLE EAST,IRAN,1992,Jan1992,199201,1,3345112,71172,21351780
+816962,CHINA    4,ASIA,CHINA,FRANCE   0,EUROPE,FRANCE,1992,Jan1992,199201,3,1037163,112735,9018816
+316538,CHINA    4,ASIA,CHINA,SAUDI ARA1,MIDDLE EAST,SAUDI ARABIA,1992,Jan1992,199201,3,572063,93271,4974464
+149141,CHINA    4,ASIA,CHINA,VIETNAM  5,ASIA,VIETNAM,1992,Jan1992,199201,2,1006858,71408,6426756
+115842,CANADA   4,AMERICA,CANADA,RUSSIA   2,EUROPE,RUSSIA,1992,Jan1992,199201,5,6599047,111470,27496032
+777719,CANADA   4,AMERICA,CANADA,ARGENTINA7,AMERICA,ARGENTINA,1992,Jan1992,199201,5,2730953,107800,14373440
+119251,CANADA   4,AMERICA,CANADA,FRANCE   2,EUROPE,FRANCE,1992,Jan1992,199201,3,4066070,76215,12575475
+944695,CANADA   4,AMERICA,CANADA,VIETNAM  8,ASIA,VIETNAM,1992,Jan1992,199201,5,6544563,104379,6610670
+718372,CANADA   4,AMERICA,CANADA,UNITED KI3,EUROPE,UNITED KINGDOM,1992,Jan1992,199201,5,5943703,83420,31282650
+523579,CANADA   4,AMERICA,CANADA,UNITED ST5,AMERICA,UNITED STATES,1992,Jan1992,199201,2,6929426,96153,44230380
+668042,CANADA   4,AMERICA,CANADA,IRAQ     4,MIDDLE EAST,IRAQ,1992,Jan1992,199201,5,1484714,60600,3030030
+235495,CANADA   4,AMERICA,CANADA,INDONESIA9,ASIA,INDONESIA,1992,Jan1992,199201,3,823956,85828,3433152
+59728,CANADA   4,AMERICA,CANADA,PERU     0,AMERICA,PERU,1992,Jan1992,199201,3,7608241,101263,66158624
+951869,CANADA   4,AMERICA,CANADA,ALGERIA  4,AFRICA,ALGERIA,1992,Jan1992,199201,3,2297300,115249,19976528
+527596,RUSSIA   8,EUROPE,RUSSIA,SAUDI ARA7,MIDDLE EAST,SAUDI ARABIA,1992,Jan1992,199201,3,1045579,97414,9091992
+11320,RUSSIA   8,EUROPE,RUSSIA,MOZAMBIQU0,AFRICA,MOZAMBIQUE,1992,Jan1992,199201,3,4658083,73879,14406444
+355756,RUSSIA   8,EUROPE,RUSSIA,ALGERIA  9,AFRICA,ALGERIA,1992,Jan1992,199201,4,6853812,108704,21197358
+292956,RUSSIA   8,EUROPE,RUSSIA,BRAZIL   7,AMERICA,BRAZIL,1992,Jan1992,199201,3,4437736,116936,4482562
+429513,RUSSIA   8,EUROPE,RUSSIA,UNITED ST3,AMERICA,UNITED STATES,1992,Jan1992,199201,5,3917802,86549,12116916
+728473,RUSSIA   8,EUROPE,RUSSIA,MOROCCO  1,AFRICA,MOROCCO,1992,Jan1992,199201,5,4092925,90086,26125056
+83255,RUSSIA   8,EUROPE,RUSSIA,CANADA   6,AMERICA,CANADA,1992,Jan1992,199201,2,3095625,74295,0
+265369,RUSSIA   8,EUROPE,RUSSIA,ARGENTINA3,AMERICA,ARGENTINA,1992,Jan1992,199201,2,6342165,80061,19614945
+478118,RUSSIA   8,EUROPE,RUSSIA,PERU     7,AMERICA,PERU,1992,Jan1992,199201,5,4557542,65765,4603578
+85918,RUSSIA   8,EUROPE,RUSSIA,EGYPT    1,MIDDLE EAST,EGYPT,1992,Jan1992,199201,3,519767,114234,5140557
+694781,RUSSIA   8,EUROPE,RUSSIA,PERU     9,AMERICA,PERU,1992,Jan1992,199201,3,843481,106545,4439375
+810359,RUSSIA   8,EUROPE,RUSSIA,CANADA   6,AMERICA,CANADA,1992,Jan1992,199201,5,5666199,76158,42648816
+248440,RUSSIA   8,EUROPE,RUSSIA,UNITED KI6,EUROPE,UNITED KINGDOM,1992,Jan1992,199201,3,1616132,83305,4998348
+969066,RUSSIA   8,EUROPE,RUSSIA,RUSSIA   0,EUROPE,RUSSIA,1992,Jan1992,199201,2,3523102,68101,10896192
+377269,MOZAMBIQU4,AFRICA,MOZAMBIQUE,MOROCCO  2,AFRICA,MOROCCO,1992,Jan1992,199201,2,1466066,80775,1480875
+744978,MOZAMBIQU4,AFRICA,MOZAMBIQUE,MOROCCO  9,AFRICA,MOROCCO,1992,Jan1992,199201,2,196225,121376,606882
+931091,MOZAMBIQU4,AFRICA,MOZAMBIQUE,RUSSIA   6,EUROPE,RUSSIA,1992,Jan1992,199201,4,769726,67323,1570870

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/model_desc/ssb.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/model_desc/ssb.json b/examples/test_case_data/localmeta/model_desc/ssb.json
new file mode 100644
index 0000000..e8c0de0
--- /dev/null
+++ b/examples/test_case_data/localmeta/model_desc/ssb.json
@@ -0,0 +1,65 @@
+{
+  "uuid" : "cd92588f-b987-4a12-b90f-e32c44345c64",
+  "version" : "2.1",
+  "name" : "ssb",
+  "description" : "",
+  "lookups" : [ {
+    "table" : "SSB.PART",
+    "join" : {
+      "type" : "left",
+      "primary_key" : [ "P_PARTKEY" ],
+      "foreign_key" : [ "LO_PARTKEY" ]
+    }
+  }, {
+    "table" : "SSB.CUSTOMER",
+    "join" : {
+      "type" : "left",
+      "primary_key" : [ "C_CUSTKEY" ],
+      "foreign_key" : [ "LO_CUSTKEY" ]
+    }
+  }, {
+    "table" : "SSB.SUPPLIER",
+    "join" : {
+      "type" : "left",
+      "primary_key" : [ "S_SUPPKEY" ],
+      "foreign_key" : [ "LO_SUPPKEY" ]
+    }
+  }, {
+    "table" : "SSB.DATES",
+    "join" : {
+      "type" : "left",
+      "primary_key" : [ "D_DATEKEY" ],
+      "foreign_key" : [ "LO_ORDERDATE" ]
+    }
+  } ],
+  "dimensions" : [ {
+    "table" : "SSB.V_LINEORDER",
+    "columns" : [ "LO_DATE" ]
+  }, {
+    "table" : "SSB.PART",
+    "columns" : [ "P_MFGR", "P_CATEGORY", "P_BRAND" ]
+  }, {
+    "table" : "SSB.CUSTOMER",
+    "columns" : [ "C_CITY", "C_NATION", "C_REGION" ]
+  }, {
+    "table" : "SSB.SUPPLIER",
+    "columns" : [ "S_CITY", "S_NATION", "S_REGION" ]
+  }, {
+    "table" : "SSB.DATES",
+    "columns" : [ "D_YEAR", "D_YEARMONTHNUM", "D_YEARMONTH", "D_WEEKNUMINYEAR" ]
+  } ],
+  "metrics" : [ "LO_REVENUE", "LO_SUPPLYCOST", "V_REVENUE" ],
+  "capacity" : "MEDIUM",
+  "last_modified" : 1457444314662,
+  "fact_table" : "SSB.V_LINEORDER",
+  "filter_condition" : "",
+  "partition_desc" : {
+    "partition_date_column" : "SSB.V_LINEORDER.LO_DATE",
+    "partition_time_column" : null,
+    "partition_date_start" : 0,
+    "partition_date_format" : "yyyyMMdd",
+    "partition_time_format" : "HH:mm:ss",
+    "partition_type" : "APPEND",
+    "partition_condition_builder" : "org.apache.kylin.metadata.model.PartitionDesc$DefaultPartitionConditionBuilder"
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/table/SSB.CUSTOMER.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/SSB.CUSTOMER.json b/examples/test_case_data/localmeta/table/SSB.CUSTOMER.json
new file mode 100644
index 0000000..ab92352
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/SSB.CUSTOMER.json
@@ -0,0 +1,41 @@
+{
+  "uuid" : "d70320ec-949f-44df-8bf4-92dc005dd07d",
+  "version" : "2.1",
+  "name" : "CUSTOMER",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "C_CUSTKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "2",
+    "name" : "C_NAME",
+    "datatype" : "varchar(25)"
+  }, {
+    "id" : "3",
+    "name" : "C_ADDRESS",
+    "datatype" : "varchar(40)"
+  }, {
+    "id" : "4",
+    "name" : "C_CITY",
+    "datatype" : "varchar(10)"
+  }, {
+    "id" : "5",
+    "name" : "C_NATION",
+    "datatype" : "varchar(15)"
+  }, {
+    "id" : "6",
+    "name" : "C_REGION",
+    "datatype" : "varchar(12)"
+  }, {
+    "id" : "7",
+    "name" : "C_PHONE",
+    "datatype" : "varchar(15)"
+  }, {
+    "id" : "8",
+    "name" : "C_MKTSEGMENT",
+    "datatype" : "varchar(10)"
+  } ],
+  "database" : "SSB",
+  "last_modified" : 1457444146362,
+  "source_type" : 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/table/SSB.DATES.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/SSB.DATES.json b/examples/test_case_data/localmeta/table/SSB.DATES.json
new file mode 100644
index 0000000..ed93c2d
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/SSB.DATES.json
@@ -0,0 +1,77 @@
+{
+  "uuid" : "38d2a2ee-2968-4f09-94b5-6925ba27a699",
+  "version" : "2.1",
+  "name" : "DATES",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "D_DATEKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "2",
+    "name" : "D_DATE",
+    "datatype" : "varchar(18)"
+  }, {
+    "id" : "3",
+    "name" : "D_DAYOFWEEK",
+    "datatype" : "varchar(8)"
+  }, {
+    "id" : "4",
+    "name" : "D_MONTH",
+    "datatype" : "varchar(9)"
+  }, {
+    "id" : "5",
+    "name" : "D_YEAR",
+    "datatype" : "integer"
+  }, {
+    "id" : "6",
+    "name" : "D_YEARMONTHNUM",
+    "datatype" : "integer"
+  }, {
+    "id" : "7",
+    "name" : "D_YEARMONTH",
+    "datatype" : "varchar(7)"
+  }, {
+    "id" : "8",
+    "name" : "D_DAYNUMINWEEK",
+    "datatype" : "integer"
+  }, {
+    "id" : "9",
+    "name" : "D_DAYNUMINMONTH",
+    "datatype" : "integer"
+  }, {
+    "id" : "10",
+    "name" : "D_DAYNUMINYEAR",
+    "datatype" : "integer"
+  }, {
+    "id" : "11",
+    "name" : "D_MONTHNUMINYEAR",
+    "datatype" : "integer"
+  }, {
+    "id" : "12",
+    "name" : "D_WEEKNUMINYEAR",
+    "datatype" : "integer"
+  }, {
+    "id" : "13",
+    "name" : "D_SELLINGSEASON",
+    "datatype" : "varchar(12)"
+  }, {
+    "id" : "14",
+    "name" : "D_LASTDAYINWEEKFL",
+    "datatype" : "integer"
+  }, {
+    "id" : "15",
+    "name" : "D_LASTDAYINMONTHFL",
+    "datatype" : "integer"
+  }, {
+    "id" : "16",
+    "name" : "D_HOLIDAYFL",
+    "datatype" : "integer"
+  }, {
+    "id" : "17",
+    "name" : "D_WEEKDAYFL",
+    "datatype" : "integer"
+  } ],
+  "database" : "SSB",
+  "last_modified" : 1457444145262,
+  "source_type" : 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/table/SSB.PART.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/SSB.PART.json b/examples/test_case_data/localmeta/table/SSB.PART.json
new file mode 100644
index 0000000..7b3230e
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/SSB.PART.json
@@ -0,0 +1,45 @@
+{
+  "uuid" : "e82e7622-ff20-4f0a-9d0d-75524034b304",
+  "version" : "2.1",
+  "name" : "PART",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "P_PARTKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "2",
+    "name" : "P_NAME",
+    "datatype" : "varchar(22)"
+  }, {
+    "id" : "3",
+    "name" : "P_MFGR",
+    "datatype" : "varchar(6)"
+  }, {
+    "id" : "4",
+    "name" : "P_CATEGORY",
+    "datatype" : "varchar(7)"
+  }, {
+    "id" : "5",
+    "name" : "P_BRAND",
+    "datatype" : "varchar(9)"
+  }, {
+    "id" : "6",
+    "name" : "P_COLOR",
+    "datatype" : "varchar(11)"
+  }, {
+    "id" : "7",
+    "name" : "P_TYPE",
+    "datatype" : "varchar(25)"
+  }, {
+    "id" : "8",
+    "name" : "P_SIZE",
+    "datatype" : "integer"
+  }, {
+    "id" : "9",
+    "name" : "P_CONTAINER",
+    "datatype" : "varchar(10)"
+  } ],
+  "database" : "SSB",
+  "last_modified" : 1457444145980,
+  "source_type" : 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/table/SSB.SUPPLIER.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/SSB.SUPPLIER.json b/examples/test_case_data/localmeta/table/SSB.SUPPLIER.json
new file mode 100644
index 0000000..ba6931e
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/SSB.SUPPLIER.json
@@ -0,0 +1,37 @@
+{
+  "uuid" : "96b155b7-89e9-42dc-8621-d4bbae823b70",
+  "version" : "2.1",
+  "name" : "SUPPLIER",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "S_SUPPKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "2",
+    "name" : "S_NAME",
+    "datatype" : "varchar(25)"
+  }, {
+    "id" : "3",
+    "name" : "S_ADDRESS",
+    "datatype" : "varchar(25)"
+  }, {
+    "id" : "4",
+    "name" : "S_CITY",
+    "datatype" : "varchar(10)"
+  }, {
+    "id" : "5",
+    "name" : "S_NATION",
+    "datatype" : "varchar(15)"
+  }, {
+    "id" : "6",
+    "name" : "S_REGION",
+    "datatype" : "varchar(12)"
+  }, {
+    "id" : "7",
+    "name" : "S_PHONE",
+    "datatype" : "varchar(15)"
+  } ],
+  "database" : "SSB",
+  "last_modified" : 1457444146835,
+  "source_type" : 0
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/8590b2d2/examples/test_case_data/localmeta/table/SSB.V_LINEORDER.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/table/SSB.V_LINEORDER.json b/examples/test_case_data/localmeta/table/SSB.V_LINEORDER.json
new file mode 100644
index 0000000..4c9c8d6
--- /dev/null
+++ b/examples/test_case_data/localmeta/table/SSB.V_LINEORDER.json
@@ -0,0 +1,85 @@
+{
+  "uuid" : "b017d54b-e7b7-465b-a4db-b47f68baf1ad",
+  "version" : "2.1",
+  "name" : "V_LINEORDER",
+  "columns" : [ {
+    "id" : "1",
+    "name" : "LO_ORDERKEY",
+    "datatype" : "bigint"
+  }, {
+    "id" : "2",
+    "name" : "LO_LINENUMBER",
+    "datatype" : "bigint"
+  }, {
+    "id" : "3",
+    "name" : "LO_CUSTKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "4",
+    "name" : "LO_PARTKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "5",
+    "name" : "LO_SUPPKEY",
+    "datatype" : "integer"
+  }, {
+    "id" : "6",
+    "name" : "LO_DATE",
+    "datatype" : "varchar(256)"
+  }, {
+    "id" : "7",
+    "name" : "LO_ORDERDATE",
+    "datatype" : "integer"
+  }, {
+    "id" : "8",
+    "name" : "LO_ORDERPRIOTITY",
+    "datatype" : "varchar(15)"
+  }, {
+    "id" : "9",
+    "name" : "LO_SHIPPRIOTITY",
+    "datatype" : "integer"
+  }, {
+    "id" : "10",
+    "name" : "LO_QUANTITY",
+    "datatype" : "bigint"
+  }, {
+    "id" : "11",
+    "name" : "LO_EXTENDEDPRICE",
+    "datatype" : "bigint"
+  }, {
+    "id" : "12",
+    "name" : "LO_ORDTOTALPRICE",
+    "datatype" : "bigint"
+  }, {
+    "id" : "13",
+    "name" : "LO_DISCOUNT",
+    "datatype" : "bigint"
+  }, {
+    "id" : "14",
+    "name" : "LO_REVENUE",
+    "datatype" : "bigint"
+  }, {
+    "id" : "15",
+    "name" : "LO_SUPPLYCOST",
+    "datatype" : "bigint"
+  }, {
+    "id" : "16",
+    "name" : "LO_TAX",
+    "datatype" : "bigint"
+  }, {
+    "id" : "17",
+    "name" : "LO_COMMITDATE",
+    "datatype" : "integer"
+  }, {
+    "id" : "18",
+    "name" : "LO_SHIPMODE",
+    "datatype" : "varchar(10)"
+  }, {
+    "id" : "19",
+    "name" : "V_REVENUE",
+    "datatype" : "bigint"
+  } ],
+  "database" : "SSB",
+  "last_modified" : 1457444145578,
+  "source_type" : 0
+}
\ No newline at end of file