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 <jiat...@163.com> Authored: Thu Mar 31 16:55:41 2016 +0800 Committer: Jason <jiat...@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); } }