Repository: kylin Updated Branches: refs/heads/master b3552c977 -> 4917c6581
KYLIN-3009 API to get Cube join SQL Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/4917c658 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/4917c658 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/4917c658 Branch: refs/heads/master Commit: 4917c658104af65abe48c2caffd0ceb532c5b3c4 Parents: b3552c9 Author: shaofengshi <[email protected]> Authored: Sun Nov 5 19:10:26 2017 +0800 Committer: shaofengshi <[email protected]> Committed: Sun Nov 5 19:10:26 2017 +0800 ---------------------------------------------------------------------- .../kylin/rest/controller/CubeController.java | 40 ++++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/4917c658/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 b6ec0e2..ad00706 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 @@ -21,7 +21,6 @@ package org.apache.kylin.rest.controller; import static org.apache.kylin.rest.service.CubeService.VALID_CUBENAME; import java.io.IOException; -import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -154,12 +153,37 @@ public class CubeController extends BasicController { return cube; } + + /** + * Get SQL of a Cube + * + * @param cubeName Cube Name + * @return + * @throws IOException + */ + @RequestMapping(value = "/{cubeName}/sql", method = { RequestMethod.GET }, produces = { + "application/json" }) + @ResponseBody + public GeneralResponse getSql(@PathVariable String cubeName) { + CubeInstance cube = cubeService.getCubeManager().getCube(cubeName); + if (cube == null) { + throw new InternalErrorException("Cannot find cube " + cubeName); + } + IJoinedFlatTableDesc flatTableDesc = EngineFactory.getJoinedFlatTableDesc(cube.getDescriptor()); + String sql = JoinedFlatTable.generateSelectDataStatement(flatTableDesc); + + GeneralResponse response = new GeneralResponse(); + response.setProperty("sql", sql); + + return response; + } + /** - * Get hive SQL of the cube + * Get SQL of a Cube segment * * @param cubeName Cube Name + * @param segmentName Segment Name * @return - * @throws UnknownHostException * @throws IOException */ @RequestMapping(value = "/{cubeName}/segs/{segmentName}/sql", method = { RequestMethod.GET }, produces = { @@ -167,7 +191,15 @@ public class CubeController extends BasicController { @ResponseBody public GeneralResponse getSql(@PathVariable String cubeName, @PathVariable String segmentName) { CubeInstance cube = cubeService.getCubeManager().getCube(cubeName); - IJoinedFlatTableDesc flatTableDesc = EngineFactory.getJoinedFlatTableDesc(cube.getDescriptor()); + if (cube == null) { + throw new InternalErrorException("Cannot find cube " + cubeName); + } + + CubeSegment segment = cube.getSegment(segmentName, null); + if (segment == null) { + throw new InternalErrorException("Cannot find segment " + segmentName); + } + IJoinedFlatTableDesc flatTableDesc = EngineFactory.getJoinedFlatTableDesc(segment); String sql = JoinedFlatTable.generateSelectDataStatement(flatTableDesc); GeneralResponse response = new GeneralResponse();
