You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by zh...@apache.org on 2016/04/21 05:15:59 UTC

kylin git commit: KYLIN-1599 add shardBy in rowkey panel

Repository: kylin
Updated Branches:
  refs/heads/master 702339185 -> f76190fe9


KYLIN-1599 add shardBy in rowkey panel


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/f76190fe
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/f76190fe
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/f76190fe

Branch: refs/heads/master
Commit: f76190fe9e2ab90e3bcb1d87f41efec22abc8a0e
Parents: 7023391
Author: Jason <ji...@163.com>
Authored: Thu Apr 21 11:05:02 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Thu Apr 21 11:05:02 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeAdvanceSetting.js | 36 +++++++++++++++++---
 webapp/app/js/controllers/cubeEdit.js           |  6 ++--
 webapp/app/js/controllers/cubeSchema.js         | 10 ++++++
 webapp/app/js/model/cubeConfig.js               |  3 ++
 .../cubeDesigner/advanced_settings.html         | 14 ++++++++
 5 files changed, 63 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/f76190fe/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 189cab9..c3110b5 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -41,16 +41,24 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
     var rowkeyObj = {
       column:item.column,
       encoding:_encoding,
-      valueLength:_valueLength
+      valueLength:_valueLength,
+      isShardBy:item.isShardBy
+
     }
 
     $scope.convertedRowkeys.push(rowkeyObj);
 
   })
 
-  $scope.refreshRowKey = function(list,index,item){
+
+  $scope.rule={
+    shardColumnAvailable:true
+  }
+
+  $scope.refreshRowKey = function(list,index,item,checkShard){
     var encoding = "dict";
     var column = item.column;
+    var isShardBy = item.isShardBy;
     if(item.encoding!=="dict"){
       if(item.encoding=="fixed_length" && item.valueLength){
         encoding = "fixed_length:"+item.valueLength;
@@ -63,9 +71,27 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
     }
     $scope.cubeMetaFrame.rowkey.rowkey_columns[index].column = column;
     $scope.cubeMetaFrame.rowkey.rowkey_columns[index].encoding = encoding;
+    $scope.cubeMetaFrame.rowkey.rowkey_columns[index].isShardBy = isShardBy;
+    if(checkShard == true){
+      $scope.checkShardByColumn();
+    }
+  }
 
+  $scope.checkShardByColumn = function(){
+    var shardRowkeyList = [];
+    angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(rowkey){
+      if(rowkey.isShardBy == true){
+        shardRowkeyList.push(rowkey.column);
+      }
+    })
+    if(shardRowkeyList.length >1){
+      $scope.rule.shardColumnAvailable = false;
+    }else{
+      $scope.rule.shardColumnAvailable = true;
+    }
   }
 
+
   $scope.resortRowkey = function(){
     for(var i=0;i<$scope.convertedRowkeys.length;i++){
       $scope.refreshRowKey($scope.convertedRowkeys,i,$scope.convertedRowkeys[i]);
@@ -84,13 +110,15 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
     var rowkeyObj = {
       column:"",
       encoding:"dict",
-      valueLength:0
+      valueLength:0,
+      isShardBy:"false"
     }
 
     $scope.convertedRowkeys.push(rowkeyObj);
     $scope.cubeMetaFrame.rowkey.rowkey_columns.push({
       column:'',
-      encoding:'dict'
+      encoding:'dict',
+      isShardBy:'false'
     });
 
   };

http://git-wip-us.apache.org/repos/asf/kylin/blob/f76190fe/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index de6abcb..3730e4a 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -440,7 +440,8 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
           if (i == tmpRowKeyColumns.length) {
             tmpRowKeyColumns.push({
               "column": fk,
-              "encoding": "dict"
+              "encoding": "dict",
+              "isShardBy": "false"
             });
 
             tmpAggregationItems.push(fk);
@@ -467,7 +468,8 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
         if (i == tmpRowKeyColumns.length) {
           tmpRowKeyColumns.push({
             "column": rowkeyColumn,
-            "encoding": "dict"
+            "encoding": "dict",
+            "isShardBy": "false"
           });
           tmpAggregationItems.push(rowkeyColumn);
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/f76190fe/webapp/app/js/controllers/cubeSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js
index f9d9dc1..be0c826 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -275,6 +275,16 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
             }
         })
 
+        var shardRowkeyList = [];
+        angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(rowkey){
+          if(rowkey.isShardBy == true){
+            shardRowkeyList.push(rowkey.column);
+          }
+        })
+        if(shardRowkeyList.length >1){
+          errors.push("At most one 'shard by' column is allowed.");
+        }
+
         if($scope.cubeMetaFrame.region_size<0.01 || $scope.cubeMetaFrame.region_size>100){
           errors.push("Please input a region size between 0.01 and 100 (G).");
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/f76190fe/webapp/app/js/model/cubeConfig.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/cubeConfig.js b/webapp/app/js/model/cubeConfig.js
index b5c77f9..42bba48 100644
--- a/webapp/app/js/model/cubeConfig.js
+++ b/webapp/app/js/model/cubeConfig.js
@@ -94,5 +94,8 @@ KylinApp.constant('cubeConfig', {
     'HH:mm:ss',
     'HH:mm',
     'HH'
+  ],
+  rowKeyShardOptions:[
+    true,false
   ]
 });

http://git-wip-us.apache.org/repos/asf/kylin/blob/f76190fe/webapp/app/partials/cubeDesigner/advanced_settings.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/advanced_settings.html b/webapp/app/partials/cubeDesigner/advanced_settings.html
index 0499b60..b6d710e 100755
--- a/webapp/app/partials/cubeDesigner/advanced_settings.html
+++ b/webapp/app/partials/cubeDesigner/advanced_settings.html
@@ -211,6 +211,7 @@
             <th style="width:200px;">Column</th>
             <th>Encoding</th>
             <th>Length</th>
+            <th>Shard By</th>
             <th ng-if="state.mode=='edit'"></th>
           </tr>
           </thead>
@@ -255,6 +256,19 @@
               <span ng-if="state.mode=='view'">{{rowkey_column.valueLength}}</span>
             </td>
 
+            <td>
+              <select ng-if="state.mode=='edit'" style="width:180px;"
+                      chosen ng-model="rowkey_column.isShardBy"
+                      tooltip="false by default"
+                      data-placeholder="false by default"
+                      ng-change="refreshRowKey(convertedRowkeys,$index,rowkey_column,true)"
+                      ng-options="dt as dt for dt in cubeConfig.rowKeyShardOptions">
+                <option value=""></option>
+              </select>
+              <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>
+              <span ng-if="state.mode=='view'">{{rowkey_column.isShardBy}}</span>
+            </td>
+
             <td ng-if="state.mode=='edit'">
               <button class="btn btn-xs btn-info"
                       ng-click="removeRowkey(convertedRowkeys, $index,rowkey_column)"><i