From 96154633475ede1ee83cc0a5c9a5b5a62f329fa5 Mon Sep 17 00:00:00 2001 From: chenzhx <346839943@qq.com> Date: Thu, 13 Jul 2017 16:10:14 +0800 Subject: [PATCH] KYLIN 2616 COUNT DISTINCT SUPPORT MULTIPLE COLUMN --- webapp/app/js/controllers/cubeMeasures.js | 44 ++++++++++++++++++++------ webapp/app/partials/cubeDesigner/measures.html | 18 +++++------ 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js index c598fde63..2b8668305 100644 --- a/webapp/app/js/controllers/cubeMeasures.js +++ b/webapp/app/js/controllers/cubeMeasures.js @@ -106,6 +106,12 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes } }; } + if ($scope.newMeasure.function.expression === 'COUNT_DISTINCT') { + $scope.convertedColumns=[]; + if ($scope.newMeasure.function.parameter.next_parameter) { + $scope.recursion($scope.newMeasure.function.parameter.next_parameter, $scope.convertedColumns) + } + } }; @@ -212,13 +218,34 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes $scope.newMeasure.function.configuration[versionKey]=version; }); } + if ($scope.newMeasure.function.expression === 'COUNT_DISTINCT' ) { + + var hasExisted = []; + + for (var column in $scope.convertedColumns){ + if(hasExisted.indexOf($scope.convertedColumns[column].name)==-1){ + hasExisted.push($scope.convertedColumns[column].name); + } + else{ + SweetAlert.swal('', 'The column named ['+$scope.convertedColumns[column].name+'] already exits.', 'warning'); + return false; + } + } + $scope.nextPara.next_parameter={}; + if ($scope.convertedColumns.length > 0) { + $scope.groupby($scope.nextPara); + } else { + $scope.nextPara=null; + $scope.newMeasure.function.parameter.next_parameter=null; + } + } if ($scope.isNameDuplicated($scope.cubeMetaFrame.measures, $scope.newMeasure) == true) { SweetAlert.swal('', 'The measure name: ' + $scope.newMeasure.name + ' is duplicated', 'warning'); return false; } - if($scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N')){ + if($scope.nextPara && $scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N'||$scope.newMeasure.function.expression == 'COUNT_DISTINCT')){ $scope.newMeasure.function.parameter.next_parameter = jQuery.extend(true,{},$scope.nextPara); } @@ -294,14 +321,13 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes return false; } } - $scope.converted = function (next_parameter) { - if (next_parameter != null) { - $scope.groupby.push(next_parameter.value); - converted(next_parameter.next_parameter) - } - else { - $scope.groupby.push(next_parameter.value); - return false; + + $scope.recursion = function (parameter, list) { + list.push({name: parameter.value}) + if (parameter.next_parameter) { + $scope.recursion(parameter.next_parameter, list) + } else { + return } } diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html index df69b7816..89c71425c 100755 --- a/webapp/app/partials/cubeDesigner/measures.html +++ b/webapp/app/partials/cubeDesigner/measures.html @@ -218,22 +218,22 @@ -
| ID | Column | -Encoding | -Length | -+ | Encoding | +Length | +- | -- | -+ |
|---|