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/12/08 05:53:32 UTC

[07/19] kylin git commit: minor, add API to get AggregationGroup combination cuboid num

minor, add API to get AggregationGroup combination cuboid num


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

Branch: refs/heads/master-cdh5.7
Commit: b1fd4679fa80e8e971d553a42baf20198afb9eac
Parents: 365caae
Author: Billy Liu <bi...@apache.org>
Authored: Wed Dec 7 18:29:07 2016 +0800
Committer: Billy Liu <bi...@apache.org>
Committed: Wed Dec 7 18:29:07 2016 +0800

----------------------------------------------------------------------
 .../kylin/rest/controller/CubeController.java   | 33 ++++++++++++++++++++
 1 file changed, 33 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/b1fd4679/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
index f537231..ab32551 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
@@ -32,6 +32,7 @@ import org.apache.kylin.common.util.JsonUtil;
 import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
 import org.apache.kylin.cube.CubeSegment;
+import org.apache.kylin.cube.model.AggregationGroup;
 import org.apache.kylin.cube.model.CubeBuildTypeEnum;
 import org.apache.kylin.cube.model.CubeDesc;
 import org.apache.kylin.dimension.DimensionEncodingFactory;
@@ -655,6 +656,22 @@ public class CubeController extends BasicController {
         return response;
     }
 
+    /**
+     * Calculate Cuboid Combination based on the AggreationGroup definition.
+     *
+     * @param aggregationGroupStr
+     * @return number of cuboid, -1 if failed
+     */
+    @RequestMapping(value = "aggregationgroups/cuboid", method = RequestMethod.POST)
+    @ResponseBody
+    public long calculateCuboidCombination(@RequestBody String aggregationGroupStr) {
+        AggregationGroup aggregationGroup = deserializeAggregationGroup(aggregationGroupStr);
+        if (aggregationGroup != null) {
+            return aggregationGroup.calculateCuboidCombination();
+        } else
+            return -1;
+    }
+
     private CubeDesc deserializeCubeDesc(CubeRequest cubeRequest) {
         CubeDesc desc = null;
         try {
@@ -673,6 +690,22 @@ public class CubeController extends BasicController {
         return desc;
     }
 
+    private AggregationGroup deserializeAggregationGroup(String aggregationGroupStr) {
+        AggregationGroup aggreationGroup = null;
+        try {
+            logger.debug("Parsing AggregationGroup " + aggregationGroupStr);
+            aggreationGroup = JsonUtil.readValue(aggregationGroupStr, AggregationGroup.class);
+        } catch (JsonParseException e) {
+            logger.error("The AggregationGroup definition is not valid.", e);
+        } catch (JsonMappingException e) {
+            logger.error("The AggregationGroup definition is not valid.", e);
+        } catch (IOException e) {
+            logger.error("Failed to deal with the request.", e);
+            throw new InternalErrorException("Failed to deal with the request:" + e.getMessage(), e);
+        }
+        return aggreationGroup;
+    }
+
     private void updateRequest(CubeRequest request, boolean success, String message) {
         request.setCubeDescData("");
         request.setSuccessful(success);