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

kylin git commit: KYLIN-1491 Should return base cuboid as valid cuboid if no aggregation group matches

Repository: kylin
Updated Branches:
  refs/heads/master 3800e4eb1 -> b271f0230


KYLIN-1491 Should return base cuboid as valid cuboid if no aggregation group matches


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

Branch: refs/heads/master
Commit: b271f0230ef9b2433721920b3471d1c0cb982340
Parents: 3800e4e
Author: lidongsjtu <li...@apache.org>
Authored: Mon Mar 14 15:03:37 2016 +0800
Committer: lidongsjtu <li...@apache.org>
Committed: Mon Mar 14 18:59:01 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/cube/cuboid/Cuboid.java     |  9 +++++++--
 .../org/apache/kylin/cube/cuboid/CuboidTest.java | 19 +++++++++++++++++--
 ...st_kylin_cube_without_slr_left_join_desc.json |  2 +-
 3 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b271f023/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 89f5204..7f8d2b8 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
@@ -73,6 +73,10 @@ public class Cuboid implements Comparable<Cuboid> {
     }
 
     public static boolean isValid(CubeDesc cube, long cuboidID) {
+        if (cuboidID == getBaseCuboidId(cube)) {
+            return true;
+        }
+
         for (AggregationGroup agg : cube.getAggregationGroups()) {
             if (isValid(agg, cuboidID)) {
                 return true;
@@ -112,7 +116,8 @@ public class Cuboid implements Comparable<Cuboid> {
     }
 
     public static long translateToValidCuboid(CubeDesc cubeDesc, long cuboidID) {
-        if (cuboidID == getBaseCuboidId(cubeDesc)) {
+        long baseCuboidId = getBaseCuboidId(cubeDesc);
+        if (cuboidID == baseCuboidId) {
             return cuboidID;
         }
         List<Long> candidates = Lists.newArrayList();
@@ -124,7 +129,7 @@ public class Cuboid implements Comparable<Cuboid> {
         }
 
         if (candidates.size() == 0) {
-            throw new IllegalStateException("Cannot find parent for :" + cuboidID);
+            return baseCuboidId;
         }
 
         return Collections.min(candidates, cuboidSelectComparator);

http://git-wip-us.apache.org/repos/asf/kylin/blob/b271f023/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidTest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidTest.java b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidTest.java
index eecf368..40e2a4b 100644
--- a/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidTest.java
+++ b/core-cube/src/test/java/org/apache/kylin/cube/cuboid/CuboidTest.java
@@ -49,6 +49,10 @@ public class CuboidTest extends LocalFileMetadataTestCase {
         return getCubeDescManager().getCubeDesc("test_kylin_cube_with_slr_desc");
     }
 
+    private CubeDesc getTestKylinCubeWithoutSellerLeftJoin() {
+        return getCubeDescManager().getCubeDesc("test_kylin_cube_without_slr_left_join_desc");
+
+    }
     @Before
     public void setUp() throws Exception {
         this.createTestMetadata();
@@ -86,7 +90,7 @@ public class CuboidTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testCuboid1() {
+    public void testFindCuboidByIdWithSingleAggrGroup1() {
         CubeDesc cube = getTestKylinCubeWithoutSeller();
         Cuboid cuboid;
 
@@ -137,7 +141,7 @@ public class CuboidTest extends LocalFileMetadataTestCase {
     }
 
     @Test
-    public void testCuboid2() {
+    public void testFindCuboidByIdWithSingleAggrGroup2() {
         CubeDesc cube = getTestKylinCubeWithSeller();
         Cuboid cuboid;
 
@@ -163,4 +167,15 @@ public class CuboidTest extends LocalFileMetadataTestCase {
         assertEquals(toLong("111111111"), cuboid.getId());
     }
 
+    @Test
+    public void testFindCuboidByIdWithMultiAggrGroup() {
+        CubeDesc cube = getTestKylinCubeWithoutSellerLeftJoin();
+        Cuboid cuboid;
+
+        cuboid = Cuboid.findById(cube, toLong("111111110"));
+        assertEquals(toLong("11111111"), cuboid.getId());
+
+        cuboid = Cuboid.findById(cube, toLong("111111111"));
+        assertEquals(toLong("11111111"), cuboid.getId());
+    }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/b271f023/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json
----------------------------------------------------------------------
diff --git a/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json b/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json
index 967c744..42a242b 100644
--- a/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json
+++ b/examples/test_case_data/localmeta/cube_desc/test_kylin_cube_without_slr_left_join_desc.json
@@ -213,7 +213,7 @@
     } ]
   },
   "aggregation_groups" : [ {
-    "includes" : [ "cal_dt", "categ_lvl2_name", "categ_lvl3_name", "leaf_categ_id", "lstg_format_name", "lstg_site_id", "meta_categ_name", "slr_segment_cd" ],
+    "includes" : [ "cal_dt", "categ_lvl2_name", "categ_lvl3_name", "leaf_categ_id", "lstg_format_name", "lstg_site_id", "meta_categ_name"],
     "select_rule" : {
       "hierarchy_dims" : [ ],
       "mandatory_dims" : [ "cal_dt" ],