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:49:55 UTC
[07/18] 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-hbase1.x
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);