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();

Reply via email to