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