You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ch...@apache.org on 2017/07/22 15:05:23 UTC

kylin git commit: KYLIN-2604 Use global dict as the default encoding for precise distinct count in web

Repository: kylin
Updated Branches:
  refs/heads/master c0c96bba0 -> fd4a009d4


KYLIN-2604 Use global dict as the default encoding for precise distinct count in web


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

Branch: refs/heads/master
Commit: fd4a009d4d0239ed7d20ae872c8725bb5422992c
Parents: c0c96bb
Author: kangkaisen <ka...@live.com>
Authored: Thu Jul 6 15:21:55 2017 +0800
Committer: chenzhx <34...@qq.com>
Committed: Sat Jul 22 22:24:23 2017 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeAdvanceSetting.js |  5 --
 webapp/app/js/controllers/cubeEdit.js           | 52 ++++++++++++++++++++
 webapp/app/js/controllers/cubeMeasures.js       |  7 +++
 3 files changed, 59 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 7d375da..8041a12 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -187,7 +187,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
   };
   $scope.initUpdateDictionariesStatus();
 
-
   $scope.addNewDictionaries = function (dictionaries, index) {
     if(dictionaries&&index>=0){
       $scope.updateDictionariesStatus.isEdit = true;
@@ -207,10 +206,6 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
   };
 
   $scope.saveNewDictionaries = function (){
-    if(!$scope.cubeMetaFrame.dictionaries){
-      $scope.cubeMetaFrame.dictionaries=[];
-    }
-
     if($scope.updateDictionariesStatus.isEdit == true) {
       if ($scope.cubeMetaFrame.dictionaries[$scope.updateDictionariesStatus.editIndex].column != $scope.newDictionaries.column) {
         if(!$scope.checkColumn()){

http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index 0e5038e..5f78b61 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -721,7 +721,59 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     }
   }
 
+  function reGenerateAdvancedDict () {
+    if (!$scope.cubeMetaFrame.dictionaries) {
+      $scope.cubeMetaFrame.dictionaries = [];
+    }
+
+    var distinctMeasures = [];
+
+    angular.forEach($scope.cubeMetaFrame.measures, function (measure, index) {
+      if (measure.function.expression === 'COUNT_DISTINCT' && measure.function.returntype === 'bitmap') {
+        var measureColumn = measure.function.parameter.value;
+        distinctMeasures.push(measureColumn);
+        //keep backward compatibility
+        distinctMeasures.push(VdmUtil.removeNameSpace(measureColumn))
+
+        var isColumnExit = false;
+        angular.forEach($scope.cubeMetaFrame.dictionaries, function (dictionaries) {
+          if (!isColumnExit) {
+            //keep backward compatibility
+            if (dictionaries.column == measureColumn || dictionaries.column == VdmUtil.removeNameSpace(measureColumn))
+              isColumnExit = true;
+          }
+        });
+
+        if (!isColumnExit) {
+          var dict = CubeDescModel.createDictionaries();
+          dict.column = measureColumn;
+          dict.builder = cubeConfig.buildDictionaries[0].value;
+          $scope.cubeMetaFrame.dictionaries.push(dict)
+        }
+      }
+    });
+
+    //get all reuse columns
+    var reuseColumns = [];
+    angular.forEach($scope.cubeMetaFrame.dictionaries, function (dict, index) {
+      if (dict.reuse != null && reuseColumns.indexOf(dict.reuse) === -1) {
+        reuseColumns.push(dict.reuse);
+      }
+    });
 
+    //remove deprecated distinct measures
+    angular.forEach($scope.cubeMetaFrame.dictionaries, function (dict, index) {
+      if (distinctMeasures.indexOf(dict.column) === -1 && reuseColumns.indexOf(dict.column) === -1) {
+        $scope.cubeMetaFrame.dictionaries.splice(index, 1);
+      }
+    });
+  }
+
+  $scope.$on('MeasuresEdited', function (event) {
+    if ($scope.cubeMetaFrame) {
+      reGenerateAdvancedDict();
+    }
+  });
 
   $scope.$on('DimensionsEdited', function (event) {
     if ($scope.cubeMetaFrame) {

http://git-wip-us.apache.org/repos/asf/kylin/blob/fd4a009d/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index 2b86683..8b0271c 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -422,6 +422,13 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
     }
   }
 
+  if ($scope.state.mode == 'edit') {
+    $scope.$on('$destroy', function () {
+      // emit measures edit event in order to re-generate advanced dict.
+      $scope.$emit('MeasuresEdited');
+    });
+  }
+
 });
 
 var NextParameterModalCtrl = function ($scope, scope,para,$modalInstance,cubeConfig, CubeService, MessageService, $location, SweetAlert,ProjectModel, loadingRequest,ModelService) {