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/04/22 06:11:37 UTC

[08/50] [abbrv] kylin git commit: KYLIN-1553 use foreign key as rowkey when primary key on lookup table selected as dimension

KYLIN-1553 use foreign key as rowkey when primary key on lookup table selected as dimension


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

Branch: refs/heads/1.5.x-HBase1.1.3
Commit: 05033cbe4b30510070820ee4130516cdd94b185f
Parents: 828a71f
Author: Jason <ji...@163.com>
Authored: Thu Mar 31 16:55:41 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Thu Mar 31 17:01:28 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeEdit.js | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/05033cbe/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index e188245..b34393a 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -412,6 +412,19 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     var tmpRowKeyColumns = [];
     var tmpAggregationItems = [];//put all aggregation item
     //var hierarchyItemArray = [];//put all hierarchy items
+
+    var pfkMap = {};
+
+    for( var i=0;i<$scope.metaModel.model.lookups.length;i++){
+      var lookup = $scope.metaModel.model.lookups[i];
+      var table = lookup.table;
+      pfkMap[table] = {};
+      for(var j=0;j<lookup.join.primary_key.length;j++){
+        var pk = lookup.join.primary_key[j];
+        pfkMap[table][pk] = lookup.join.foreign_key[j];
+      }
+
+    }
     angular.forEach($scope.cubeMetaFrame.dimensions, function (dimension, index) {
 
       //derived column
@@ -438,16 +451,26 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
       }
       //normal column
       else if (dimension.column  && !dimension.derived) {
+
+        var tableName = dimension.table;
+        var columnName = dimension.column;
+        var rowkeyColumn = dimension.column;
+        if(pfkMap[tableName]&&pfkMap[tableName][columnName]){
+          //lookup table primary key column as dimension
+          rowkeyColumn = pfkMap[tableName][columnName];
+
+        }
+
         for (var i = 0; i < tmpRowKeyColumns.length; i++) {
-          if (tmpRowKeyColumns[i].column == dimension.column)
+          if (tmpRowKeyColumns[i].column == rowkeyColumn)
             break;
         }
         if (i == tmpRowKeyColumns.length) {
           tmpRowKeyColumns.push({
-            "column": dimension.column,
+            "column": rowkeyColumn,
             "encoding": "dict"
           });
-          tmpAggregationItems.push(dimension.column);
+          tmpAggregationItems.push(rowkeyColumn);
         }
       }