This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push: new b577521 [KYLIN-4971] Add new measure bitmap_map for count distinct at frontend. (#222) b577521 is described below commit b577521d93b049a65bdc3d7e0dd783018edd5c68 Author: yangjiang <yangji...@ebay.com> AuthorDate: Tue Apr 6 19:05:26 2021 +0800 [KYLIN-4971] Add new measure bitmap_map for count distinct at frontend. (#222) --- webapp/app/js/controllers/cubeAdvanceSetting.js | 4 ++++ webapp/app/js/controllers/cubeEdit.js | 14 +++++++++++--- webapp/app/js/model/cubeConfig.js | 8 ++++++-- webapp/app/js/model/cubeDescModel.js | 3 ++- webapp/app/partials/cubeDesigner/advanced_settings.html | 12 +++++++++++- webapp/app/partials/cubeDesigner/measures.html | 4 ++-- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js index 91769cf..78de9fb 100755 --- a/webapp/app/js/controllers/cubeAdvanceSetting.js +++ b/webapp/app/js/controllers/cubeAdvanceSetting.js @@ -521,6 +521,10 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi } }; + $scope.isMeasureBitmap_map = function(type) { + return type == "bitmap_map"; + }; + $scope.changeSnapshotTable = function(changeSnapshot, beforeTableName, snapshotTableDescList) { var existSnapshot = _.find(snapshotTableDescList, function(snapshot) { return snapshot.table_name === changeSnapshot.table_name; diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js index eeed96a..b32900d 100755 --- a/webapp/app/js/controllers/cubeEdit.js +++ b/webapp/app/js/controllers/cubeEdit.js @@ -740,7 +740,8 @@ 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' && !$scope.isIntMeasure(measure)) { + if (measure.function.expression === 'COUNT_DISTINCT' && (measure.function.returntype === 'bitmap' || measure.function.returntype === 'bitmap_map' ) + && !$scope.isIntMeasure(measure)) { var measureColumn = measure.function.parameter.value; distinctMeasures.push(measureColumn); //keep backward compatibility @@ -758,8 +759,15 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio if (!isColumnExit) { var dict = CubeDescModel.createDictionaries(); dict.column = measureColumn; - dict.builder = cubeConfig.buildDictionaries[0].value; - $scope.cubeMetaFrame.dictionaries.push(dict) + if (measure.function.returntype === 'bitmap_map') { + dict.builder = cubeConfig.buildDictionariesForBitMap_Map[0].value; + dict.type = measure.function.returntype; + $scope.cubeMetaFrame.dictionaries.push(dict) + } else { + dict.builder = cubeConfig.buildDictionariesForBitMap[0].value; + dict.type = measure.function.returntype; + $scope.cubeMetaFrame.dictionaries.push(dict) + } } } }); diff --git a/webapp/app/js/model/cubeConfig.js b/webapp/app/js/model/cubeConfig.js index 77285f9..e895663 100644 --- a/webapp/app/js/model/cubeConfig.js +++ b/webapp/app/js/model/cubeConfig.js @@ -51,7 +51,8 @@ KylinApp.constant('cubeConfig', { {name: 'Error Rate < 2.44%', value: 'hllc(14)'}, {name: 'Error Rate < 1.72%', value: 'hllc(15)'}, {name: 'Error Rate < 1.22%', value: 'hllc(16)'}, - {name: 'Precisely (More Memory And Storage Needed)', value: 'bitmap'} + {name: 'Precisely (More Memory And Storage Needed)', value: 'bitmap'}, + {name: 'Precisely (Different Encoding Among Segments)', value: 'bitmap_map'} ], topNTypes: [ {name: 'Top 10', value: "topn(10)"}, @@ -119,10 +120,13 @@ KylinApp.constant('cubeConfig', { true,false ], statusNeedNofity:['ERROR', 'DISCARDED', 'SUCCEED'], - buildDictionaries:[ + buildDictionariesForBitMap:[ {name:"Global Dictionary", value:"org.apache.kylin.dict.GlobalDictionaryBuilder"}, {name:"Segment Dictionary", value:"org.apache.kylin.dict.global.SegmentAppendTrieDictBuilder"} ], + buildDictionariesForBitMap_Map:[ + {name:"Segment Dictionary", value:"org.apache.kylin.dict.global.SegmentAppendTrieDictBuilder"} + ], needSetLengthEncodingList:['fixed_length','fixed_length_hex','int','integer'], snapshotStorageTypes: [ {name: 'Meta Store', value: 'metaStore'}, diff --git a/webapp/app/js/model/cubeDescModel.js b/webapp/app/js/model/cubeDescModel.js index 6cd0fe2..9fcbec3 100644 --- a/webapp/app/js/model/cubeDescModel.js +++ b/webapp/app/js/model/cubeDescModel.js @@ -97,7 +97,8 @@ KylinApp.service('CubeDescModel', function (kylinConfig) { var dictionaries = { "column": null, "builder": null, - "reuse":null + "reuse":null, + "type":null } return dictionaries; } diff --git a/webapp/app/partials/cubeDesigner/advanced_settings.html b/webapp/app/partials/cubeDesigner/advanced_settings.html index f41d42e..abc7d39 100755 --- a/webapp/app/partials/cubeDesigner/advanced_settings.html +++ b/webapp/app/partials/cubeDesigner/advanced_settings.html @@ -489,12 +489,22 @@ <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Builder Class</b></label> <div class="col-xs-12 col-sm-6"> <select class="form-control" chosen + ng-if="isMeasureBitmap_map(newDictionaries.type)" ng-model="newDictionaries.builder" - ng-options="item.value as item.name for item in cubeConfig.buildDictionaries" + ng-options="item.value as item.name for item in cubeConfig.buildDictionariesForBitMap_Map" required> <option value="">-- Select a builder class--</option> </select> </div> + <div class="col-xs-12 col-sm-6"> + <select class="form-control" chosen + ng-if="!isMeasureBitmap_map(newDictionaries.type)" + ng-model="newDictionaries.builder" + ng-options="item.value as item.name for item in cubeConfig.buildDictionariesForBitMap" + required> + <option value="">-- Select a builder class--</option> + </select> + </div> </div> </div> <!--Reuse--> diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html index 19e8795..a4579e3 100755 --- a/webapp/app/partials/cubeDesigner/measures.html +++ b/webapp/app/partials/cubeDesigner/measures.html @@ -233,11 +233,11 @@ </div> <!--Group by Column--> - <div class="form-group" ng-if="newMeasure.function.expression === 'TOP_N'||(newMeasure.function.expression === 'COUNT_DISTINCT' && newMeasure.function.returntype!=='bitmap')" > + <div class="form-group" ng-if="newMeasure.function.expression === 'TOP_N'||(newMeasure.function.expression === 'COUNT_DISTINCT' && newMeasure.function.returntype!=='bitmap'&& (newMeasure.function.returntype!=='bitmap_map')" > <div class="row"> <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"> <b ng-if="newMeasure.function.expression === 'TOP_N'">Group by Column:</b> - <b ng-if="newMeasure.function.expression === 'COUNT_DISTINCT' && (newMeasure.function.returntype!=='bitmap')">Additional distinct column in this measure:</b> + <b ng-if="newMeasure.function.expression === 'COUNT_DISTINCT' && (newMeasure.function.returntype!=='bitmap'&& (newMeasure.function.returntype!=='bitmap_map')">Additional distinct column in this measure:</b> </label> <div class="form-group large-popover" > <div class="box-body">