From 3147ff3327bbaa0a830b53f4ec80ffcda6e2d7b3 Mon Sep 17 00:00:00 2001 From: kangkaisen Date: Thu, 24 Aug 2017 17:49:50 +0800 Subject: [PATCH] KYLIN-2604 Non-Int type precise count distinct measure must set advanced dict --- webapp/app/js/controllers/cubeEdit.js | 12 +++++++++++- webapp/app/js/controllers/cubeSchema.js | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index 5f78b6119..e1d1c6c18 100755 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -200,6 +200,16 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio return type; }; + $scope.isIntMeasure = function (measure) { + var column = measure.function.parameter.value; + if(column && (typeof column=="string")){ + var colType = $scope.getColumnType(VdmUtil.removeNameSpace(column), VdmUtil.getNameSpaceAliasName(column)); + if(colType==="tinyint"||colType==="smallint"||colType==="int"||colType==="integer"){ + return true; + } + } + return false; + }; // ~ Define data $scope.state = { @@ -729,7 +739,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio var distinctMeasures = []; angular.forEach($scope.cubeMetaFrame.measures, function (measure, index) { - if (measure.function.expression === 'COUNT_DISTINCT' && measure.function.returntype === 'bitmap') { + if (measure.function.expression === 'COUNT_DISTINCT' && measure.function.returntype === 'bitmap' && !$scope.isIntMeasure(measure)) { var measureColumn = measure.function.parameter.value; distinctMeasures.push(measureColumn); //keep backward compatibility diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js index a912c72c7..590168b59 100755 --- a/webapp/app/js/controllers/cubeSchema.js +++ b/webapp/app/js/controllers/cubeSchema.js @@ -401,6 +401,26 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic } + angular.forEach($scope.cubeMetaFrame.measures, function (measure, index) { + if (measure.function.expression === 'COUNT_DISTINCT' && measure.function.returntype === 'bitmap' && !$scope.isIntMeasure(measure)) { + var measureColumn = measure.function.parameter.value; + + 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) { + errors.push("The non-Int type precise count distinct measure must set advanced cict: " + measureColumn); + } + } + }); + + var errorInfo = ""; angular.forEach(errors,function(item){ errorInfo+="\n"+item; -- 2.11.0 (Apple Git-81)