You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/12/17 08:01:51 UTC
[kylin] 03/03: KYLIN-4211 Front end for the feature of setting date
partition in different columns
This is an automated email from the ASF dual-hosted git repository.
nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
commit cedc430f7125b89bc17ca9d7b92f6581f33b4e48
Author: nichunen <ni...@apache.org>
AuthorDate: Tue Dec 17 16:00:38 2019 +0800
KYLIN-4211 Front end for the feature of setting date partition in different columns
---
.../app/js/controllers/modelConditionsSettings.js | 25 ++++++++-
.../modelDesigner/conditions_settings.html | 63 ++++++++++++++++++++--
2 files changed, 82 insertions(+), 6 deletions(-)
diff --git a/webapp/app/js/controllers/modelConditionsSettings.js b/webapp/app/js/controllers/modelConditionsSettings.js
index 500db40..42ffa98 100644
--- a/webapp/app/js/controllers/modelConditionsSettings.js
+++ b/webapp/app/js/controllers/modelConditionsSettings.js
@@ -30,6 +30,7 @@ KylinApp.controller('ModelConditionsSettingsCtrl', function ($scope, $modal,Meta
// firstValue: For fixing ng-chosen cannot watch first value change.
$scope.partition_date = { type: '', format: '', firstValue: '' };
$scope.partition_time = { type: '', format: '', firstValue: '' };
+ $scope.partition_ymd_columns = { year_column: '', month_column: '', day_column: ''};
$scope.initSetting = function (){
$scope.selectedTables={fact:VdmUtil.getNameSpaceAliasName($scope.modelsManager.selectedModel.partition_desc.partition_date_column)}
@@ -160,8 +161,19 @@ KylinApp.controller('ModelConditionsSettingsCtrl', function ($scope, $modal,Meta
return;
}
};
+
+ $scope.partitionYMDColumnChange = function (type, value) {
+ if (type === 'Y') {
+ $scope.modelsManager.selectedModel.partition_desc.partition_date_column = value + ',' + $scope.partition_ymd_columns.month_column + ',' + $scope.partition_ymd_columns.day_column;
+ } else if (type === 'M') {
+ $scope.modelsManager.selectedModel.partition_desc.partition_date_column = $scope.partition_ymd_columns.year_column + ',' + value + ',' + $scope.partition_ymd_columns.day_column;
+ } else if (type === 'D') {
+ $scope.modelsManager.selectedModel.partition_desc.partition_date_column = $scope.partition_ymd_columns.year_column + ',' + $scope.partition_ymd_columns.month_column + ',' + value;
+ }
+ };
- $scope.partitionColumn ={
+ $scope.partitionColumn = {
+ "hasSeparateDateColumns": false,
"hasSeparateTimeColumn" : false
}
@@ -186,9 +198,18 @@ KylinApp.controller('ModelConditionsSettingsCtrl', function ($scope, $modal,Meta
if($scope.modelsManager.selectedModel.partition_desc.partition_time_column){
$scope.partitionColumn.hasSeparateTimeColumn = true;
}
- $scope.toggleHasSeparateColumn = function(){
+ $scope.toggleHasSeparateTimeColumn = function(){
if($scope.partitionColumn.hasSeparateTimeColumn == false){
$scope.modelsManager.selectedModel.partition_desc.partition_time_column = null;
}
}
+ $scope.toggleHasSeparateDateColumns = function(){
+ $scope.modelsManager.selectedModel.partition_desc.partition_date_column = null;
+ if($scope.partitionColumn.hasSeparateDateColumns == false){
+ $scope.partition_ymd_columns = { year_column: '', month_column: '', day_column: ''};
+ } else {
+ $scope.partition_date.type = 'yyyy-MM-dd';
+ $scope.modelsManager.selectedModel.partition_desc.partition_condition_builder = 'org.apache.kylin.metadata.model.PartitionDesc$CustomYearMonthDayFieldPartitionConditionBuilder';
+ }
+ }
});
diff --git a/webapp/app/partials/modelDesigner/conditions_settings.html b/webapp/app/partials/modelDesigner/conditions_settings.html
index becb327..69610e4 100644
--- a/webapp/app/partials/modelDesigner/conditions_settings.html
+++ b/webapp/app/partials/modelDesigner/conditions_settings.html
@@ -22,8 +22,61 @@
<h3>Partition</h3>
<div class="box-body">
+ <!--Date Format-->
+ <div class="form-group middle-popover">
+ <div class="row">
+ <label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Has separate columns for "year", "month" and "day" ?</b> <i kylinpopover placement="right" title="Separate Date Columns" template="separateDateColumnsTip.html" class="fa fa-info-circle"></i></label>
+ <div class="col-xs-12 col-sm-6">
+ <toggle-switch on-label="Yes" off-label="No" ng-disabled="state.mode!=='edit'" ng-click="toggleHasSeparateDateColumns()" ng-model="partitionColumn.hasSeparateDateColumns"></toggle-switch>
+ </div>
+ </div>
+ </div>
+
+ <!--Partition Columns-->
+ <div class="form-group" ng-if="partitionColumn.hasSeparateDateColumns">
+ <div class="row middle-popover">
+ <label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Partition Date Columns</b> <i kylinpopover placement="right" title="Partition Date Columns" class="fa fa-info-circle"></i></label>
+ <div class="col-xs-12 col-sm-6" ng-if="state.mode=='edit'">
+ <select width="'49%'" chosen data-placeholder="e.g. DEFAULT.TABLE_FACT"
+ ng-model="selectedTables.fact"
+ ng-change="tableChange(selectedTables.fact)"
+ data-placement=""
+ ng-options="alias as alias for alias in availableFactTables" >
+ <option value="">--Select Partition Table--</option>
+ </select>
+
+ <select width="'49%'" chosen data-placeholder="e.g. DEFAULT.TABLE_FACT.YEAR"
+ ng-model="partition_ymd_columns.year_column"
+ ng-change="partitionYMDColumnChange('Y', partition_ymd_columns.year_column)"
+ data-placement=""
+ ng-options="selectedTables.fact+'.'+columns.name as columns.name for columns in getPartitonColumns(selectedTables.fact)" >
+ <option value="">--Select Partition Column for Year--</option>
+ </select>
+ <select width="'49%'" chosen data-placeholder="e.g. DEFAULT.TABLE_FACT.MONTH"
+ ng-model="partition_ymd_columns.month_column"
+ ng-change="partitionYMDColumnChange('M', partition_ymd_columns.month_column)"
+ data-placement=""
+ ng-options="selectedTables.fact+'.'+columns.name as columns.name for columns in getPartitonColumns(selectedTables.fact)" >
+ <option value="">--Select Partition Column for Month--</option>
+ </select>
+ <select width="'49%'" chosen data-placeholder="e.g. DEFAULT.TABLE_FACT.DAY"
+ ng-model="partition_ymd_columns.day_column"
+ ng-change="partitionYMDColumnChange('D', partition_ymd_columns.day_column)"
+ data-placement=""
+ ng-options="selectedTables.fact+'.'+columns.name as columns.name for columns in getPartitonColumns(selectedTables.fact)" >
+ <option value="">--Select Partition Column for Day--</option>
+ </select>
+ </div>
+ <div class="col-xs-12 col-sm-6" ng-if="state.mode=='view'">
+ <span >
+ {{!!(modelsManager.selectedModel.partition_desc.partition_date_column)?modelsManager.selectedModel.partition_desc.partition_date_column: ''}}
+ </span>
+ </div>
+ </div>
+ </div>
+
<!--Partition Column-->
- <div class="form-group">
+ <div class="form-group" ng-if="!partitionColumn.hasSeparateDateColumns">
<div class="row middle-popover">
<label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Partition Date Column</b> <i kylinpopover placement="right" title="Partition Date Column" template="partitionTip.html" class="fa fa-info-circle"></i></label>
<div class="col-xs-12 col-sm-6" ng-if="state.mode=='edit'">
@@ -62,7 +115,7 @@
ng-if="state.mode=='edit'"
ng-model="partition_date.type"
ng-required="partition_date.type"
- ng-disabled="$parent.isFormatEdit.editable!==true"
+ ng-disabled="$parent.isFormatEdit.editable!==true || partitionColumn.hasSeparateDateColumns"
ng-class="{ 'col-5': partition_date.type === 'other' }"
ng-options="ddt as ddt for ddt in cubeConfig.partitionDateFormatOpt"
data-placement="">
@@ -85,7 +138,7 @@
<div class="row">
<label class="control-label col-xs-12 col-sm-3 no-padding-right font-color-default"><b>Has a separate "time of the day" column ?</b> <i kylinpopover placement="right" title="Separate Time Column" template="separateTimeColumnTip.html" class="fa fa-info-circle"></i></label>
<div class="col-xs-12 col-sm-6">
- <toggle-switch on-label="Yes" off-label="No" ng-disabled="state.mode!=='edit'" ng-click="toggleHasSeparateColumn()" ng-model="partitionColumn.hasSeparateTimeColumn"></toggle-switch>
+ <toggle-switch on-label="Yes" off-label="No" ng-disabled="state.mode!=='edit'" ng-click="toggleHasSeparateTimeColumn()" ng-model="partitionColumn.hasSeparateTimeColumn"></toggle-switch>
</div>
</div>
</div>
@@ -198,4 +251,6 @@
<script type="text/ng-template" id="separateTimeColumnTip.html">
<p>For cases where fact table saves date and hour at two columns (KYLIN-1427)</p>
</script>
-
+<script type="text/ng-template" id="separateDateColumnsTip.html">
+ <p>For cases where fact table saves date (year, month and day) in separate columns (KYLIN-4211)</p>
+</script>