This is an automated email from the ASF dual-hosted git repository.
shaofengshi 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 26b2646 KYLIN-4549 Show column cardinality in rowkeys area of
advanced settings
26b2646 is described below
commit 26b26468b067a940c8af9382ea80341b4c4b4617
Author: Julian Pan <[email protected]>
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 e298d37..91769cf 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 533ef66..4d7a202 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':''}}">