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 2015/08/10 12:13:39 UTC

[3/3] incubator-kylin git commit: KYLIN-934 automatically upgrade metrics that may overflow

KYLIN-934 automatically upgrade metrics that may overflow


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

Branch: refs/heads/0.8
Commit: 448b38225144c65313e458d0ed4856eb729d46fe
Parents: bf01246
Author: honma <ho...@ebay.com>
Authored: Fri Aug 7 12:53:27 2015 +0800
Committer: honma <ho...@ebay.com>
Committed: Mon Aug 10 18:13:14 2015 +0800

----------------------------------------------------------------------
 .../metadata/model/IntermediateColumnDesc.java  |  2 --
 .../kylin/metadata/project/ProjectL2Cache.java  | 17 ++++++++----
 .../kylin/metadata/project/ProjectManager.java  | 21 +++++++++------
 .../kylin/invertedindex/model/IIDesc.java       |  7 +++--
 .../kylin/query/relnode/OLAPAggregateRel.java   |  4 ++-
 .../apache/kylin/query/schema/OLAPTable.java    | 28 +++++++++++++++++---
 .../kylin/query/test/ITKylinQueryTest.java      |  2 +-
 .../apache/kylin/query/test/KylinTestBase.java  |  2 +-
 query/src/test/resources/query/sql/query10.sql  |  2 +-
 query/src/test/resources/query/sql/query20.sql  |  2 +-
 query/src/test/resources/query/sql/query30.sql  |  2 +-
 query/src/test/resources/query/sql/query40.sql  |  2 +-
 query/src/test/resources/query/sql/query50.sql  |  2 +-
 query/src/test/resources/query/sql/query60.sql  |  2 +-
 query/src/test/resources/query/sql/query70.sql  |  2 +-
 query/src/test/resources/query/sql/query80.sql  |  3 ++-
 .../src/test/resources/query/sql_ii/query04.sql |  2 +-
 .../src/test/resources/query/sql_ii/query08.sql |  2 +-
 .../storage/hbase/HBaseMetadataTestCase.java    | 12 ++++++---
 19 files changed, 80 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/core-metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java b/core-metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
index 9dbe63e..10a3795 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
@@ -18,8 +18,6 @@
 
 package org.apache.kylin.metadata.model;
 
-import org.apache.kylin.metadata.model.TblColRef;
-
 /**
  */
 public class IntermediateColumnDesc {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
index 6c153ad..fda2014 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectL2Cache.java
@@ -24,7 +24,11 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.kylin.metadata.MetadataManager;
-import org.apache.kylin.metadata.model.*;
+import org.apache.kylin.metadata.model.ColumnDesc;
+import org.apache.kylin.metadata.model.FunctionDesc;
+import org.apache.kylin.metadata.model.MeasureDesc;
+import org.apache.kylin.metadata.model.TableDesc;
+import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.metadata.realization.RealizationRegistry;
 import org.slf4j.Logger;
@@ -90,7 +94,6 @@ class ProjectL2Cache {
         if (tableCache == null)
             return false;
 
-
         for (ColumnDesc colDesc : tableCache.exposedColumns) {
             if (colDesc.getName().equals(col))
                 return true;
@@ -122,15 +125,19 @@ class ProjectL2Cache {
         return result;
     }
 
-    public List<MeasureDesc> listEffectiveRewriteMeasures(String project, String factTable) {
+    public List<MeasureDesc> listEffectiveRewriteMeasures(String project, String factTable, boolean onlyRewriteMeasure) {
         Set<IRealization> realizations = getRealizationsByTable(project, factTable);
         List<MeasureDesc> result = Lists.newArrayList();
         for (IRealization r : realizations) {
             if (r.getFactTable().equalsIgnoreCase(factTable) && r.isReady()) {
                 for (MeasureDesc m : r.getMeasures()) {
                     FunctionDesc func = m.getFunction();
-                    if (func.needRewrite())
+                    if (onlyRewriteMeasure) {
+                        if (func.needRewrite())
+                            result.add(m);
+                    } else {
                         result.add(m);
+                    }
                 }
             }
         }
@@ -192,7 +199,7 @@ class ProjectL2Cache {
 
     // check all columns reported by realization does exists
     private boolean sanityCheck(ProjectCache prjCache, IRealization realization) {
-        if(realization == null)
+        if (realization == null)
             return false;
 
         MetadataManager metaMgr = mgr.getMetadataManager();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
index dd146d9..fd41f59 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/project/ProjectManager.java
@@ -18,7 +18,13 @@
 
 package org.apache.kylin.metadata.project;
 
-import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.persistence.JsonSerializer;
 import org.apache.kylin.common.persistence.ResourceStore;
@@ -35,12 +41,7 @@ import org.apache.kylin.metadata.realization.RealizationType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
+import com.google.common.collect.Lists;
 
 public class ProjectManager {
     private static final Logger logger = LoggerFactory.getLogger(ProjectManager.class);
@@ -361,7 +362,11 @@ public class ProjectManager {
     }
 
     public List<MeasureDesc> listEffectiveRewriteMeasures(String project, String factTable) {
-        return l2Cache.listEffectiveRewriteMeasures(norm(project), factTable.toUpperCase());
+        return l2Cache.listEffectiveRewriteMeasures(norm(project), factTable.toUpperCase(), true);
+    }
+
+    public List<MeasureDesc> listEffectiveMeasures(String project, String factTable) {
+        return l2Cache.listEffectiveRewriteMeasures(norm(project), factTable.toUpperCase(), false);
     }
 
     KylinConfig getConfig() {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java
----------------------------------------------------------------------
diff --git a/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java b/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java
index f159346..fee16ba 100644
--- a/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java
+++ b/invertedindex/src/main/java/org/apache/kylin/invertedindex/model/IIDesc.java
@@ -133,7 +133,7 @@ public class IIDesc extends RootPersistentEntity {
                 TblColRef tcr = new TblColRef(columnDesc);
                 allColumns.add(tcr);
                 allDimensions.add(tcr);
-                measureDescs.add(makeHLLMeasure(columnDesc, null));
+                measureDescs.add(makeHLLMeasure(columnDesc, "hllc10"));
             }
 
             if (!allTableNames.contains(tableDesc.getIdentity())) {
@@ -222,6 +222,10 @@ public class IIDesc extends RootPersistentEntity {
         p1.setColRefs(ImmutableList.of(new TblColRef(columnDesc)));
         f1.setParameter(p1);
         f1.setReturnType(returnType);
+        if (f1.getReturnDataType().isIntegerFamily()) {
+            f1.setReturnType("bigint");
+        }
+
         measureDesc.setFunction(f1);
         measureDesc.setName(func + "_" + columnName);
         return measureDesc;
@@ -335,7 +339,6 @@ public class IIDesc extends RootPersistentEntity {
         return sliceSize;
     }
 
-
     public String getSignature() {
         return signature;
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
index b9adb4a..e950911 100644
--- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
+++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java
@@ -177,13 +177,15 @@ public class OLAPAggregateRel extends Aggregate implements OLAPRel {
     }
 
     private TblColRef buildRewriteColumn(FunctionDesc aggFunc) {
-        TblColRef colRef = null;
+        TblColRef colRef;
         if (aggFunc.needRewrite()) {
             ColumnDesc column = new ColumnDesc();
             column.setName(aggFunc.getRewriteFieldName());
             TableDesc table = this.context.firstTableScan.getOlapTable().getSourceTable();
             column.setTable(table);
             colRef = new TblColRef(column);
+        } else {
+            throw new IllegalStateException("buildRewriteColumn on a aggrFunc that does not need rewrite " + aggFunc);
         }
         return colRef;
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
----------------------------------------------------------------------
diff --git a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
index 25a7b24..94a91bf 100644
--- a/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
+++ b/query/src/main/java/org/apache/kylin/query/schema/OLAPTable.java
@@ -52,7 +52,9 @@ import org.apache.kylin.query.enumerator.OLAPQuery;
 import org.apache.kylin.query.enumerator.OLAPQuery.EnumeratorTypeEnum;
 import org.apache.kylin.query.relnode.OLAPTableScan;
 
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
 
 /**
  */
@@ -161,21 +163,41 @@ public class OLAPTable extends AbstractQueryableTable implements TranslatableTab
 
     private List<ColumnDesc> listSourceColumns() {
         ProjectManager mgr = ProjectManager.getInstance(olapSchema.getConfig());
-        List<ColumnDesc> exposedColumns = Lists.newArrayList(mgr.listExposedColumns(olapSchema.getProjectName(), sourceTable.getIdentity()));
+        List<ColumnDesc> tableColumns = Lists.newArrayList(mgr.listExposedColumns(olapSchema.getProjectName(), sourceTable.getIdentity()));
 
+        List<ColumnDesc> metricColumns = Lists.newArrayList();
         List<MeasureDesc> countMeasures = mgr.listEffectiveRewriteMeasures(olapSchema.getProjectName(), sourceTable.getIdentity());
         HashSet<String> metFields = new HashSet<String>();
         for (MeasureDesc m : countMeasures) {
+
             FunctionDesc func = m.getFunction();
             String fieldName = func.getRewriteFieldName();
             if (!metFields.contains(fieldName)) {
                 metFields.add(fieldName);
                 ColumnDesc fakeCountCol = func.newFakeRewriteColumn(sourceTable);
-                exposedColumns.add(fakeCountCol);
+                metricColumns.add(fakeCountCol);
             }
         }
 
-        return exposedColumns;
+        //if exist sum(x), where x is integer/short/byte
+        //to avoid overflow we upgrade x's type to long
+        HashSet<ColumnDesc> updateColumns = Sets.newHashSet();
+        for (MeasureDesc m : mgr.listEffectiveMeasures(olapSchema.getProjectName(), sourceTable.getIdentity())) {
+            if (m.getFunction().isSum()) {
+                FunctionDesc functionDesc = m.getFunction();
+                if (functionDesc.getReturnDataType() != functionDesc.getSQLType() && //
+                        functionDesc.getReturnDataType().isBigInt() && //
+                        functionDesc.getSQLType().isIntegerFamily()) {
+                    updateColumns.add(functionDesc.getParameter().getColRefs().get(0).getColumnDesc());
+                }
+            }
+        }
+        for (ColumnDesc upgrade : updateColumns) {
+            int index = tableColumns.indexOf(upgrade);
+            tableColumns.get(index).setDatatype("bigint");
+        }
+
+        return Lists.newArrayList(Iterables.concat(tableColumns, metricColumns));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/java/org/apache/kylin/query/test/ITKylinQueryTest.java
----------------------------------------------------------------------
diff --git a/query/src/test/java/org/apache/kylin/query/test/ITKylinQueryTest.java b/query/src/test/java/org/apache/kylin/query/test/ITKylinQueryTest.java
index 48578af..39f74e3 100644
--- a/query/src/test/java/org/apache/kylin/query/test/ITKylinQueryTest.java
+++ b/query/src/test/java/org/apache/kylin/query/test/ITKylinQueryTest.java
@@ -95,7 +95,7 @@ public class ITKylinQueryTest extends KylinTestBase {
     @Test
     public void testSingleRunQuery() throws Exception {
 
-        String queryFileName = "src/test/resources/query/sql_streaming/query07.sql";
+        String queryFileName = "src/test/resources/query/sql/query10.sql";
 
         File sqlFile = new File(queryFileName);
         if (sqlFile.exists()) {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/java/org/apache/kylin/query/test/KylinTestBase.java
----------------------------------------------------------------------
diff --git a/query/src/test/java/org/apache/kylin/query/test/KylinTestBase.java b/query/src/test/java/org/apache/kylin/query/test/KylinTestBase.java
index 14c16b8..7056929 100644
--- a/query/src/test/java/org/apache/kylin/query/test/KylinTestBase.java
+++ b/query/src/test/java/org/apache/kylin/query/test/KylinTestBase.java
@@ -245,7 +245,7 @@ public class KylinTestBase {
         if (needSort) {
             queryTable = new SortedTable(queryTable, columnNames);
         }
-        // printResult(queryTable);
+         printResult(queryTable);
         return queryTable;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query10.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query10.sql b/query/src/test/resources/query/sql/query10.sql
index d2aa8db..d67d3a4 100644
--- a/query/src/test/resources/query/sql/query10.sql
+++ b/query/src/test/resources/query/sql/query10.sql
@@ -17,7 +17,7 @@
 --
 
 select test_cal_dt.week_beg_dt,sum(test_kylin_fact.price) as GMV 
- , count(*) as TRANS_CNT 
+ , count(*) as TRANS_CNT , sum(test_kylin_fact.item_count) as total_items
  from test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query20.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query20.sql b/query/src/test/resources/query/sql/query20.sql
index 6a3198c..5958037 100644
--- a/query/src/test/resources/query/sql/query20.sql
+++ b/query/src/test/resources/query/sql/query20.sql
@@ -19,7 +19,7 @@
 SELECT 
  test_cal_dt.week_beg_dt 
  ,test_category_groupings.meta_categ_name 
- ,sum(price) as GMV, count(*) as TRANS_CNT 
+ ,sum(price) as GMV, count(*) as TRANS_CNT , sum(test_kylin_fact.item_count) as total_items
  FROM test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query30.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query30.sql b/query/src/test/resources/query/sql/query30.sql
index 35e37a1..4d7011f 100644
--- a/query/src/test/resources/query/sql/query30.sql
+++ b/query/src/test/resources/query/sql/query30.sql
@@ -16,4 +16,4 @@
 -- limitations under the License.
 --
 
-select sum(price) as GMV, count(1) as TRANS_CNT from test_kylin_fact limit 50 
+select sum(price) as GMV, count(1) as TRANS_CNT ,  sum(test_kylin_fact.item_count) as total_items from test_kylin_fact limit 50 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query40.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query40.sql b/query/src/test/resources/query/sql/query40.sql
index 74484cc..a6705b5 100644
--- a/query/src/test/resources/query/sql/query40.sql
+++ b/query/src/test/resources/query/sql/query40.sql
@@ -16,7 +16,7 @@
 -- limitations under the License.
 --
 
-select cal_dt, lstg_format_name, sum(price) as GMV 
+select cal_dt, lstg_format_name, sum(price) as GMV , sum(test_kylin_fact.item_count) as total_items
  from test_kylin_fact 
  where cal_dt between date '2013-05-06' and date '2013-07-31' 
  group by cal_dt, lstg_format_name 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query50.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query50.sql b/query/src/test/resources/query/sql/query50.sql
index 98fde6f..286e2df 100644
--- a/query/src/test/resources/query/sql/query50.sql
+++ b/query/src/test/resources/query/sql/query50.sql
@@ -17,7 +17,7 @@
 --
 
 select test_kylin_fact.lstg_format_name, test_cal_dt.week_beg_dt,sum(test_kylin_fact.price) as GMV 
- , count(*) as TRANS_CNT 
+ , count(*) as TRANS_CNT , sum(test_kylin_fact.item_count) as total_items
  from test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query60.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query60.sql b/query/src/test/resources/query/sql/query60.sql
index c58bd56..9881637 100644
--- a/query/src/test/resources/query/sql/query60.sql
+++ b/query/src/test/resources/query/sql/query60.sql
@@ -16,7 +16,7 @@
 -- limitations under the License.
 --
 
-select test_kylin_fact.cal_dt, sum(test_kylin_fact.price) as sum_price, count(1) as cnt_1
+select test_kylin_fact.cal_dt, sum(test_kylin_fact.price) as sum_price, count(1) as cnt_1, sum(test_kylin_fact.item_count) as total_items
 from test_kylin_fact 
 inner JOIN edw.test_cal_dt as test_cal_dt
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query70.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query70.sql b/query/src/test/resources/query/sql/query70.sql
index 26b6eb2..a0aa8b3 100644
--- a/query/src/test/resources/query/sql/query70.sql
+++ b/query/src/test/resources/query/sql/query70.sql
@@ -18,7 +18,7 @@
 
 select lstg_format_name, 
  sum(price) as GMV, 
- count(1) as TRANS_CNT 
+ count(1) as TRANS_CNT , sum(test_kylin_fact.item_count) as total_items
  from test_kylin_fact 
  where "TEST_KYLIN_FACT"."LSTG_FORMAT_NAME" = 'Auction' and (CASE WHEN ("TEST_KYLIN_FACT"."LSTG_FORMAT_NAME" IN ('Auction', 'FP-GTC')) THEN 'Auction' ELSE "TEST_KYLIN_FACT"."LSTG_FORMAT_NAME" END) = 'Auction'
  group by lstg_format_name 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql/query80.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql/query80.sql b/query/src/test/resources/query/sql/query80.sql
index 1bcc90b..0e2dbb4 100644
--- a/query/src/test/resources/query/sql/query80.sql
+++ b/query/src/test/resources/query/sql/query80.sql
@@ -18,7 +18,8 @@
 
 SELECT
  min(test_cal_dt.cal_dt) as mmin
- ,max(test_cal_dt.cal_dt) as mmax
+ ,max(test_cal_dt.cal_dt) as mmax,
+  sum(test_kylin_fact.item_count) as total_items
  FROM test_kylin_fact
  inner JOIN edw.test_cal_dt as test_cal_dt
  ON test_kylin_fact.cal_dt = test_cal_dt.cal_dt

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql_ii/query04.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql_ii/query04.sql b/query/src/test/resources/query/sql_ii/query04.sql
index 5b1e29d..4a75fba 100644
--- a/query/src/test/resources/query/sql_ii/query04.sql
+++ b/query/src/test/resources/query/sql_ii/query04.sql
@@ -16,4 +16,4 @@
 -- limitations under the License.
 --
 
-select TRANS_ID,CAL_DT,LSTG_FORMAT_NAME,LEAF_CATEG_ID,LSTG_SITE_ID,SLR_SEGMENT_CD,PRICE,ITEM_COUNT,SELLER_ID from test_kylin_fact where LSTG_FORMAT_NAME = 'ABIN'
+select TRANS_ID,CAL_DT,LSTG_FORMAT_NAME,LEAF_CATEG_ID,LSTG_SITE_ID,SLR_SEGMENT_CD,PRICE,SELLER_ID from test_kylin_fact where LSTG_FORMAT_NAME = 'ABIN'

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/query/src/test/resources/query/sql_ii/query08.sql
----------------------------------------------------------------------
diff --git a/query/src/test/resources/query/sql_ii/query08.sql b/query/src/test/resources/query/sql_ii/query08.sql
index 242cb22..51a676d 100644
--- a/query/src/test/resources/query/sql_ii/query08.sql
+++ b/query/src/test/resources/query/sql_ii/query08.sql
@@ -16,4 +16,4 @@
 -- limitations under the License.
 --
 
-select TRANS_ID,CAL_DT,LSTG_FORMAT_NAME,LEAF_CATEG_ID,LSTG_SITE_ID,SLR_SEGMENT_CD,PRICE,ITEM_COUNT,SELLER_ID from test_kylin_fact where LSTG_FORMAT_NAME > 'ABIN'
+select TRANS_ID,CAL_DT,LSTG_FORMAT_NAME,LEAF_CATEG_ID,LSTG_SITE_ID,SLR_SEGMENT_CD,PRICE,SELLER_ID from test_kylin_fact where LSTG_FORMAT_NAME > 'ABIN'

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/448b3822/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/HBaseMetadataTestCase.java
----------------------------------------------------------------------
diff --git a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/HBaseMetadataTestCase.java b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/HBaseMetadataTestCase.java
index 0926604..7226793 100644
--- a/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/HBaseMetadataTestCase.java
+++ b/storage-hbase/src/test/java/org/apache/kylin/storage/hbase/HBaseMetadataTestCase.java
@@ -18,12 +18,13 @@
 
 package org.apache.kylin.storage.hbase;
 
+import java.io.File;
+
+import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.AbstractKylinTestCase;
 import org.apache.kylin.common.util.ClassUtil;
 
-import java.io.File;
-
 /**
  * @author ysong1
  */
@@ -58,6 +59,7 @@ public class HBaseMetadataTestCase extends AbstractKylinTestCase {
         }
 
     }
+
     public static void staticCreateTestMetadata(String kylinConfigFolder) {
 
         KylinConfig.destoryInstance();
@@ -69,7 +71,11 @@ public class HBaseMetadataTestCase extends AbstractKylinTestCase {
 
     public static boolean useSandbox() {
         String useSandbox = System.getProperty("useSandbox");
+        if (StringUtils.isEmpty(useSandbox)) {
+            return true;
+        }
+        
         return Boolean.parseBoolean(useSandbox);
     }
-    
+
 }