This is an automated email from the ASF dual-hosted git repository.

nju_yaho pushed a commit to tag ebay-3.1.0-release-20200701
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 0a4b628d461cbb532414f1f32c0de73b00c79254
Author: Julian Pan <lia...@ebay.com>
AuthorDate: Fri Jun 26 11:56:23 2020 +0800

    KYLIN-4549 Show column cardinality in rowkeys area of advanced settings
---
 webapp/app/js/controllers/cubeAdvanceSetting.js    | 73 +++++++++++++---------
 .../partials/cubeDesigner/advanced_settings.html   |  9 +++
 webapp/app/partials/tables/table_detail.html       |  2 +-
 3 files changed, 55 insertions(+), 29 deletions(-)

diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js 
b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 1048839..360642d 100755
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -18,39 +18,54 @@
 
 'use strict';
 
-KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, 
$modal,cubeConfig,MetaModel,cubesManager,CubeDescModel,SweetAlert,VdmUtil,modelsManager)
 {
+KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, 
$modal,cubeConfig,MetaModel,TableService,cubesManager,CubeDescModel,SweetAlert,VdmUtil,modelsManager)
 {
   $scope.cubesManager = cubesManager;
 
   var needLengthKeyList=cubeConfig.needSetLengthEncodingList;
   $scope.convertedRowkeys = [];
   $scope.dim_cap = $scope.cubeMetaFrame.aggregation_groups.length > 0 && 
$scope.cubeMetaFrame.aggregation_groups[0].select_rule.dim_cap ? 
$scope.cubeMetaFrame.aggregation_groups[0].select_rule.dim_cap : 0;
-  angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(item){
-    item.encoding=$scope.removeVersion(item.encoding);
-    var _valueLength;
-    var tableName=VdmUtil.getNameSpaceTopName(item.column);
-    var databaseName=modelsManager.getDatabaseByColumnName(item.column);
-    var baseKey=item.encoding.replace(/:\d+/,'');
-    if(needLengthKeyList.indexOf(baseKey)>-1){
-      var result=/:(\d+)/.exec(item.encoding);
-      _valueLength=result?result[1]:0;
-    }
-    var _encoding=baseKey;
-    var rowkeyObj = {
-      column:item.column,
-      
encoding:_encoding+(item.encoding_version?"[v"+item.encoding_version+"]":"[v1]"),
-      encodingName:_encoding,
-      valueLength:_valueLength,
-      isShardBy:item.isShardBy,
-      encoding_version:item.encoding_version||1,
-      table:tableName,
-      database:databaseName
-    }
-    if(item.index){
-      rowkeyObj.index=item.index;
-    }
-    $scope.convertedRowkeys.push(rowkeyObj);
-
-  })
+
+  TableService.list({ext: true, project:$scope.projectModel.selectedProject}, 
function(tables) {
+    $scope.initRowKey(tables);
+  }, function (error) {
+    $scope.initRowKey([]);
+  });
+
+  $scope.initRowKey = function(tables) {
+    angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(item){
+      item.encoding=$scope.removeVersion(item.encoding);
+      var _valueLength;
+      var tableName=VdmUtil.getNameSpaceTopName(item.column);
+      var databaseName=modelsManager.getDatabaseByColumnName(item.column);
+      var baseKey=item.encoding.replace(/:\d+/,'');
+      if(needLengthKeyList.indexOf(baseKey)>-1){
+        var result=/:(\d+)/.exec(item.encoding);
+        _valueLength=result?result[1]:0;
+      }$scope.cubeMetaFrame
+      var _encoding=baseKey;
+      var rowkeyTable = _.find(tables, function(table) {
+        var modelDesc = 
modelsManager.getModel($scope.cubeMetaFrame.model_name);
+        var lookupTable = modelDesc ? _.find(modelDesc.lookups, 
function(lookup){ return lookup.alias === tableName; }) : undefined;
+        return ((modelDesc && modelDesc.fact_table === (table.database + '.' + 
table.name) && table.name === tableName) || (lookupTable && lookupTable.table 
=== (table.name + table.database)));
+      });
+      var cardinality = rowkeyTable ? 
rowkeyTable.cardinality[VdmUtil.removeNameSpace(item.column)] : undefined;
+      var rowkeyObj = {
+        column:item.column,
+        
encoding:_encoding+(item.encoding_version?"[v"+item.encoding_version+"]":"[v1]"),
+        encodingName:_encoding,
+        valueLength:_valueLength,
+        isShardBy:item.isShardBy,
+        encoding_version:item.encoding_version||1,
+        table:tableName,
+        database:databaseName,
+        cardinality: cardinality || 'N/A'
+      }
+      if(item.index){
+        rowkeyObj.index=item.index;
+      }
+      $scope.convertedRowkeys.push(rowkeyObj);
+    })
+  }
 
 
   $scope.rule={
@@ -66,6 +81,7 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function 
($scope, $modal,cubeConfi
     var isShardBy = item.isShardBy;
     var version=$scope.getTypeVersion(item.encoding);
     var encodingType=$scope.removeVersion(item.encoding);
+    var cardinality = item.cardinality;
 
     if(needLengthKeyList.indexOf(encodingType)!=-1){
       encoding = encodingType+":"+item.valueLength;
@@ -77,6 +93,7 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function 
($scope, $modal,cubeConfi
     $scope.cubeMetaFrame.rowkey.rowkey_columns[index].encoding = encoding;
     $scope.cubeMetaFrame.rowkey.rowkey_columns[index].encoding_version 
=version;
     $scope.cubeMetaFrame.rowkey.rowkey_columns[index].isShardBy = isShardBy;
+    $scope.cubeMetaFrame.rowkey.rowkey_columns[index].cardinality = 
cardinality;
     if(checkShard == true){
       $scope.checkShardByColumn();
     }
diff --git a/webapp/app/partials/cubeDesigner/advanced_settings.html 
b/webapp/app/partials/cubeDesigner/advanced_settings.html
index 94c7d44..f41d42e 100755
--- a/webapp/app/partials/cubeDesigner/advanced_settings.html
+++ b/webapp/app/partials/cubeDesigner/advanced_settings.html
@@ -213,6 +213,7 @@
                     <th>Encoding</th>
                     <th>Length</th>
                     <th>Shard By</th>
+                    <th>Cardinality</th>
                   </tr>
                   </thead>
 
@@ -241,6 +242,10 @@
                   <td>
                    <span>{{rowkey_column.isShardBy}}</span>
                   </td>
+
+                  <td>
+                    <span>{{rowkey_column.cardinality | number}}</span>
+                  </td>
                 </tr>
                 </tbody>
 
@@ -294,6 +299,10 @@
                       <small class="help-block red" 
ng-show="state.mode=='edit' && rule.shardColumnAvailable==false && 
rowkey_column.isShardBy == true">at most one 'shard by' column is 
allowed.</small>
                     </td>
                   </tr>
+
+                  <td>
+                    <span>{{rowkey_column.cardinality | number}}</span>
+                  </td>
                   </tbody>
                 </table>
               </div>
diff --git a/webapp/app/partials/tables/table_detail.html 
b/webapp/app/partials/tables/table_detail.html
index 0456504..bdb3d26 100644
--- a/webapp/app/partials/tables/table_detail.html
+++ b/webapp/app/partials/tables/table_detail.html
@@ -149,7 +149,7 @@
                   <td
                     style="{{(tableModel.selectedSrcTable.selectedSrcColumn.id 
== column.id)? 'background-color:#EBF9FE':''}}">
                     <!--{{ 
tableModel.selectedSrcTable.cardinality[column.name]}}-->
-                    {{column.cardinality}}
+                    {{column.cardinality || 'N/A'}}
                   </td>
                   <td
                     style="{{(tableModel.selectedSrcTable.selectedSrcColumn.id 
== column.id)? 'background-color:#EBF9FE':''}}">

Reply via email to