You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2016/12/16 08:07:10 UTC

[09/14] kylin git commit: KYLIN 1875 update cube designer

KYLIN 1875 update cube designer

Signed-off-by: zhongjian <ji...@163.com>


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

Branch: refs/heads/KYLIN-2283
Commit: a9230473e3c3bad774f930ad90f4479dcbe34fa0
Parents: 076fbcf
Author: chenzhx <34...@qq.com>
Authored: Tue Dec 13 15:32:54 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Dec 15 18:57:36 2016 +0800

----------------------------------------------------------------------
 webapp/app/js/controllers/cubeAdvanceSetting.js |  5 --
 webapp/app/js/controllers/cubeDimensions.js     | 75 ++++++++++----------
 webapp/app/js/controllers/cubeEdit.js           | 60 +++++++++-------
 webapp/app/js/controllers/cubeMeasures.js       | 21 +-----
 webapp/app/js/controllers/modelDataModel.js     | 11 ++-
 .../cubeDesigner/advanced_settings.html         |  3 +-
 .../app/partials/cubeDesigner/dimensions.html   | 46 ++++--------
 webapp/app/partials/cubeDesigner/measures.html  |  7 +-
 8 files changed, 104 insertions(+), 124 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/js/controllers/cubeAdvanceSetting.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeAdvanceSetting.js b/webapp/app/js/controllers/cubeAdvanceSetting.js
index 8192419..e557afa 100644
--- a/webapp/app/js/controllers/cubeAdvanceSetting.js
+++ b/webapp/app/js/controllers/cubeAdvanceSetting.js
@@ -38,12 +38,7 @@ KylinApp.controller('CubeAdvanceSettingCtrl', function ($scope, $modal,cubeConfi
   //rowkey
   $scope.convertedRowkeys = [];
   angular.forEach($scope.cubeMetaFrame.rowkey.rowkey_columns,function(item){
-    //var _isDictionaries = item.encoding === "dict"?"true":"false";
-    //var version=$scope.getTypeVersion(encoding);
     item.encoding=$scope.removeVersion(item.encoding);
-    //var _isFixedLength = item.encoding.substring(0,12) === "fixed_length"?"true":"false";//fixed_length:12
-    //var _isIntegerLength = item.encoding.substring(0,7) === "integer"?"true":"false";
-    //var _isIntLength = item.encoding.substring(0,3) === "int"?"true":"false";
     var _encoding = item.encoding;
     var _valueLength ;
     var baseKey=item.encoding.replace(/:\d+/,'');

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/js/controllers/cubeDimensions.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeDimensions.js b/webapp/app/js/controllers/cubeDimensions.js
index 7cb850b..e2787a5 100644
--- a/webapp/app/js/controllers/cubeDimensions.js
+++ b/webapp/app/js/controllers/cubeDimensions.js
@@ -18,7 +18,7 @@
 
 'use strict';
 
-KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cubesManager,SweetAlert) {
+KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cubesManager,SweetAlert, VdmUtil) {
 
     $scope.cubeManager = cubesManager;
     // Available columns list derived from cube data model.
@@ -27,10 +27,6 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
     // Columns selected and disabled status bound to UI, group by table.
     $scope.selectedColumns = {};
 
-    // Available tables cache: 1st is the fact table, next are lookup tables.
-    $scope.availableTables = [];
-
-
     /**
      * Helper func to get columns that dimensions based on, three cases:
      * 1. normal dimension: column array.
@@ -40,17 +36,10 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
     var dimCols = function (dim) {
         var referredCols = [];
 
-        // Case 3.
         if (dim.derived && dim.derived.length) {
             referredCols = referredCols.concat(dim.derived);
         }
 
-        // Case 2.
-        //if (dim.hierarchy && dim.column.length) {
-        //    referredCols = referredCols.concat(dim.column);
-        //}
-
-        // Case 1.
         if (!dim.derived && dim.column) {
             referredCols.push(dim.column);
         }
@@ -60,52 +49,66 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
 
     // Dump available columns plus column table name, whether is from lookup table.
     $scope.initColumns = function () {
-        var factTable = $scope.metaModel.model.fact_table;
 
+        var rootFactTable = VdmUtil.removeNameSpace($scope.metaModel.model.fact_table);
+
+        if($scope.aliasName.length==0){
+          $scope.aliasName.push(rootFactTable);
+          $scope.aliasTableMap[rootFactTable]=$scope.metaModel.model.fact_table;
+          $scope.tableAliasMap[$scope.metaModel.model.fact_table]=rootFactTable;
+          angular.forEach($scope.metaModel.model.lookups,function(joinTable){
+            if(!joinTable.alias){
+              joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
+            }
+            $scope.aliasTableMap[joinTable.alias]=joinTable.table;
+            $scope.tableAliasMap[joinTable.table]=joinTable.alias;
+            $scope.aliasName.push(joinTable.alias);
+          });
+        }
         // At first dump the columns of fact table.
-//        var cols = $scope.getColumnsByTable(factTable);
-        var cols = $scope.getDimColumnsByTable(factTable);
+
+        var cols = $scope.getDimColumnsByAlias(rootFactTable);
 
         // Initialize selected available.
         var factSelectAvailable = {};
 
         for (var i = 0; i < cols.length; i++) {
-            cols[i].table = factTable;
-            cols[i].isLookup = false;
+            cols[i].table = rootFactTable;
 
             // Default not selected and not disabled.
             factSelectAvailable[cols[i].name] = {name:cols[i].name ,selected: false};
 
         }
 
-        $scope.availableColumns[factTable] = cols;
+        $scope.availableColumns[rootFactTable] = cols;
         factSelectAvailable.all=false;
-        $scope.selectedColumns[factTable] = factSelectAvailable;
-        $scope.availableTables.push(factTable);
-
+        $scope.selectedColumns[rootFactTable] = factSelectAvailable;
+//        $scope.availableTables.push(rootFactTable);
+        $scope.availableFactTables.push(rootFactTable);
         // Then dump each lookup tables.
         var lookups = $scope.metaModel.model.lookups;
 
         for (var j = 0; j < lookups.length; j++) {
-            var cols2 = $scope.getDimColumnsByTable(lookups[j].table);
+            if(lookups[j].kind=="FACT"){
+                $scope.availableFactTables.push(lookups[j].alias);
+            }else{
+                $scope.availableLookupTables.push(lookups[j].alias);
+            }
+            var cols2 = $scope.getDimColumnsByAlias(lookups[j].alias);
 
             // Initialize selected available.
             var lookupSelectAvailable = {};
 
             for (var k = 0; k < cols2.length; k++) {
-                cols2[k].table = lookups[j].table;
-                cols2[k].isLookup = true;
+                cols2[k].table = lookups[j].alias;
 
                 // Default not selected and not disabled.
                 lookupSelectAvailable[cols2[k].name] = {name:cols2[k].name,selected: false};
             }
 
-            $scope.availableColumns[lookups[j].table] = cols2;
+            $scope.availableColumns[lookups[j].alias] = cols2;
             lookupSelectAvailable.all=false;
-            $scope.selectedColumns[lookups[j].table] = lookupSelectAvailable;
-            if($scope.availableTables.indexOf(lookups[j].table)==-1){
-                $scope.availableTables.push(lookups[j].table);
-            }
+            $scope.selectedColumns[lookups[j].alias] = lookupSelectAvailable;
         }
     };
 
@@ -178,10 +181,6 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
             types.push('derived');
         }
 
-        //if (dim.hierarchy && dim.column.length) {
-        //    types.push('hierarchy');
-        //}
-
         if (!types.length) {
             types.push('normal');
         }
@@ -259,7 +258,6 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
                 errorInfo+="\n"+item;
             });
             if(errors.length){
-//                SweetAlert.swal('Warning!', errorInfo, '');
                 SweetAlert.swal('', errorInfo, 'warning');
                 return false;
             }else{
@@ -384,7 +382,7 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
         var selectedCols = $scope.getSelectedCols();
         dimList=[];
         angular.forEach(selectedCols, function (cols, table) {
-            if ($scope.metaModel.model.fact_table == table) {
+            if ($scope.availableFactTables.indexOf(table)!=-1) {
                 // Fact table: for each selected column, create one normal dimension.
                 for (var i = 0; i < cols.length; i++) {
                     dimList.push(Dimension(cols[i].name, table, [cols[i].col], 'normal'));
@@ -404,8 +402,8 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
 
     };
 
-    $scope.autoChange= function(table,name){
-         if($scope.metaModel.model.fact_table==table){
+    $scope.autoChange = function(table,name){
+         if($scope.availableFactTables.indexOf(table)!=-1){
                if($scope.selectedColumns[table][name].selected==false){
                     $scope.selectedColumns[table].all=false;
                }else{
@@ -437,8 +435,9 @@ KylinApp.controller('CubeDimensionsCtrl', function ($scope, $modal,MetaModel,cub
               }
          }
     }
+
     $scope.autoChangeAll= function(table){
-         if($scope.metaModel.model.fact_table==table){
+         if($scope.availableFactTables.indexOf(table)!=-1){
               if($scope.selectedColumns[table].all==true){
                    angular.forEach($scope.selectedColumns[table],function(col){
                         if(typeof col==="object"){

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index b901e48..d58f08f 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -22,6 +22,11 @@
 KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $location, $templateCache, $interpolate, MessageService, TableService, CubeDescService, CubeService, loadingRequest, SweetAlert, $log, cubeConfig, CubeDescModel, MetaModel, TableModel, ModelDescService, modelsManager, cubesManager, ProjectModel, StreamingModel, StreamingService,VdmUtil) {
   $scope.cubeConfig = cubeConfig;
   $scope.metaModel = {};
+  $scope.tableAliasMap={};
+  $scope.aliasTableMap={};
+  $scope.aliasName=[];
+  $scope.availableFactTables = [];
+  $scope.availableLookupTables = [];
   $scope.modelsManager = modelsManager;
 
   //add or edit ?
@@ -112,7 +117,15 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     }
     return filterEncoding;
   }
-
+  $scope.getColumnsByAlias = function (alias) {
+    var temp = [];
+    angular.forEach(TableModel.selectProjectTables, function (table) {
+      if (table.name == $scope.aliasTableMap[alias]) {
+        temp = table.columns;
+      }
+    });
+    return temp;
+  };
   $scope.getColumnsByTable = function (tableName) {
     var temp = [];
     angular.forEach(TableModel.selectProjectTables, function (table) {
@@ -124,13 +137,13 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
   };
 
   //get columns from model
-  $scope.getDimColumnsByTable = function (tableName) {
-    if (!tableName) {
+  $scope.getDimColumnsByAlias = function (alias) {
+    if (!alias) {
       return [];
     }
-    var tableColumns = $scope.getColumnsByTable(tableName);
+    var tableColumns = $scope.getColumnsByAlias(alias);
     var tableDim = _.find($scope.metaModel.model.dimensions, function (dimension) {
-      return dimension.table == tableName
+      return dimension.table == alias
     });
     if(!tableDim){
       return [];
@@ -169,17 +182,18 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
   $scope.getAllModelDimMeasureColumns = function () {
     var me_columns = [];
     if($scope.metaModel.model.metrics){
-      angular.forEach($scope.metaModel.model.metrics,function(metric,index){
+      angular.forEach($scope.metaModel.model.metrics,function(metric){
         me_columns.push(metric);
       })
     }
 
-    angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
+    angular.forEach($scope.metaModel.model.dimensions,function(dimension){
       if(dimension.columns){
-        me_columns = me_columns.concat(dimension.columns);
+        angular.forEach(dimension.columns,function(column){
+          me_columns = me_columns.concat(dimension.table+"."+column);
+        });
       }
-    })
-
+    });
     return distinct_array(me_columns);
   };
 
@@ -187,7 +201,9 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     var me_columns = [];
     angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
       if(dimension.columns){
-        me_columns = me_columns.concat(dimension.columns);
+        angular.forEach(dimension.columns,function(column){
+          me_columns = me_columns.concat(dimension.table+"."+column);
+        });
       }
     })
 
@@ -209,11 +225,11 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     var me_columns = [];
     //add cube dimension column for specific measure
     angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
-      if($scope.metaModel.model.fact_table !== dimension.table){
+      if($scope.availableFactTables.indexOf(dimension.table)==-1){
         return;
       }
       if(dimension.column && dimension.derived == null){
-        me_columns.push(dimension.column);
+        me_columns.push(dimension.table+"."+dimension.column);
       }
     });
     return me_columns;
@@ -224,12 +240,12 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
     var me_columns = [];
     angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
       if(dimension.column && dimension.derived == null){
-        me_columns.push(dimension.column);
+        me_columns.push(dimension.table+"."+dimension.column);
 
       }
       else{
         angular.forEach(dimension.derived,function(derived){
-          me_columns.push(derived);
+          me_columns.push(dimension.table+"."+derived);
         });
 
       }
@@ -256,8 +272,8 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
 
 
 
-  $scope.getColumnType = function (_column, table) {
-    var columns = $scope.getColumnsByTable(table);
+  $scope.getColumnType = function (_column, alias) {
+    var columns = $scope.getColumnsByAlias(alias);
     var type;
     angular.forEach(columns, function (column) {
       if (_column === column.name) {
@@ -314,10 +330,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
             $scope.metaModel.model = _model;
           });
         }
-
         $scope.state.cubeSchema = angular.toJson($scope.cubeMetaFrame, true);
-
-
       }
     });
 
@@ -520,7 +533,6 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
   }
 
   function reGenerateRowKey() {
-    $log.log("reGen rowkey & agg group");
     //var fk_pk = {};
     var tmpRowKeyColumns = [];
     var tmpAggregationItems = [];//put all aggregation item
@@ -530,7 +542,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
 
     for( var i=0;i<$scope.metaModel.model.lookups.length;i++){
       var lookup = $scope.metaModel.model.lookups[i];
-      var table = lookup.table;
+      var table = lookup.alias;
       pfkMap[table] = {};
       for(var j=0;j<lookup.join.primary_key.length;j++){
         var pk = lookup.join.primary_key[j];
@@ -543,7 +555,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
       //derived column
       if (dimension.derived && dimension.derived.length) {
         var lookup = _.find($scope.metaModel.model.lookups, function (lookup) {
-          return lookup.table == dimension.table
+          return lookup.alias == dimension.table
         });
         angular.forEach(lookup.join.foreign_key, function (fk, index) {
           for (var i = 0; i < tmpRowKeyColumns.length; i++) {
@@ -568,7 +580,7 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
 
         var tableName = dimension.table;
         var columnName = dimension.column;
-        var rowkeyColumn = dimension.column;
+        var rowkeyColumn = dimension.table+"."+dimension.column;
         if(pfkMap[tableName]&&pfkMap[tableName][columnName]){
           //lookup table primary key column as dimension
           rowkeyColumn = pfkMap[tableName][columnName];

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index 18f53c2..67a107b 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -98,24 +98,8 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
           if(/topn\.encoding\./.test(configuration)){
             var _name=configuration.slice(14);
             var item=$scope.newMeasure.function.configuration[configuration];
-            //var _isFixedLength = item.substring(0,12) === "fixed_length"?"true":"false";//fixed_length:12
-            //var _isIntegerLength = item.substring(0,7) === "integer"?"true":"false";
-            //var _isIntLength = item.substring(0,3) === "int"?"true":"false";
             var _encoding = item;
             var _valueLength = 0 ;
-            //if(_isFixedLength !=="false"){
-            //  _valueLength = item.substring(13,item.length);
-            //  _encoding = "fixed_length";
-            //}
-            //if(_isIntLength!="false" && _isIntegerLength=="false" ){
-            //  _valueLength = item.substring(4,item.length);
-            //  _encoding = "int";
-            //}
-            //
-            //if(_isIntegerLength!="false" ){
-            //  _valueLength = item.substring(8,item.length);
-            //  _encoding = "integer";
-            //}
             var version=$scope.newMeasure.function.configuration['topn.encoding_version.'+_name]||1;
             item=$scope.removeVersion(item);
             var baseKey=item.replace(/:\d+/,'');
@@ -369,8 +353,9 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
     if($scope.newMeasure.function.parameter.type=="column"&&$scope.newMeasure.function.expression!=="COUNT_DISTINCT"){
 
       var column = $scope.newMeasure.function.parameter.value;
-      var colType = $scope.getColumnType(column, $scope.metaModel.model.fact_table); // $scope.getColumnType defined in cubeEdit.js
-
+      if(column){
+        var colType = $scope.getColumnType(VdmUtil.removeNameSpace(column), VdmUtil.getNameSpaceAliasName(column)); // $scope.getColumnType defined in cubeEdit.js
+      }
       if(colType==""||!colType){
         $scope.newMeasure.function.returntype = "";
         return;

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/js/controllers/modelDataModel.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/modelDataModel.js b/webapp/app/js/controllers/modelDataModel.js
index 95a4c70..a09101b 100644
--- a/webapp/app/js/controllers/modelDataModel.js
+++ b/webapp/app/js/controllers/modelDataModel.js
@@ -20,15 +20,20 @@
 
 KylinApp.controller('ModelDataModelCtrl', function ($location,$scope, $modal,cubeConfig,MetaModel,SweetAlert,ModelGraphService,$log,TableModel,ModelService,loadingRequest,modelsManager,VdmUtil) {
     $scope.modelsManager = modelsManager;
+    angular.forEach($scope.modelsManager.selectedModel.lookups,function(joinTable){
+      if(!joinTable.alias){
+           joinTable.alias=VdmUtil.removeNameSpace(joinTable.table);
+      }
+    });
     $scope.init = function (){
       $scope.FactTable={root:$scope.modelsManager.selectedModel.fact_table};
       $scope.aliasTableMap[VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table)]=$scope.modelsManager.selectedModel.fact_table;
       $scope.tableAliasMap[$scope.modelsManager.selectedModel.fact_table]=VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table);
       $scope.aliasName.push(VdmUtil.removeNameSpace($scope.modelsManager.selectedModel.fact_table));
       angular.forEach($scope.modelsManager.selectedModel.lookups,function(joinTable){
-         $scope.aliasTableMap[joinTable.alias]=joinTable.table;
-         $scope.tableAliasMap[joinTable.table]=joinTable.alias;
-         $scope.aliasName.push(joinTable.alias);
+        $scope.aliasTableMap[joinTable.alias]=joinTable.table;
+        $scope.tableAliasMap[joinTable.table]=joinTable.alias;
+        $scope.aliasName.push(joinTable.alias);
       });
     }
     if($scope.state.mode=='edit'){

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/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 2728240..438eb1f 100755
--- a/webapp/app/partials/cubeDesigner/advanced_settings.html
+++ b/webapp/app/partials/cubeDesigner/advanced_settings.html
@@ -63,7 +63,6 @@
                           {{rowkey_column.column}}
                         </ui-select-choices>
                       </ui-select>
-
                       <p ng-if="state.mode=='view'">
                         {{aggregation_group.includes}}</p>
                     </td>
@@ -203,7 +202,7 @@
                   <thead>
                   <tr>
                     <th>ID</th>
-                    <th style="width:200px;">Column</th>
+                    <th class="col-xs-4">Column</th>
                     <th>Encoding</th>
                     <th>Length</th>
                     <th>Shard By</th>

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/partials/cubeDesigner/dimensions.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/dimensions.html b/webapp/app/partials/cubeDesigner/dimensions.html
index ed265c4..8c1cdab 100644
--- a/webapp/app/partials/cubeDesigner/dimensions.html
+++ b/webapp/app/partials/cubeDesigner/dimensions.html
@@ -22,16 +22,6 @@
     <div class="dataTables_wrapper form-inline no-footer">
         <div class="row">
             <div class="col-xs-6" ng-if="state.mode=='edit'">
-                <div class="btn-group">
-                    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" ng-disabled="instance.status=='READY'">
-                        <i class="fa fa-plus"></i> Add Dimension <span class="ace-icon fa fa-caret-down icon-on-right"></span>
-                    </button>
-                    <ul class="dropdown-menu" role="menu">
-                        <li><a ng-click="addDim('normal')">Normal</a></li>
-                        <!--<li><a ng-click="addDim('hierarchy')">Hierarchy</a></li>-->
-                        <li><a ng-click="addDim('derived')">Derived</a></li>
-                    </ul>
-                </div>
                 <button type="button" class="btn btn-default" ng-disabled="!metaModel.model.fact_table.length||instance.status=='READY'"
                         ng-click="openAutoGenModal()" >
                     <i class="fa fa-building-o"></i> Auto Generator
@@ -51,7 +41,7 @@
                     <th>Name</th>
                     <th>Table Name</th>
                     <th>Type</th>
-                    <th></th>
+                    <th>Column</th>
                     <th ng-if="state.mode=='edit'">Actions</th>
                 </tr>
             </thead>
@@ -67,7 +57,7 @@
                     </td>
                     <!--Table Name -->
                     <td>
-                        <span tooltip="{{dimension.table == metaModel.model.fact_table ? 'Fact Table' : 'Lookup Table'}}">{{dimension.table}}</span>
+                        <span>{{dimension.table}}</span>
                     </td>
                     <!--Type-->
                     <td>
@@ -77,18 +67,12 @@
                     <td>
                         <div ng-repeat="t in getDimType(dimension)">
                             <div ng-switch="t">
-                                <!--<dl class="dl-horizontal" ng-switch-when="hierarchy">-->
-                                    <!--<dt>Hierarchy</dt>-->
-                                    <!--<dd>{{dimension.column}}</dd>-->
-                                <!--</dl>-->
-                                <dl class="dl-horizontal" ng-switch-when="derived">
-                                    <dt>Derived</dt>
-                                    <dd>{{dimension.derived}}</dd>
-                                </dl>
-                                <dl class="dl-horizontal" ng-switch-when="normal">
-                                    <dt>Column</dt>
-                                    <dd>{{dimension.column}}</dd>
-                                </dl>
+                                <span  ng-switch-when="derived">
+                                    {{dimension.derived}}
+                                </span>
+                                <span ng-switch-when="normal">
+                                    {{dimension.column}}
+                                </span>
                             </div>
                         </div>
                     </td>
@@ -156,13 +140,13 @@
                             <label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Table Name</b></label>
                             <div class="col-xs-12 col-sm-6" ng-if="dimType.indexOf('derived') >= 0">
                                 <select class="form-control" required="true" chosen data-placeholder="Select a lookup table"
-                                        ng-model="newDimension.table" ng-options="table for table in availableTables.slice(1)">
+                                        ng-model="newDimension.table" ng-options="table for table in availableLookupTables">
                                     <option value=""></option>
                                 </select>
                             </div>
                             <div class="col-xs-12 col-sm-6" ng-if="dimType.indexOf('derived') == -1">
                                 <select class="form-control" required="true" chosen data-placeholder="Select a table"
-                                        ng-model="newDimension.table" ng-options="table for table in availableTables">
+                                        ng-model="newDimension.table" ng-options="table for table in availableFactTables">
                                     <option value=""></option>
                                 </select>
                             </div>
@@ -180,7 +164,7 @@
                             <label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Column Name</b></label>
                             <div class="col-xs-12 col-sm-6">
                                 <select class="form-control" required="true" chosen data-placeholder="Select a column"
-                                        ng-model="newDimension.column" ng-options="column.name as column.name for column in getDimColumnsByTable(newDimension.table)">
+                                        ng-model="newDimension.column" ng-options="column.name as column.name for column in getDimColumnsByAlias(newDimension.table)">
                                     <option value=""></option>
                                 </select>
                             </div>
@@ -195,7 +179,7 @@
                                         <div>
                                             <select chosen style="width: 80%;" data-placeholder="Derived Columns.."
                                                     ng-model="newDimension.derived[$index]"
-                                                    ng-options="columns.name as columns.name for columns in getDimColumnsByTable(newDimension.table)" >
+                                                    ng-options="columns.name as columns.name for columns in getDimColumnsByAlias(newDimension.table)" >
                                                 <option value=""></option>
                                             </select>
                                             <button class="pull-right btn btn-xs btn-danger" style="cursor: pointer " tooltip="Delete"
@@ -236,9 +220,9 @@
                         <div class="box-body">
                           <ul class="list-unstyled columns-region">
                               <!--FactTable-->
-                              <div ng-repeat="table in availableTables track by $index" ng-if="$index == 0"  class="panel-default " >
+                              <div ng-repeat="table in availableFactTables track by $index"   class="panel-default " >
                                 <h4>{{table}}[FactTable]</h4>
-                                <table class="table table-striped table-hover ng-scope"    >
+                                <table class="table table-striped table-hover ng-scope">
                                   <tr >
                                     <td class="col-xs-2"><label><input type="checkbox" ng-model="selectedColumns[table].all" ng-change="autoChangeAll(table)">Select All</label></td>
                                     <td class="col-xs-4"><label>Name</label></td>
@@ -262,7 +246,7 @@
                                 </table>
                               </div>
                               <!--LookUp Table-->
-                              <div ng-repeat="table in availableTables track by $index" ng-if="$index > 0"  class="panel-default" >
+                              <div ng-repeat="table in availableLookupTables track by $index"  class="panel-default" >
                                 <h4>{{table}}[LookupTable]</h4>
                                 <table class="table table-striped table-hover ng-scope">
                                   <tr class="row" >

http://git-wip-us.apache.org/repos/asf/kylin/blob/a9230473/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index 8961cc6..492220c 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -148,6 +148,7 @@
                                       ng-if="newMeasure.function.parameter.type == 'constant'"
                                       ng-init="newMeasure.function.parameter.value = 1"><b>&nbsp;&nbsp;1</b></span>
                                 <!--!COUNT_DISTINCT-->
+
                                 <select class="form-control" chosen
                                         ng-if="newMeasure.function.parameter.type == 'column' && (newMeasure.function.expression == 'COUNT_DISTINCT'||newMeasure.function.expression == 'RAW')"
                                         ng-model="newMeasure.function.parameter.value" required
@@ -239,7 +240,7 @@
                                   <thead>
                                   <tr>
                                     <th>ID</th>
-                                    <th>Column</th>
+                                    <th class="col-xs-5" >Column</th>
                                     <th>Encoding</th>
                                     <th>Length</th>
                                     <th ng-if="state.mode=='edit'"></th>
@@ -257,9 +258,9 @@
                                     </td>
                                     <!--Column Name -->
                                     <td>
-                                      <select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required
+                                      <select class="form-control col-xs-12" chosen ng-if="nextPara.type !== 'constant'" required
                                               ng-model="groupby_column.name"
-                                              ng-options="column as column for column in getAllModelDimColumns()" style="width:200px;">
+                                              ng-options="column as column for column in getAllModelDimColumns()" >
                                         <option value="">--Select A Column--</option>
                                       </select>
                                     </td>