You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/02/09 08:12:59 UTC

[kylin] branch kylin5 updated (976f40431f -> 3a5aa3c258)

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

xxyu pushed a change to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git


    from 976f40431f Add rat plugin conf
     new e104fa1051 KYLIN-5407 CH query total_scan_count issue
     new 810c1625cb KYLIN-5419 remove frontend code of AUTO_MAIN model type for kylin5
     new d7af308ea7 KYLIN-5423 refine hive datasource table loading more issue
     new 3a5aa3c258 KYLIN-5424 show index details from query table

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../components/common/ProjectEditModal/handler.js  |  1 -
 .../common/ProjectSidebar/ProjectSidebar.vue       |  6 +---
 kystudio/src/components/common/TreeList/index.vue  | 13 +++++---
 kystudio/src/components/project/project_list.vue   | 12 +------
 kystudio/src/components/project/project_select.vue |  2 +-
 .../src/components/query/query_history_table.vue   | 25 +++++++++++---
 kystudio/src/components/query/query_result.vue     | 38 +++++++++++++++++++---
 .../setting/SettingBasic/SettingBasic.vue          |  9 +----
 .../src/components/setting/SettingBasic/handler.js | 12 ++-----
 .../studio/StudioModel/ModelEdit/model.js          |  1 -
 .../studio/StudioModel/ModelEdit/schama.js         |  2 --
 .../ModelList/ModelAggregate/indexDetails.vue      |  4 +--
 kystudio/src/config/spec.js                        |  3 --
 kystudio/src/store/model.js                        |  3 ++
 kystudio/src/store/project.js                      |  3 --
 kystudio/src/store/system.js                       |  3 ++
 kystudio/src/store/types.js                        |  2 +-
 17 files changed, 77 insertions(+), 62 deletions(-)


[kylin] 04/04: KYLIN-5424 show index details from query table

Posted by xx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 3a5aa3c258d6066bc0ec5c87f2e0a59cd4ecd04a
Author: Qian Xia <la...@gmail.com>
AuthorDate: Thu Feb 9 15:39:14 2023 +0800

    KYLIN-5424 show index details from query table
---
 kystudio/src/components/query/query_history_table.vue                 | 2 +-
 kystudio/src/components/query/query_result.vue                        | 2 +-
 .../studio/StudioModel/ModelList/ModelAggregate/indexDetails.vue      | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/kystudio/src/components/query/query_history_table.vue b/kystudio/src/components/query/query_history_table.vue
index a39154844d..b2b47df506 100644
--- a/kystudio/src/components/query/query_history_table.vue
+++ b/kystudio/src/components/query/query_history_table.vue
@@ -1007,7 +1007,7 @@ export default class QueryHistoryTable extends Vue {
         status: []
       })
       const data = await handleSuccessAsync(res)
-      let row = data.value[0]
+      let [row = {}] = data.value.filter(it => it.id === layoutId)
       this.cuboidData = row
       let idStr = (row.id !== undefined) && (row.id !== null) && (row.id !== '') ? ' [' + row.id + ']' : ''
       this.detailType = row.source.indexOf('AGG') >= 0 ? 'aggDetail' : 'tabelIndexDetail'
diff --git a/kystudio/src/components/query/query_result.vue b/kystudio/src/components/query/query_result.vue
index 45a1aa539b..d6c4739976 100644
--- a/kystudio/src/components/query/query_result.vue
+++ b/kystudio/src/components/query/query_result.vue
@@ -579,7 +579,7 @@ export default class queryResult extends Vue {
         status: []
       })
       const data = await handleSuccessAsync(res)
-      let row = data.value[0]
+      let [row = {}] = data.value.filter(it => it.id === layoutId)
       this.cuboidData = row
       let idStr = (row.id !== undefined) && (row.id !== null) && (row.id !== '') ? ' [' + row.id + ']' : ''
       this.detailType = row.source.indexOf('AGG') >= 0 ? 'aggDetail' : 'tabelIndexDetail'
diff --git a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/indexDetails.vue b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/indexDetails.vue
index f8dee10935..4b181bca0c 100644
--- a/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/indexDetails.vue
+++ b/kystudio/src/components/studio/StudioModel/ModelList/ModelAggregate/indexDetails.vue
@@ -44,7 +44,7 @@
           </template>
         </el-table-column>
       </el-table>
-      <kylin-pager layout="prev, pager, next" :background="false" class="ksd-mt-10 ksd-center" ref="pager" :refTag="pageRefTags.IndexDetailPager" :perpage_size="currentCount" :curPage="currentAggPage+1" :totalSize="totalAggIndexColumnSize"  v-on:handleCurrentChange='changeAggPage'></kylin-pager>
+      <kylin-pager layout="prev, pager, next" :background="false" class="ksd-mt-10 ksd-center" ref="pager" :refTag="pageRefTags.IndexDetailPager" :perPageSize="currentCount" :curPage="currentAggPage+1" :totalSize="totalAggIndexColumnSize"  v-on:handleCurrentChange='changeAggPage'></kylin-pager>
     </template>
     <div v-else>
         <el-table
@@ -79,7 +79,7 @@
           </template>
           </el-table-column>
         </el-table>
-        <kylin-pager layout="prev, pager, next" :background="false" class="ksd-mt-10 ksd-center" ref="pager" :refTag="pageRefTags.IndexDetailPager" :perpage_size="currentCount" :curPage="currentPage+1" :totalSize="totalTableIndexColumnSize"  v-on:handleCurrentChange='currentChange'></kylin-pager>
+        <kylin-pager layout="prev, pager, next" :background="false" class="ksd-mt-10 ksd-center" ref="pager" :refTag="pageRefTags.IndexDetailPager" :perPageSize="currentCount" :curPage="currentPage+1" :totalSize="totalTableIndexColumnSize"  v-on:handleCurrentChange='currentChange'></kylin-pager>
       </div>
     <div slot="footer" class="dialog-footer">
       <el-button size="medium" @click="closeIndexDetailsDialog">{{$t('kylinLang.common.close')}}</el-button>


[kylin] 01/04: KYLIN-5407 CH query total_scan_count issue

Posted by xx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit e104fa10519c44d9c93b3765882df6385d60b859
Author: Qian Xia <la...@gmail.com>
AuthorDate: Thu Feb 2 17:59:23 2023 +0800

    KYLIN-5407 CH query total_scan_count issue
---
 .../src/components/query/query_history_table.vue   | 23 +++++++++++---
 kystudio/src/components/query/query_result.vue     | 36 +++++++++++++++++++---
 kystudio/src/store/model.js                        |  3 ++
 kystudio/src/store/system.js                       |  3 ++
 kystudio/src/store/types.js                        |  1 +
 5 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/kystudio/src/components/query/query_history_table.vue b/kystudio/src/components/query/query_history_table.vue
index 270a9686c3..a39154844d 100644
--- a/kystudio/src/components/query/query_history_table.vue
+++ b/kystudio/src/components/query/query_history_table.vue
@@ -136,11 +136,11 @@
                       <span class="label">{{$t('kylinLang.query.snapshot')}}:</span>
                       <span class="text">{{getSnapshots(props.row.realizations)}}</span>
                     </p>
-                    <p class="list">
+                    <p class="list" v-if="!isHaveStorageQuery(props.row.realizations) || (isHaveStorageQuery(props.row.realizations) && storageQueryMetricCollect)">
                       <span class="label">{{$t('kylinLang.query.total_scan_count')}}:</span>
                       <span class="text">{{props.row.total_scan_count | filterNumbers}}</span>
                     </p>
-                    <p class="list">
+                    <p class="list" v-if="!isHaveStorageQuery(props.row.realizations) || (isHaveStorageQuery(props.row.realizations) && storageQueryMetricCollect)">
                       <span class="label">{{$t('kylinLang.query.total_scan_bytes')}}:</span>
                       <span class="text">{{props.row.total_scan_bytes | filterNumbers}}</span>
                     </p>
@@ -326,7 +326,8 @@ import Diagnostic from 'components/admin/Diagnostic/index'
       'currentSelectedProject',
       'briefMenuGet',
       'queryHistoryFilter',
-      'isNonAdminGenQueryDiagPackage'
+      'isNonAdminGenQueryDiagPackage',
+      'storageQueryMetricCollect' // 系统逃生通道:是否可以获取统计分层存储扫描行数、扫描字节数
     ])
   },
   components: {
@@ -376,7 +377,8 @@ import Diagnostic from 'components/admin/Diagnostic/index'
       downloadQueryDiagnosticPackage: 'Download Query Diagnostic Package',
       queryError: 'Query error.',
       viewDetails: 'View Details',
-      errorTitle: 'Error Details'
+      errorTitle: 'Error Details',
+      fetchError: 'Can\'t get the result as the record is missing'
     }
   },
   filters: {
@@ -460,6 +462,19 @@ export default class QueryHistoryTable extends Vue {
     return [{text: this.$t('allModels'), value: 'modelName', icon: 'el-icon-ksd-cube'}]
   }
 
+  isHaveStorageQuery (realizations) {
+    let isStorageQuery = false
+    if (realizations && realizations.length) {
+      for (let r of realizations) {
+        if (r.secondStorage) {
+          isStorageQuery = true
+          break
+        }
+      }
+    }
+    return isStorageQuery
+  }
+
   // 排除击中 snapshot 的查询对象
   getRealizations (row) {
     return row.filter(item => item.indexType !== 'Table Snapshot' && item.layoutId !== 0 && item.layoutId !== -1)
diff --git a/kystudio/src/components/query/query_result.vue b/kystudio/src/components/query/query_result.vue
index d22f5103b9..45a1aa539b 100644
--- a/kystudio/src/components/query/query_result.vue
+++ b/kystudio/src/components/query/query_result.vue
@@ -83,9 +83,15 @@
               </span>
               <span class="text" v-else>{{Math.round(extraoption.duration / 1000 * 100) / 100 || 0.00}}s</span>
             </p>
-            <p class="resultText" v-if="!extraoption.pushDown">
+            <p class="resultText" v-if="!extraoption.pushDown&&(isHaveStorageQuery&&storageQueryMetricCollect || !isHaveStorageQuery)">
               <span class="label">{{$t('kylinLang.query.total_scan_count')}}: </span>
-              <span class="text">{{extraoption.totalScanRows | filterNumbers}}</span>
+              <span class="text" v-if="!isHaveStorageQuery">{{extraoption.totalScanRows | filterNumbers}}</span>
+              <span class="text" v-else>
+                <span v-if="isLoadingScanRows"><i class="el-ksd-icon-refresh_16"></i><span class="refresh-loading">{{$t('loading')}}</span></span>
+                <span v-else-if="extraoption.totalScanRows === 0" @click="fetchTotalScanRows"><i class="el-ksd-icon-refresh_16"></i><span class="refresh-label">{{$t('refreshManual')}}</span></span>
+                <span v-else-if="extraoption.totalScanRows === -1"><span class="refresh-error">{{$t('fetchError')}}</span></span>
+                <span v-else>{{extraoption.totalScanRows | filterNumbers}}</span>
+              </span>
             </p>
             <p class="resultText" v-if="!extraoption.pushDown">
               <span class="label">{{$t('kylinLang.query.result_row_count')}}: </span>
@@ -209,7 +215,8 @@ import echarts from 'echarts'
     ...mapActions({
       query: 'QUERY_BUILD_TABLES',
       postToExportCSV: 'EXPORT_CSV',
-      loadAllIndex: 'LOAD_ALL_INDEX'
+      loadAllIndex: 'LOAD_ALL_INDEX',
+      loadSecondStorageScanRows: 'LOAD_SECOND_STORAGE_SCAN_ROWS'
     }),
     ...mapActions('DetailDialogModal', {
       callGlobalDetailDialog: 'CALL_MODAL'
@@ -219,7 +226,8 @@ import echarts from 'echarts'
     ...mapGetters([
       'currentSelectedProject',
       'insightActions',
-      'datasourceActions'
+      'datasourceActions',
+      'storageQueryMetricCollect' // 系统逃生通道:是否可以获取统计分层存储扫描行数
     ])
   },
   components: {
@@ -327,6 +335,8 @@ export default class queryResult extends Vue {
   model = {
     uuid: ''
   }
+  isHaveStorageQuery = false
+  isLoadingScanRows = false
   // 增加可视化按钮
   get insightBtnGroups () {
     return [
@@ -493,11 +503,15 @@ export default class queryResult extends Vue {
     }
   }
   get realizations () {
+    this.isHaveStorageQuery = false
     if (this.extraoption.realizations && this.extraoption.realizations.length) {
       let realizations = []
       for (let i of this.extraoption.realizations) {
         if (i.layoutId !== -1 && i.layoutId !== null && i.layoutId !== 0) {
           realizations.push(i)
+          if (i.secondStorage) {
+            this.isHaveStorageQuery = true
+          }
         }
       }
       return realizations
@@ -535,6 +549,20 @@ export default class queryResult extends Vue {
     return this.$store.state.project.multi_partition_enabled ? this.$t('noModelRangeTips2') : this.$t('noModelRangeTips')
   }
 
+  async fetchTotalScanRows () {
+    try {
+      this.isLoadingScanRows = true
+      const { queryId } = this.extraoption
+      const res = await this.loadSecondStorageScanRows({ project: this.currentSelectedProject, query_id: queryId })
+      const data = await handleSuccessAsync(res)
+      this.extraoption.totalScanRows = data.total_scan_count
+      this.isLoadingScanRows = false
+    } catch (e) {
+      this.isLoadingScanRows = false
+      handleError(e)
+    }
+  }
+
   // 展示 layout 详情
   async openLayoutDetails (item) {
     const {modelId, layoutId} = item
diff --git a/kystudio/src/store/model.js b/kystudio/src/store/model.js
index cbcf4e1615..b2df301cd0 100644
--- a/kystudio/src/store/model.js
+++ b/kystudio/src/store/model.js
@@ -407,6 +407,9 @@ export default {
     },
     [types.CHECK_INTERNAL_MEASURE] (_, params) {
       return api.model.checkInternalMeasure(params)
+    },
+    [types.LOAD_SECOND_STORAGE_SCAN_ROWS] (_, params) {
+      return api.model.loadSecondStorageScanRows(params)
     }
   },
   getters: {
diff --git a/kystudio/src/store/system.js b/kystudio/src/store/system.js
index b662f17c36..1d80cd71c7 100644
--- a/kystudio/src/store/system.js
+++ b/kystudio/src/store/system.js
@@ -239,6 +239,9 @@ export default {
     },
     isStreamingEnabled: (state) => {
       return state.streamingEnabled === 'true'
+    },
+    storageQueryMetricCollect: (state) => {
+      return state.storageQuery === 'true'
     }
   }
 }
diff --git a/kystudio/src/store/types.js b/kystudio/src/store/types.js
index b403930e33..d02a703296 100644
--- a/kystudio/src/store/types.js
+++ b/kystudio/src/store/types.js
@@ -286,6 +286,7 @@ export const GET_JOB_SIMPLE_LOG = 'GET_JOB_SIMPLE_LOG'
 export const VALIDATE_DATE_FORMAT = 'VALIDATE_DATE_FORMAT'
 export const CHECK_INTERNAL_MEASURE = 'CHECK_INTERNAL_MEASURE'
 export const UPDATE_FILTER_MODEL_NAME_CLOUD = 'UPDATE_FILTER_MODEL_NAME_CLOUD'
+export const LOAD_SECOND_STORAGE_SCAN_ROWS = 'LOAD_SECOND_STORAGE_SCAN_ROWS'
 // table index
 export const GET_TABLE_INDEX = 'GET_TABLE_INDEX'
 export const EDIT_TABLE_INDEX = 'EDIT_TABLE_INDEX'


[kylin] 03/04: KYLIN-5423 refine hive datasource table loading more issue

Posted by xx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit d7af308ea77d63bef92d957ac31cebe49ad420b1
Author: Qian Xia <la...@gmail.com>
AuthorDate: Thu Feb 9 15:26:28 2023 +0800

    KYLIN-5423 refine hive datasource table loading more issue
---
 kystudio/src/components/common/TreeList/index.vue | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/kystudio/src/components/common/TreeList/index.vue b/kystudio/src/components/common/TreeList/index.vue
index 37f450f46b..ba4ee86d3a 100644
--- a/kystudio/src/components/common/TreeList/index.vue
+++ b/kystudio/src/components/common/TreeList/index.vue
@@ -237,7 +237,7 @@ export default class TreeList extends Vue {
     }
 
     if (type === 'isMore') {
-      node.visible = data.parent.children.length !== 1 || data.parent.children.length === 0
+      node.visible = (data.parent.children.length !== 1 || data.parent.children.length === 0) && !data.parent.isLoading
     }
     if (data.isHidden !== undefined) {
       node.visible = !data.isHidden
@@ -271,7 +271,8 @@ export default class TreeList extends Vue {
           data.parent.child_options.page_offset += 1
           'childContent' in data.parent && (data.parent.children = data.parent.childContent.slice(0, data.parent.child_options.page_offset * data.parent.child_options.page_size - 1))
           data.parent.isMore = data.parent.child_options.page_offset * data.parent.child_options.page_size < data.parent.childContent.length
-        } else {
+        } else if (!data.parent.isLoading) {
+          data.parent.isLoading = true
           this.$emit('load-more', data, node)
         }
         break
@@ -384,9 +385,13 @@ export default class TreeList extends Vue {
     // margin:0 auto;
     width: auto;
     background: white;
-    flex: none;
     cursor: default;
-    margin-left: calc(50% - 16px)!important;
+    .el-loading-mask {
+      left: -42px;
+      .el-loading-spinner {
+        left: 50%;
+      }
+    }
     .el-loading-spinner {
       width: 16px;
     }


[kylin] 02/04: KYLIN-5419 remove frontend code of AUTO_MAIN model type for kylin5

Posted by xx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 810c1625cb481de14a2851af27a31a2c16c543a9
Author: Qian Xia <la...@gmail.com>
AuthorDate: Thu Feb 9 14:56:26 2023 +0800

    KYLIN-5419 remove frontend code of AUTO_MAIN model type for kylin5
---
 kystudio/src/components/common/ProjectEditModal/handler.js   |  1 -
 .../src/components/common/ProjectSidebar/ProjectSidebar.vue  |  6 +-----
 kystudio/src/components/project/project_list.vue             | 12 +-----------
 kystudio/src/components/project/project_select.vue           |  2 +-
 .../src/components/setting/SettingBasic/SettingBasic.vue     |  9 +--------
 kystudio/src/components/setting/SettingBasic/handler.js      | 12 ++----------
 .../src/components/studio/StudioModel/ModelEdit/model.js     |  1 -
 .../src/components/studio/StudioModel/ModelEdit/schama.js    |  2 --
 kystudio/src/config/spec.js                                  |  3 ---
 kystudio/src/store/project.js                                |  3 ---
 kystudio/src/store/types.js                                  |  1 -
 11 files changed, 6 insertions(+), 46 deletions(-)

diff --git a/kystudio/src/components/common/ProjectEditModal/handler.js b/kystudio/src/components/common/ProjectEditModal/handler.js
index 06f35ff11f..722a18bca9 100644
--- a/kystudio/src/components/common/ProjectEditModal/handler.js
+++ b/kystudio/src/components/common/ProjectEditModal/handler.js
@@ -22,7 +22,6 @@ export function getSubmitData (that) {
       return JSON.stringify({
         name: form.name,
         description: form.description,
-        maintain_model_type: 'MANUAL_MAINTAIN',
         override_kylin_properties: fromArrToObj(form.properties)
       })
     case 'edit':
diff --git a/kystudio/src/components/common/ProjectSidebar/ProjectSidebar.vue b/kystudio/src/components/common/ProjectSidebar/ProjectSidebar.vue
index 57d7eb5b3b..452d66807e 100644
--- a/kystudio/src/components/common/ProjectSidebar/ProjectSidebar.vue
+++ b/kystudio/src/components/common/ProjectSidebar/ProjectSidebar.vue
@@ -91,16 +91,12 @@ export default class ProjectSidebar extends Vue {
   isShowNameTooltip = false
   emptyImg = emptyImg
   get projectTypeClass () {
-    switch (this.project.maintain_model_type) {
-      case 'MANUAL_MAINTAIN':
-        return 'el-icon-ksd-model_designer'
-    }
+    return 'el-icon-ksd-model_designer'
   }
   get projectDetails () {
     return {
       owner: this.project.owner || 'None',
       createTime: dayjs(this.project.create_time_utc).format('MM-DD-YYYY'),
-      projectType: this.$t(this.project.maintain_model_type),
       description: this.project.description
     }
   }
diff --git a/kystudio/src/components/project/project_list.vue b/kystudio/src/components/project/project_list.vue
index 4f44776bc5..e0403af7bc 100644
--- a/kystudio/src/components/project/project_list.vue
+++ b/kystudio/src/components/project/project_list.vue
@@ -26,15 +26,6 @@
         :width="320"
         prop="name">
       </el-table-column>
-      <!-- <el-table-column
-        :label="$t('type')"
-        show-overflow-tooltip
-        :width="120"
-        prop="maintain_model_type">
-        <template slot-scope="scope">
-          {{scope.row.maintain_model_type === projectType.auto ? $t('autoType') : $t('manualType')}}
-        </template>
-      </el-table-column> -->
       <el-table-column
         :label="$t('owner')"
         :width="220"
@@ -214,8 +205,7 @@ import { Component } from 'vue-property-decorator'
 })
 export default class ProjectList extends Vue {  
   canExecuteModelMetadata (row) {
-    return this.projectActions.includes('executeModelsMetadata') &&
-      row.maintain_model_type !== projectCfgs.projectType.auto
+    return this.projectActions.includes('executeModelsMetadata')
   }
   inputFilter (value) {
     this.filterData.project = value
diff --git a/kystudio/src/components/project/project_select.vue b/kystudio/src/components/project/project_select.vue
index 741be45a8d..e95e17ec05 100644
--- a/kystudio/src/components/project/project_select.vue
+++ b/kystudio/src/components/project/project_select.vue
@@ -15,7 +15,7 @@
       class="project_option"
       :label="item.name"
       :value="item.name">
-      <i class="el-ksd-icon-project_16" v-if="item.maintain_model_type === 'MANUAL_MAINTAIN'"></i>
+      <i class="el-ksd-icon-project_16"></i>
       <span>{{item.name}}</span>
     </el-option>
     </el-select>
diff --git a/kystudio/src/components/setting/SettingBasic/SettingBasic.vue b/kystudio/src/components/setting/SettingBasic/SettingBasic.vue
index 7803f82200..c2ffa2ad27 100644
--- a/kystudio/src/components/setting/SettingBasic/SettingBasic.vue
+++ b/kystudio/src/components/setting/SettingBasic/SettingBasic.vue
@@ -11,10 +11,6 @@
         <div class="setting-label font-medium">{{$t('projectName')}}</div>
         <div class="setting-value fixed">{{project.alias || project.project}}</div>
       </div>
-      <!-- <div class="setting-item">
-        <div class="setting-label font-medium">{{$t('projectType')}}</div>
-        <div class="setting-value fixed"><i :class="projectIcon"></i>{{$t(project.maintain_model_type)}}</div>
-      </div> -->
       <div class="setting-item clearfix">
         <div class="setting-label font-medium">{{$t('description')}}</div>
         <div class="setting-value">{{project.description}}</div>
@@ -207,7 +203,7 @@ import { Component, Watch } from 'vue-property-decorator'
 
 import locales from './locales'
 import { handleError, handleSuccessAsync, objectClone, ArrayFlat, kylinConfirm } from '../../../util'
-import { projectTypeIcons, lowUsageStorageTypes, autoMergeTypes, volatileTypes, validate, initialFormValue, _getProjectGeneralInfo, _getSegmentSettings, _getPushdownConfig, _getExcludeColumnConfig, _getStorageQuota, _getIndexOptimization, _getRetentionRangeScale } from './handler'
+import { lowUsageStorageTypes, autoMergeTypes, volatileTypes, validate, initialFormValue, _getProjectGeneralInfo, _getSegmentSettings, _getPushdownConfig, _getExcludeColumnConfig, _getStorageQuota, _getIndexOptimization, _getRetentionRangeScale } from './handler'
 import { retentionTypes } from '../handler'
 import { pageCount, pageRefTags } from '../../../config'
 import EditableBlock from '../../common/EditableBlock/EditableBlock.vue'
@@ -290,9 +286,6 @@ export default class SettingBasic extends Vue {
   }
   excludeColumnsTablesSize = 1
 
-  get projectIcon () {
-    return projectTypeIcons[this.project.maintain_model_type]
-  }
   get retentionRangeScale () {
     return _getRetentionRangeScale(this.form).toLowerCase()
   }
diff --git a/kystudio/src/components/setting/SettingBasic/handler.js b/kystudio/src/components/setting/SettingBasic/handler.js
index 47fe367182..9a5e35ecf5 100644
--- a/kystudio/src/components/setting/SettingBasic/handler.js
+++ b/kystudio/src/components/setting/SettingBasic/handler.js
@@ -1,6 +1,3 @@
-export const projectTypeIcons = {
-  MANUAL_MAINTAIN: 'el-icon-ksd-expert_mode_small'
-}
 export const lowUsageStorageTypes = [
   'DAY',
   'WEEK',
@@ -43,7 +40,6 @@ export const initialFormValue = {
   alias: '',
   project: '',
   description: '',
-  maintain_model_type: '',
   jdbc_datasource_enabled: false,
   JDBCConnectSetting: []
 }
@@ -75,13 +71,9 @@ export function _getProjectGeneralInfo (data) {
   let params = {
     project: data.project,
     alias: data.alias || data.project,
-    description: data.description,
-    maintain_model_type: data.maintain_model_type
-  }
-  // 专家档时才加 semi_automatic_mode 这个属性
-  if (data.maintain_model_type === 'MANUAL_MAINTAIN') {
-    params.semi_automatic_mode = data.semi_automatic_mode || false
+    description: data.description
   }
+  params.semi_automatic_mode = data.semi_automatic_mode || false
   return params
 }
 export function _getSegmentSettings (data, project) {
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/model.js b/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
index 50967a90ac..17d801a649 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/model.js
@@ -259,7 +259,6 @@ class NModel extends Schama {
         metaData.partition_desc = this.partition_desc
         metaData.batch_partition_desc = this.batch_partition_desc
         metaData.multi_partition_desc = this.multi_partition_desc
-        metaData.maintain_model_type = this._mount.maintain_model_type
         metaData.management_type = this.management_type
         metaData.with_second_storage = this.second_storage_enabled
         metaData.second_storage_size = this.second_storage_size
diff --git a/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js b/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
index 48c6719907..8a144b95f9 100644
--- a/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
+++ b/kystudio/src/components/studio/StudioModel/ModelEdit/schama.js
@@ -91,7 +91,6 @@ export default class SchemaModels {
     // this.lookups = options.lookups || options.join_tables || []
     this.all_measures = options.simplified_measures || []
     this.project = options.project
-    this.maintain_model_type = options.maintain_model_type
     this.management_type = options.management_type || 'MODEL_BASED'
     this.globalDataSource = store.state.datasource.dataSource // 全局数据源表数据,新拖入时,需要从这里这个数据中取遍历
     // 能从模型详情接口里取到 simplified_tables 字段,就取这个字段,取不到的时候,取编辑模型时,模型使用到的 table 的信息这个接口里的返回
@@ -126,7 +125,6 @@ export default class SchemaModels {
       this.$set(this._mount, 'zoomYSpace', 0)
       this.$set(this._mount, 'tableIndexColumns', this.tableIndexColumns)
       this.$set(this._mount, 'maintain_model_type', this.maintain_model_type)
-      this.$set(this._mount, 'management_type', this.management_type)
       this.$set(this._mount, 'linkUsedColumns', this.linkUsedColumns)
       this.$set(this._mount, 'hasBrokenLinkedTable', false)
       this.$set(this._mount, 'broken_reason', options.broken_reason)
diff --git a/kystudio/src/config/spec.js b/kystudio/src/config/spec.js
index 191d02edb5..1227a5b5ed 100644
--- a/kystudio/src/config/spec.js
+++ b/kystudio/src/config/spec.js
@@ -35,9 +35,6 @@ export default {
       { "id": "kafka", "value": 1, "title": "HIVE" },
       { "id": "rdbms2", "value": 8, "title": "RDBMS2" }
     ],
-    "projectType": [
-      { "id": "manualMaintain", "value": "MANUAL_MAINTAIN", "title": "Manual Maintain" }
-    ],
     "modelType": [
       { "id": "tableOriented", "value": "TABLE_ORIENTED", "title": "Table Oriented" },
       { "id": "modelBased", "value": "MODEL_BASED", "title": "Model Based" }
diff --git a/kystudio/src/store/project.js b/kystudio/src/store/project.js
index b64a89de57..a5b9a8e7d8 100644
--- a/kystudio/src/store/project.js
+++ b/kystudio/src/store/project.js
@@ -37,9 +37,6 @@ export default {
     [types.SAVE_DEFAULT_CONFIG_LIST]: function (state, { list }) {
       state.defaultConfigList = list
     },
-    [types.UPDATE_PROJECT_SEMI_AUTOMATIC_STATUS]: function (state, result) {
-      state.isSemiAutomatic = result
-    },
     [types.SET_PROJECT]: function (state, project) {
       cacheSessionStorage('preProjectName', state.selected_project) // 储存上一次选中的project
       cacheSessionStorage('projectName', project)
diff --git a/kystudio/src/store/types.js b/kystudio/src/store/types.js
index d02a703296..20d7567f71 100644
--- a/kystudio/src/store/types.js
+++ b/kystudio/src/store/types.js
@@ -44,7 +44,6 @@ export const UPDATE_PROJECT_DATASOURCE = 'UPDATE_PROJECT_DATASOURCE'
 export const RESET_PROJECT_CONFIG = 'RESET_PROJECT_CONFIG'
 export const UPDATE_DEFAULT_DB_SETTINGS = 'UPDATE_DEFAULT_DB_SETTINGS'
 export const CACHE_PROJECT_DEFAULT_DB = 'CACHE_PROJECT_DEFAULT_DB'
-export const UPDATE_PROJECT_SEMI_AUTOMATIC_STATUS = 'UPDATE_PROJECT_SEMI_AUTOMATIC_STATUS'
 export const UPDATE_YARN_QUEUE = 'UPDATE_YARN_QUEUE'
 export const GET_ACL_PERMISSION = 'GET_ACL_PERMISSION'
 export const CHECK_SSB = 'CHECK_SSB'