DWS轻量化更新黑科技:宽表加工优化
本文分享自华为云社区《GaussDB(DWS)性能调优:宽表加工优化方案》,作者:譡里个檔 。
1. 业务背景
宽表加工性能慢,在Gauss(DWS)中可以使用DWS的轻量化更新的黑科技实现性能成倍提升
2. 原始逻辑
事实表和维表关联之后插入目标表 dm_cbg_ci_inv_dtl_w_f
INSERT INTO dm_cbg_ci_inv_dtl_w_f SELECT F.PERIOD_ID, F.YYYY, F.MM, F.YYYYMM, F.YYYYQ, F.QTR_NO, F.SALES_LV0_PROD_LIST_CODE, F.SALES_LV0_PROD_LIST_CN_NAME, F.SALES_LV0_PROD_LIST_EN_NAME, F.SALES_LV1_PROD_LIST_CODE, F.SALES_LV1_PROD_LIST_CN_NAME, F.SALES_LV1_PROD_LIST_EN_NAME, F.SALES_LV2_PROD_LIST_CODE, F.SALES_LV2_PROD_LIST_CN_NAME, F.SALES_LV2_PROD_LIST_EN_NAME, F.SALES_LV3_PROD_LIST_CODE, F.SALES_LV3_PROD_LIST_CN_NAME, F.SALES_LV3_PROD_LIST_EN_NAME, F.SALES_LV4_PROD_LIST_CODE, F.SALES_LV4_PROD_LIST_CN_NAME, F.SALES_LV4_PROD_LIST_EN_NAME, F.SALES_LV5_PROD_LIST_CODE, F.SALES_LV5_PROD_LIST_EN_NAME, F.SALES_LV5_PROD_LIST_CN_NAME, F.SALES_PROD_CODE, F.SALES_PROD_EN_NAME, F.SALES_PROD_CN_NAME, F.SALES_COMPANY_BRAND, F.SALES_PROD_MKT_NAME, F.SALES_REPORT_TYPE_CN_NAME, F.SALES_REPORT_TYPE_CODE, F.SALES_REPORT_TYPE_EN_NAME, F.LV0_PROD_LIST_CODE, F.LV0_PROD_LIST_CN_NAME, F.LV0_PROD_LIST_EN_NAME, F.LV1_PROD_LIST_CODE, F.LV1_PROD_LIST_CN_NAME, F.LV1_PROD_LIST_EN_NAME, F.LV2_PROD_LIST_CODE, F.LV2_PROD_LIST_CN_NAME, F.LV2_PROD_LIST_EN_NAME, F.LV3_PROD_LIST_CODE, F.LV3_PROD_LIST_CN_NAME, F.LV3_PROD_LIST_EN_NAME, F.LV4_PROD_LIST_CODE, F.LV4_PROD_LIST_CN_NAME, F.LV4_PROD_LIST_EN_NAME, F.LV5_PROD_LIST_CODE, F.LV5_PROD_LIST_EN_NAME, F.LV5_PROD_LIST_CN_NAME, F.PROD_CODE, F.PROD_EN_NAME, F.PROD_CN_NAME, F.COMPANY_BRAND, F.PROD_MKT_NAME, F.REPORT_TYPE_CN_NAME, F.REPORT_TYPE_CODE, F.REPORT_TYPE_EN_NAME, F.PLATFORMCOMPANY_FLAG, F.INVENTORY_CLASS_SEQ_NUM, F.INVENTORY_CLASS_L1_CODE, F.INVENTORY_CLASS_L1_CN_NAME, F.INVENTORY_CLASS_L1_EN_NAME, F.INVENTORY_CLASS_L2_CODE, F.INVENTORY_CLASS_L2_CN_NAME, F.INVENTORY_CLASS_L2_EN_NAME, F.GLOBAL_CODE, F.GLOBAL_CN_NAME, F.GLOBAL_EN_NAME, F.AREA_CODE, F.AREA_CN_NAME, F.AREA_EN_NAME, F.REGION_CODE, F.REGION_CN_NAME, F.REGION_EN_NAME, F.REPOFFICE_CODE, F.REPOFFICE_CN_NAME, F.REPOFFICE_EN_NAME, F.OFFICE_CODE, F.OFFICE_CN_NAME, F.OFFICE_EN_NAME, F.GEO_PC_CODE, F.GEO_PC_CN_NAME, F.GEO_PC_EN_NAME, F.COUNTRY_CN_NAME, F.COUNTRY_EN_NAME, F.COUNTRY_CODE, F.OVERSEA_FLAG, F.COMPANY_EN_NAME, F.COMPANY_CN_NAME, F.COMPANY_CODE, F.COMPANY_DESC, F.LC_CODE, F.OVERSEA_CORP_FLAG, F.SYSTEM_INTER_COMPANY_STATUS, F.SUPPLY_CENTER_NEW_CODE, F.SUPPLY_CENTER_NEW_CN_NAME, F.SUPPLY_CENTER_NEW_EN_NAME, F.SUPPLY_CENTER_CODE, F.SUPPLY_CENTER_CN_NAME, F.SUPPLY_CENTER_EN_NAME, F.SUPPLY_GEO_PC_CODE, F.FULFIL_COMPANY_CODE, F.SIGN_COMPANY_CODE, F.SUPPLY_CENTER_TYPE_CODE, F.SUPPLY_CENTER_TYPE_CN_NAME, F.SUPPLY_CENTER_TYPE_EN_NAME, F.REPORT_ITEM_ID, F.SUB_ACCOUNT_CODE, F.GROUP_ACCOUNT_CODE, F.DATA_CATEGORY_ID, F.SCENARIO_ID, F.SCHEDULE_TYPE_ID, F.SUBJECT_AREA_ID, F.VERSION_ID, F.CIF_FLAG, F.CI_FLAG, F.COST_CATEGORY, F.SOURCE_FLAG, F.OVERDUE_INVENTORY_FLAG, F.RMB_AAA_QTD_AMT, F.RMB_AAP_QTD_AMT, F.USD_AAA_QTD_AMT, F.USD_AAP_QTD_AMT, F.RMB_AAA_PY_PTD_AMT, F.USD_AAA_PY_PTD_AMT, F.USD_AAP_PY_PTD_AMT, F.RMB_AAA_PY_QTD_AMT, F.RMB_AAP_PY_QTD_AMT, F.USD_AAA_PY_QTD_AMT, F.USD_AAP_PY_QTD_AMT, F.RMB_AAA_PY_YTD_AMT, F.RMB_AAP_PY_YTD_AMT, F.USD_AAA_PY_YTD_AMT, F.USD_AAP_PY_YTD_AMT, F.RMB_AAA_PY_ALL_QTD_AMT, F.RMB_AAP_PY_ALL_QTD_AMT, F.USD_AAA_PY_ALL_QTD_AMT, F.USD_AAP_PY_ALL_QTD_AMT, F.RMB_AAA_PY_ALL_YTD_AMT, F.RMB_AAP_PY_ALL_YTD_AMT, F.USD_AAA_PY_ALL_YTD_AMT, F.USD_AAP_PY_ALL_YTD_AMT, F.RMB_AAA_PP_PTD_AMT, F.RMB_AAP_PP_PTD_AMT, F.USD_AAA_PP_PTD_AMT, F.USD_AAP_PP_PTD_AMT, F.RMB_AAA_PP_QTD_AMT, F.RMB_AAP_PP_QTD_AMT, F.USD_AAA_PP_QTD_AMT, F.USD_AAP_PP_QTD_AMT, F.RMB_AAA_CY_OPEN_BAL_AMT, F.RMB_AAP_CY_OPEN_BAL_AMT, F.USD_AAA_CY_OPEN_BAL_AMT, F.USD_AAP_CY_OPEN_BAL_AMT, F.RMB_AAA_PY_END_BAL_AMT, F.RMB_AAP_PY_END_BAL_AMT, F.USD_AAA_PY_END_BAL_AMT, F.USD_AAP_PY_END_BAL_AMT, F.RMB_AAA_PQ_END_BAL_AMT, F.RMB_AAP_PQ_END_BAL_AMT, F.USD_AAA_PQ_END_BAL_AMT, F.USD_AAP_PQ_END_BAL_AMT, F.RMB_AAA_PTD_AMT, F.RMB_AAP_PTD_AMT, F.USD_AAA_PTD_AMT, F.USD_AAP_PTD_AMT, F.RMB_AAP_PY_PTD_AMT, F.RMB_AAA_YTD_AMT, F.RMB_AAP_YTD_AMT, F.USD_AAA_YTD_AMT, F.USD_AAP_YTD_AMT, F.RMB_AAA_END_BAL_AMT, F.RMB_AAP_END_BAL_AMT, F.USD_AAA_END_BAL_AMT, F.USD_AAP_END_BAL_AMT, F.RMB_AAA_YEAR_AVG_AMT, F.RMB_AAP_YEAR_AVG_AMT, F.USD_AAA_YEAR_AVG_AMT, F.USD_AAP_YEAR_AVG_AMT, F.RMB_AAA_PP_END_BAL_AMT, F.RMB_AAP_PP_END_BAL_AMT, F.USD_AAA_PP_END_BAL_AMT, F.USD_AAP_PP_END_BAL_AMT, F.RMB_AAA_LY_END_BAL_AMT, F.RMB_AAP_LY_END_BAL_AMT, F.USD_AAA_LY_END_BAL_AMT, F.USD_AAP_LY_END_BAL_AMT, F.RMB_AAA_PY_2POINT_YTD_AMT, F.RMB_AAP_PY_2POINT_YTD_AMT, F.USD_AAA_PY_2POINT_YTD_AMT, F.USD_AAP_PY_2POINT_YTD_AMT, F.RMB_AAA_2POINT_YTD_AMT, F.RMB_AAP_2POINT_YTD_AMT, F.USD_AAA_2POINT_YTD_AMT, F.USD_AAP_2POINT_YTD_AMT, F.BUSINESS_STATUS_CN_NAME, F.BUSINESS_STATUS_EN_NAME, F.BUSINESS_STATUS_CODE, F.LOCATION_L1_CODE, F.LOCATION_L1_CN_NAME, F.LOCATION_L1_EN_NAME, F.LOCATION_L2_CODE, F.LOCATION_L2_CN_NAME, F.LOCATION_L2_EN_NAME, F.LOCATION_L3_CODE, F.LOCATION_L3_CN_NAME, F.LOCATION_L3_EN_NAME, F.LOCATION_CODE, F.LOCATION_CN_NAME, F.LOCATION_EN_NAME, F.LOCATION_TYPE_CN_NAME, F.LOCATION_TYPE_EN_NAME, F.TOP_CUST_CATEGORY_CN_NAME, F.TOP_CUST_CATEGORY_CODE, F.TOP_CUST_CATEGORY_EN_NAME, F.ACCTCUST_HQ_CN_NAME, F.ACCTCUST_HQ_CODE, F.ACCTCUST_HQ_EN_NAME, F.ACCTCUST_BRANCH_CN_NAM, F.ACCTCUST_BRANCH_CODE, F.ACCTCUST_BRANCH_EN_NAM, F.ACCTCUST_LV2_BRANCH_CN_NAME, F.ACCTCUST_LV2_BRANCH_CODE, F.ACCTCUST_LV2_BRANCH_EN_NAME, F.ACCTCUST_SUBSIDIARY_CN_NAM, F.ACCTCUST_SUBSIDIARY_CODE, F.ACCTCUST_SUBSIDIARY_EN_NAM, F.BRANCH_CUSTCATG_CN_NAME, F.BRANCH_CUSTCATG_CODE, F.BRANCH_CUSTCATG_EN_NAME, F.CUST_ACCOUNT_NUM, F.CUST_CLASS_CN_NAME, F.CUST_CLASS_CODE, F.CUST_CLASS_EN_NAME, F.CUST_EN_NAME, F.CUST_NL_NAME, F.REGION_CUSTCATG_CN_NAME, F.REGION_CUSTCATG_CODE, F.REGION_CUSTCATG_EN_NAME, F.LV2_BRANCH_CUSTCATG_CN_NAME, F.LV2_BRANCH_CUSTCATG_CODE, F.LV2_BRANCH_CUSTCATG_EN_NAME, F.LVL2_CUST_CLASS_CN_NAME, F.LVL2_CUST_CLASS_EN_NAME, F.HISI_LV0_PROD_LIST_CODE, F.HISI_LV0_PROD_LIST_CN_NAME, F.HISI_LV0_PROD_LIST_EN_NAME, F.HISI_LV1_PROD_LIST_CODE, F.HISI_LV1_PROD_LIST_CN_NAME, F.HISI_LV1_PROD_LIST_EN_NAME, F.HISI_LV2_PROD_LIST_CODE, F.HISI_LV2_PROD_LIST_CN_NAME, F.HISI_LV2_PROD_LIST_EN_NAME, F.HISI_LV3_PROD_LIST_CODE, F.HISI_LV3_PROD_LIST_CN_NAME, F.HISI_LV3_PROD_LIST_EN_NAME, F.HISI_LV4_PROD_LIST_CODE, F.HISI_LV4_PROD_LIST_CN_NAME, F.HISI_LV4_PROD_LIST_EN_NAME, F.HISI_LV5_PROD_LIST_CODE, F.HISI_LV5_PROD_LIST_CN_NAME, F.HISI_LV5_PROD_LIST_EN_NAME, F.HISI_PROD_CODE, F.HISI_PROD_EN_NAME, F.HISI_PROD_CN_NAME, F.ENTERPRISE_CUST_KEY, F.ENTERPRISE_CUST_EN_NAME, F.ENTERPRISE_CUST_NL_NAME, F.ENTERPRISE_INDUSTRY_CLASS_CODE, F.ENTERPRISE_INDUSTRY_CLASS_CN_NAME, F.ENTERPRISE_INDUSTRY_CLASS_EN_NAME, F.ENTERPRISE_ENT_CUST_CLASS_CODE, F.ENTERPRISE_ENT_CUST_CLASS_CN_NAME, F.ENTERPRISE_ENT_CUST_CLASS_EN_NAME, F.PROJ_NUM, F.PROJ_EN_NAME, F.PROJ_CN_NAME, F.PROJ_GEO_PC_CN_NAME, F.PROJ_GEO_PC_EN_NAME, F.PROJGEO_PC_CN_NAME, F.PROJGEO_PC_EN_NAME, F.ACCOUNT_MANAGER_CN_NAME, F.ACCOUNT_MANAGER_CODE, F.ACCOUNT_MANAGER_EN_NAME, F.HW_CONTRACT_NUM, F.CUST_CONTRACT_NUM, F.CONTRACT_NAME, F.FRAMEWORK_CONTRACT_NUM, F.END_CUST_NAME, F.AGENT_DISTRIBUTION_CUST_NAME, F.SIGN_CUST_NAME, F.REGISTRATION_DATE, F.SALES_MODE_CN_NAME, F.SALES_MODE_CODE, F.SALES_MODE_EN_NAME, F.CONTRACT_FIRST_PUBLISH_DATE, F.CONTRACT_STATUS_CN_NAME, F.CONTRACT_STATUS_CODE, F.CONTRACT_STATUS_EN_NAME, F.CREATE_DATE, F.LOGIN_DATE, F.COMBIND_TO_SINGL_DATE, F.SIGN_DATE, F.SIGN_PERSON, F.ADVANCED_SALES_TO_SALES_DATE, F.WARRANTY_START_MSTNE_CN_NAME, F.WARRANTY_START_MSTNE_EN_NAME, F.WARRANTY_BEGIN_EXTEND_DUR, F.HARDWARE_WARRANTY_DURATION, F.HARDWARE_EXTEND_WARRANTY_DUR, F.SOFTWARE_EXTEND_WARRANTY_DUR, F.BRAZIL_TERMINAL_CONTRACT_FLAG, F.INTELNAL_OVERSEA_FLAG, F.CONTRACT_ID, F.CONTRACT_TOTAL_AMT, F.CONTRACT_TYPE_CN_NAME, F.CONTRACT_TYPE_CODE, F.CONTRACT_TYPE_EN_NAME, F.CONTRACT_MAIN_TYPE_CN_NAME, F.CONTRACT_MAIN_TYPE_CODE, F.CONTRACT_MAIN_TYPE_EN_NAME, F.CONTRACT_SUB_TYPE_CN_NAME, F.CONTRACT_SUB_TYPE_CODE, F.CONTRACT_SUB_TYPE_EN_NAME, F.CONTRACT_MAIN_PROD_TYPE_CODE, F.CTRCT_MAIN_PROD_TYPE_EN_NAME, F.CTRCT_MAIN_PROD_TYPE_CN_NAME, F.CTRCT_BUSINESS_TYPE_EN_NAME, F.CTRCT_BUSINESS_TYPE_CN_NAME, F.CONTRACT_BUSINESS_TYPE_CODE, F.NEW_MOVE_TYPE_CN_NAME, F.NEW_MOVE_TYPE_CODE, F.NEW_MOVE_TYPE_EN_NAME, F.ADD_EXPAND_TYPE_CN_NAME, F.ADD_EXPAND_TYPE_CODE, F.ADD_EXPAND_TYPE_EN_NAME, F.STOCK_INCREMENT_TYPE_CN_NAME, F.STOCK_INCREMENT_TYPE_CODE, F.STOCK_INCREMENT_TYPE_EN_NAME, F.CURRENCY_CODE, F.REVENUE_SHARING_CONTRACT_FLAG, F.S3_PILOT_FLAG, F.PO_LIST_FLAG, F.BENEFICIAL_ENTITY, F.SUB_ACCOUNT_EN_NAME, F.SUB_ACCOUNT_CN_NAME, F.INVENTORY_ORG_CODE, F.INVENTORY_ORG_NAME, F.SUBINV_BG_CN_NAME, F.SUBINV_BG_EN_NAME, F.SUBINV_TYPE_CN_NAME, F.SUBINV_TYPE_EN_NAME, F.SUBINVENTORY_NAME, F.GRP_ACCOUNT_CODE_EN_NAME, F.GRP_ACCOUNT_CODE_CN_NAME, F.JE_CATEGORY_CODE, F.JE_CATEGORY_EN_NAME, F.JE_CATEGORY_CN_NAME, F.JE_SOURCE_CODE, F.JE_SOURCE_EN_NAME, F.JE_SOURCE_CN_NAME, F.HIS_CN_NAME, F.HIS_EN_NAME, PAR.PAR_PROJ_CN_NAME, PAR.PAR_PROJ_NUM, PAR.PAR_PROJ_EN_NAME, PAR.SUB_PROJ_CN_NAME, PAR.SUB_PROJ_NUM, PAR.SUB_PROJ_EN_NAME, STK.PRODUCT_MANAGER_EMPLOYEE, STK.SALEPROJ_MANAGER_EMPLOYEE, AGD.INV_AGE_CN_NAME, AGD.INV_AGE_EN_NAME, AGD.BEGIN_DAY, AGD.END_DAY, AGD.INV_AGE_TYPE, PNT.CONFIRM_POINT_CODE, PNT.CONFIRM_POINT_CN_NAME, PNT.CONFIRM_POINT_EN_NAME, REC.RECOGNISE_TYPE_L1_CODE, REC.RECOGNISE_TYPE_L1_CN_NAME, REC.RECOGNISE_TYPE_L1_EN_NAME, REC.RECOGNISE_TYPE_L2_CODE, REC.RECOGNISE_TYPE_L2_CN_NAME, REC.RECOGNISE_TYPE_L2_EN_NAME, EMP.EMPLOYEE_NAME, F.CONTRACT_KEY, F.COMPANY_KEY, F.subinventory_key, F.business_status_key, F.je_source_id, F.je_category_id, F.prod_key, F.supply_center_key, F.sales_mode_key, F.proj_key, F.BG_CN_NAME, F.CONFIRM_POINT, F.CONFIRM_POINT_DELAY_DAYS, F.STOCK_CONTRACT_FLAG, F.STANDARD_CONTRACT_FLAG, F.SIGNED_REP_OFFICE_EN_NAME, F.SIGNED_REP_OFFICE_CODE, F.SIGNED_REP_OFFICE_CN_NAME, F.SIGNED_REGION_EN_NAME, F.SIGNED_REGION_CODE, F.SIGNED_REGION_CN_NAME, F.RES_CODE, F.INV_AGE, RCD.CBG_AREA_CODE, RCD.CBG_AREA_CN_NAME, RCD.CBG_AREA_EN_NAME, RCD.CBG_REGION_CODE, RCD.CBG_REGION_CN_NAME, RCD.CBG_REGION_EN_NAME, RCD.CBG_REPOFFICE_CODE, RCD.CBG_REPOFFICE_CN_NAME, RCD.CBG_REPOFFICE_EN_NAME, RCD.CBG_OFFICE_CODE, RCD.CBG_OFFICE_CN_NAME, RCD.CBG_OFFICE_EN_NAME, RCD.CBG_COUNTRY_CN_NAME, RCD.CBG_COUNTRY_EN_NAME, RCD.COUNTRY_CODE AS CBG_COUNTRY_CODE, HOR.CBG_AREA_CODE AS HONOR_AREA_CODE, HOR.CBG_AREA_CN_NAME AS HONOR_AREA_CN_NAME, HOR.CBG_AREA_EN_NAME AS HONOR_AREA_EN_NAME, HOR.CBG_REGION_CODE AS HONOR_REGION_CODE, HOR.CBG_REGION_CN_NAME AS HONOR_REGION_CN_NAME, HOR.CBG_REGION_EN_NAME AS HONOR_REGION_EN_NAME, HOR.CBG_REPOFFICE_CODE AS HONOR_REPOFFICE_CODE, HOR.CBG_REPOFFICE_CN_NAME AS HONOR_REPOFFICE_CN_NAME, HOR.CBG_REPOFFICE_EN_NAME AS HONOR_REPOFFICE_EN_NAME, HOR.CBG_OFFICE_CODE AS HONOR_OFFICE_CODE, HOR.CBG_OFFICE_CN_NAME AS HONOR_OFFICE_CN_NAME, HOR.CBG_OFFICE_EN_NAME AS HONOR_OFFICE_EN_NAME, HOR.CBG_COUNTRY_CN_NAME AS HONOR_COUNTRY_CN_NAME, HOR.CBG_COUNTRY_EN_NAME AS HONOR_COUNTRY_EN_NAME, HOR.COUNTRY_CODE AS HONOR_COUNTRY_CODE, F.A_COUNTRY_FLAG FROM DMCON.DM_CBG_CI_INV_DTL_W_F_TMP_C F INNER JOIN (SELECT PAR.PAR_PROJ_CN_NAME, PAR.PAR_PROJ_NUM, PAR.PAR_PROJ_EN_NAME, PAR.SUB_PROJ_CN_NAME, PAR.SUB_PROJ_NUM, PAR.SUB_PROJ_EN_NAME, PAR.PROJ_KEY FROM (SELECT DISTINCT PROJ_KEY FROM DMCON.DM_CBG_CI_INV_DTL_W_F_TMP_C WHERE PERIOD_ID = 202304 ) T, DMDIM.DWR_INV_DIM_PAR_PROJ_D PAR WHERE T.PROJ_KEY = PAR.PROJ_KEY ) PAR ON F.PROJ_KEY = PAR.PROJ_KEY LEFT JOIN DMDIM.DM_DIM_INV_CONTRACT_STKHOLD_V STK ON F.CONTRACT_KEY = STK.CONTRACT_KEY LEFT JOIN DMDIM.DM_DIM_INV_AGING_D AGD ON F.INV_AGE between AGD.BEGIN_DAY and AGD.END_DAY AND AGD.INV_AGE_TYPE = 2 INNER JOIN DMDIM.DM_DIM_INV_CONF_POINT_D PNT ON F.CONFIRM_POINT_ID = PNT.CONFIRM_POINT_ID LEFT JOIN DMDIM.DM_INV_RECOGNISE_TYPE_D REC ON F.RECOGNISE_TYPE_ID = REC.RECOGNISE_TYPE_ID LEFT JOIN (SELECT EMP.EMPLOYEE_NAME, EMP.EMPLOYEE_KEY FROM (SELECT DISTINCT PROJ_MANAGER_LAST_KEY FROM DMCON.DM_CBG_CI_INV_DTL_W_F_TMP_C WHERE PERIOD_ID = 202304 ) T, DMDIM.DM_DIM_EMPLOYEE_D EMP WHERE T.PROJ_MANAGER_LAST_KEY = EMP.EMPLOYEE_KEY ) EMP ON F.PROJ_MANAGER_LAST_KEY = EMP.EMPLOYEE_KEY LEFT JOIN DMDIM.DM_DIM_REGION_RC_CBG_D RCD ON F.GEO_PC_KEY = RCD.GEO_PC_KEY AND RCD.REGION_TREE_CODE = 'HUAWEI_TREE' LEFT JOIN DMDIM.DM_DIM_REGION_RC_CBG_D HOR ON F.GEO_PC_KEY = HOR.GEO_PC_KEY AND HOR.REGION_TREE_CODE = 'HONOR_TREE'
从topSQL中抓取执行信息如下,看到表 dm_cbg_ci_inv_dtl_w_f_tmp_c 的宽度达到8K,加工后生成的目标表 dm_cbg_ci_inv_dtl_w_f 的宽度是9K。

3. 优化逻辑
3.1 源表字段写入目标表
把表 dm_cbg_ci_inv_dtl_w_f_tmp_c 的数据先导入目标表 dm_cbg_ci_inv_dtl_w_f,对于来源不是表 dm_cbg_ci_inv_dtl_w_f_tmp_c 的字段先置为NULL。
INSERT INTO dm_cbg_ci_inv_dtl_w_f SELECT F.PERIOD_ID, F.YYYY, F.MM, F.YYYYMM, F.YYYYQ, F.QTR_NO, F.SALES_LV0_PROD_LIST_CODE, F.SALES_LV0_PROD_LIST_CN_NAME, F.SALES_LV0_PROD_LIST_EN_NAME, F.SALES_LV1_PROD_LIST_CODE, F.SALES_LV1_PROD_LIST_CN_NAME, F.SALES_LV1_PROD_LIST_EN_NAME, F.SALES_LV2_PROD_LIST_CODE, F.SALES_LV2_PROD_LIST_CN_NAME, F.SALES_LV2_PROD_LIST_EN_NAME, F.SALES_LV3_PROD_LIST_CODE, F.SALES_LV3_PROD_LIST_CN_NAME, F.SALES_LV3_PROD_LIST_EN_NAME, F.SALES_LV4_PROD_LIST_CODE, F.SALES_LV4_PROD_LIST_CN_NAME, F.SALES_LV4_PROD_LIST_EN_NAME, F.SALES_LV5_PROD_LIST_CODE, F.SALES_LV5_PROD_LIST_EN_NAME, F.SALES_LV5_PROD_LIST_CN_NAME, F.SALES_PROD_CODE, F.SALES_PROD_EN_NAME, F.SALES_PROD_CN_NAME, F.SALES_COMPANY_BRAND, F.SALES_PROD_MKT_NAME, F.SALES_REPORT_TYPE_CN_NAME, F.SALES_REPORT_TYPE_CODE, F.SALES_REPORT_TYPE_EN_NAME, F.LV0_PROD_LIST_CODE, F.LV0_PROD_LIST_CN_NAME, F.LV0_PROD_LIST_EN_NAME, F.LV1_PROD_LIST_CODE, F.LV1_PROD_LIST_CN_NAME, F.LV1_PROD_LIST_EN_NAME, F.LV2_PROD_LIST_CODE, F.LV2_PROD_LIST_CN_NAME, F.LV2_PROD_LIST_EN_NAME, F.LV3_PROD_LIST_CODE, F.LV3_PROD_LIST_CN_NAME, F.LV3_PROD_LIST_EN_NAME, F.LV4_PROD_LIST_CODE, F.LV4_PROD_LIST_CN_NAME, F.LV4_PROD_LIST_EN_NAME, F.LV5_PROD_LIST_CODE, F.LV5_PROD_LIST_EN_NAME, F.LV5_PROD_LIST_CN_NAME, F.PROD_CODE, F.PROD_EN_NAME, F.PROD_CN_NAME, F.COMPANY_BRAND, F.PROD_MKT_NAME, F.REPORT_TYPE_CN_NAME, F.REPORT_TYPE_CODE, F.REPORT_TYPE_EN_NAME, F.PLATFORMCOMPANY_FLAG, F.INVENTORY_CLASS_SEQ_NUM, F.INVENTORY_CLASS_L1_CODE, F.INVENTORY_CLASS_L1_CN_NAME, F.INVENTORY_CLASS_L1_EN_NAME, F.INVENTORY_CLASS_L2_CODE, F.INVENTORY_CLASS_L2_CN_NAME, F.INVENTORY_CLASS_L2_EN_NAME, F.GLOBAL_CODE, F.GLOBAL_CN_NAME, F.GLOBAL_EN_NAME, F.AREA_CODE, F.AREA_CN_NAME, F.AREA_EN_NAME, F.REGION_CODE, F.REGION_CN_NAME, F.REGION_EN_NAME, F.REPOFFICE_CODE, F.REPOFFICE_CN_NAME, F.REPOFFICE_EN_NAME, F.OFFICE_CODE, F.OFFICE_CN_NAME, F.OFFICE_EN_NAME, F.GEO_PC_CODE, F.GEO_PC_CN_NAME, F.GEO_PC_EN_NAME, F.COUNTRY_CN_NAME, F.COUNTRY_EN_NAME, F.COUNTRY_CODE, F.OVERSEA_FLAG, F.COMPANY_EN_NAME, F.COMPANY_CN_NAME, F.COMPANY_CODE, F.COMPANY_DESC, F.LC_CODE, F.OVERSEA_CORP_FLAG, F.SYSTEM_INTER_COMPANY_STATUS, F.SUPPLY_CENTER_NEW_CODE, F.SUPPLY_CENTER_NEW_CN_NAME, F.SUPPLY_CENTER_NEW_EN_NAME, F.SUPPLY_CENTER_CODE, F.SUPPLY_CENTER_CN_NAME, F.SUPPLY_CENTER_EN_NAME, F.SUPPLY_GEO_PC_CODE, F.FULFIL_COMPANY_CODE, F.SIGN_COMPANY_CODE, F.SUPPLY_CENTER_TYPE_CODE, F.SUPPLY_CENTER_TYPE_CN_NAME, F.SUPPLY_CENTER_TYPE_EN_NAME, F.REPORT_ITEM_ID, F.SUB_ACCOUNT_CODE, F.GROUP_ACCOUNT_CODE, F.DATA_CATEGORY_ID, F.SCENARIO_ID, F.SCHEDULE_TYPE_ID, F.SUBJECT_AREA_ID, F.VERSION_ID, F.CIF_FLAG, F.CI_FLAG, F.COST_CATEGORY, F.SOURCE_FLAG, F.OVERDUE_INVENTORY_FLAG, F.RMB_AAA_QTD_AMT, F.RMB_AAP_QTD_AMT, F.USD_AAA_QTD_AMT, F.USD_AAP_QTD_AMT, F.RMB_AAA_PY_PTD_AMT, F.USD_AAA_PY_PTD_AMT, F.USD_AAP_PY_PTD_AMT, F.RMB_AAA_PY_QTD_AMT, F.RMB_AAP_PY_QTD_AMT, F.USD_AAA_PY_QTD_AMT, F.USD_AAP_PY_QTD_AMT, F.RMB_AAA_PY_YTD_AMT, F.RMB_AAP_PY_YTD_AMT, F.USD_AAA_PY_YTD_AMT, F.USD_AAP_PY_YTD_AMT, F.RMB_AAA_PY_ALL_QTD_AMT, F.RMB_AAP_PY_ALL_QTD_AMT, F.USD_AAA_PY_ALL_QTD_AMT, F.USD_AAP_PY_ALL_QTD_AMT, F.RMB_AAA_PY_ALL_YTD_AMT, F.RMB_AAP_PY_ALL_YTD_AMT, F.USD_AAA_PY_ALL_YTD_AMT, F.USD_AAP_PY_ALL_YTD_AMT, F.RMB_AAA_PP_PTD_AMT, F.RMB_AAP_PP_PTD_AMT, F.USD_AAA_PP_PTD_AMT, F.USD_AAP_PP_PTD_AMT, F.RMB_AAA_PP_QTD_AMT, F.RMB_AAP_PP_QTD_AMT, F.USD_AAA_PP_QTD_AMT, F.USD_AAP_PP_QTD_AMT, F.RMB_AAA_CY_OPEN_BAL_AMT, F.RMB_AAP_CY_OPEN_BAL_AMT, F.USD_AAA_CY_OPEN_BAL_AMT, F.USD_AAP_CY_OPEN_BAL_AMT, F.RMB_AAA_PY_END_BAL_AMT, F.RMB_AAP_PY_END_BAL_AMT, F.USD_AAA_PY_END_BAL_AMT, F.USD_AAP_PY_END_BAL_AMT, F.RMB_AAA_PQ_END_BAL_AMT, F.RMB_AAP_PQ_END_BAL_AMT, F.USD_AAA_PQ_END_BAL_AMT, F.USD_AAP_PQ_END_BAL_AMT, F.RMB_AAA_PTD_AMT, F.RMB_AAP_PTD_AMT, F.USD_AAA_PTD_AMT, F.USD_AAP_PTD_AMT, F.RMB_AAP_PY_PTD_AMT, F.RMB_AAA_YTD_AMT, F.RMB_AAP_YTD_AMT, F.USD_AAA_YTD_AMT, F.USD_AAP_YTD_AMT, F.RMB_AAA_END_BAL_AMT, F.RMB_AAP_END_BAL_AMT, F.USD_AAA_END_BAL_AMT, F.USD_AAP_END_BAL_AMT, F.RMB_AAA_YEAR_AVG_AMT, F.RMB_AAP_YEAR_AVG_AMT, F.USD_AAA_YEAR_AVG_AMT, F.USD_AAP_YEAR_AVG_AMT, F.RMB_AAA_PP_END_BAL_AMT, F.RMB_AAP_PP_END_BAL_AMT, F.USD_AAA_PP_END_BAL_AMT, F.USD_AAP_PP_END_BAL_AMT, F.RMB_AAA_LY_END_BAL_AMT, F.RMB_AAP_LY_END_BAL_AMT, F.USD_AAA_LY_END_BAL_AMT, F.USD_AAP_LY_END_BAL_AMT, F.RMB_AAA_PY_2POINT_YTD_AMT, F.RMB_AAP_PY_2POINT_YTD_AMT, F.USD_AAA_PY_2POINT_YTD_AMT, F.USD_AAP_PY_2POINT_YTD_AMT, F.RMB_AAA_2POINT_YTD_AMT, F.RMB_AAP_2POINT_YTD_AMT, F.USD_AAA_2POINT_YTD_AMT, F.USD_AAP_2POINT_YTD_AMT, F.BUSINESS_STATUS_CN_NAME, F.BUSINESS_STATUS_EN_NAME, F.BUSINESS_STATUS_CODE, F.LOCATION_L1_CODE, F.LOCATION_L1_CN_NAME, F.LOCATION_L1_EN_NAME, F.LOCATION_L2_CODE, F.LOCATION_L2_CN_NAME, F.LOCATION_L2_EN_NAME, F.LOCATION_L3_CODE, F.LOCATION_L3_CN_NAME, F.LOCATION_L3_EN_NAME, F.LOCATION_CODE, F.LOCATION_CN_NAME, F.LOCATION_EN_NAME, F.LOCATION_TYPE_CN_NAME, F.LOCATION_TYPE_EN_NAME, F.TOP_CUST_CATEGORY_CN_NAME, F.TOP_CUST_CATEGORY_CODE, F.TOP_CUST_CATEGORY_EN_NAME, F.ACCTCUST_HQ_CN_NAME, F.ACCTCUST_HQ_CODE, F.ACCTCUST_HQ_EN_NAME, F.ACCTCUST_BRANCH_CN_NAM, F.ACCTCUST_BRANCH_CODE, F.ACCTCUST_BRANCH_EN_NAM, F.ACCTCUST_LV2_BRANCH_CN_NAME, F.ACCTCUST_LV2_BRANCH_CODE, F.ACCTCUST_LV2_BRANCH_EN_NAME, F.ACCTCUST_SUBSIDIARY_CN_NAM, F.ACCTCUST_SUBSIDIARY_CODE, F.ACCTCUST_SUBSIDIARY_EN_NAM, F.BRANCH_CUSTCATG_CN_NAME, F.BRANCH_CUSTCATG_CODE, F.BRANCH_CUSTCATG_EN_NAME, F.CUST_ACCOUNT_NUM, F.CUST_CLASS_CN_NAME, F.CUST_CLASS_CODE, F.CUST_CLASS_EN_NAME, F.CUST_EN_NAME, F.CUST_NL_NAME, F.REGION_CUSTCATG_CN_NAME, F.REGION_CUSTCATG_CODE, F.REGION_CUSTCATG_EN_NAME, F.LV2_BRANCH_CUSTCATG_CN_NAME, F.LV2_BRANCH_CUSTCATG_CODE, F.LV2_BRANCH_CUSTCATG_EN_NAME, F.LVL2_CUST_CLASS_CN_NAME, F.LVL2_CUST_CLASS_EN_NAME, F.HISI_LV0_PROD_LIST_CODE, F.HISI_LV0_PROD_LIST_CN_NAME, F.HISI_LV0_PROD_LIST_EN_NAME, F.HISI_LV1_PROD_LIST_CODE, F.HISI_LV1_PROD_LIST_CN_NAME, F.HISI_LV1_PROD_LIST_EN_NAME, F.HISI_LV2_PROD_LIST_CODE, F.HISI_LV2_PROD_LIST_CN_NAME, F.HISI_LV2_PROD_LIST_EN_NAME, F.HISI_LV3_PROD_LIST_CODE, F.HISI_LV3_PROD_LIST_CN_NAME, F.HISI_LV3_PROD_LIST_EN_NAME, F.HISI_LV4_PROD_LIST_CODE, F.HISI_LV4_PROD_LIST_CN_NAME, F.HISI_LV4_PROD_LIST_EN_NAME, F.HISI_LV5_PROD_LIST_CODE, F.HISI_LV5_PROD_LIST_CN_NAME, F.HISI_LV5_PROD_LIST_EN_NAME, F.HISI_PROD_CODE, F.HISI_PROD_EN_NAME, F.HISI_PROD_CN_NAME, F.ENTERPRISE_CUST_KEY, F.ENTERPRISE_CUST_EN_NAME, F.ENTERPRISE_CUST_NL_NAME, F.ENTERPRISE_INDUSTRY_CLASS_CODE, F.ENTERPRISE_INDUSTRY_CLASS_CN_NAME, F.ENTERPRISE_INDUSTRY_CLASS_EN_NAME, F.ENTERPRISE_ENT_CUST_CLASS_CODE, F.ENTERPRISE_ENT_CUST_CLASS_CN_NAME, F.ENTERPRISE_ENT_CUST_CLASS_EN_NAME, F.PROJ_NUM, F.PROJ_EN_NAME, F.PROJ_CN_NAME, F.PROJ_GEO_PC_CN_NAME, F.PROJ_GEO_PC_EN_NAME, F.PROJGEO_PC_CN_NAME, F.PROJGEO_PC_EN_NAME, F.ACCOUNT_MANAGER_CN_NAME, F.ACCOUNT_MANAGER_CODE, F.ACCOUNT_MANAGER_EN_NAME, F.HW_CONTRACT_NUM, F.CUST_CONTRACT_NUM, F.CONTRACT_NAME, F.FRAMEWORK_CONTRACT_NUM, F.END_CUST_NAME, F.AGENT_DISTRIBUTION_CUST_NAME, F.SIGN_CUST_NAME, F.REGISTRATION_DATE, F.SALES_MODE_CN_NAME, F.SALES_MODE_CODE, F.SALES_MODE_EN_NAME, F.CONTRACT_FIRST_PUBLISH_DATE, F.CONTRACT_STATUS_CN_NAME, F.CONTRACT_STATUS_CODE, F.CONTRACT_STATUS_EN_NAME, F.CREATE_DATE, F.LOGIN_DATE, F.COMBIND_TO_SINGL_DATE, F.SIGN_DATE, F.SIGN_PERSON, F.ADVANCED_SALES_TO_SALES_DATE, F.WARRANTY_START_MSTNE_CN_NAME, F.WARRANTY_START_MSTNE_EN_NAME, F.WARRANTY_BEGIN_EXTEND_DUR, F.HARDWARE_WARRANTY_DURATION, F.HARDWARE_EXTEND_WARRANTY_DUR, F.SOFTWARE_EXTEND_WARRANTY_DUR, F.BRAZIL_TERMINAL_CONTRACT_FLAG, F.INTELNAL_OVERSEA_FLAG, F.CONTRACT_ID, F.CONTRACT_TOTAL_AMT, F.CONTRACT_TYPE_CN_NAME, F.CONTRACT_TYPE_CODE, F.CONTRACT_TYPE_EN_NAME, F.CONTRACT_MAIN_TYPE_CN_NAME, F.CONTRACT_MAIN_TYPE_CODE, F.CONTRACT_MAIN_TYPE_EN_NAME, F.CONTRACT_SUB_TYPE_CN_NAME, F.CONTRACT_SUB_TYPE_CODE, F.CONTRACT_SUB_TYPE_EN_NAME, F.CONTRACT_MAIN_PROD_TYPE_CODE, F.CTRCT_MAIN_PROD_TYPE_EN_NAME, F.CTRCT_MAIN_PROD_TYPE_CN_NAME, F.CTRCT_BUSINESS_TYPE_EN_NAME, F.CTRCT_BUSINESS_TYPE_CN_NAME, F.CONTRACT_BUSINESS_TYPE_CODE, F.NEW_MOVE_TYPE_CN_NAME, F.NEW_MOVE_TYPE_CODE, F.NEW_MOVE_TYPE_EN_NAME, F.ADD_EXPAND_TYPE_CN_NAME, F.ADD_EXPAND_TYPE_CODE, F.ADD_EXPAND_TYPE_EN_NAME, F.STOCK_INCREMENT_TYPE_CN_NAME, F.STOCK_INCREMENT_TYPE_CODE, F.STOCK_INCREMENT_TYPE_EN_NAME, F.CURRENCY_CODE, F.REVENUE_SHARING_CONTRACT_FLAG, F.S3_PILOT_FLAG, F.PO_LIST_FLAG, F.BENEFICIAL_ENTITY, F.SUB_ACCOUNT_EN_NAME, F.SUB_ACCOUNT_CN_NAME, F.INVENTORY_ORG_CODE, F.INVENTORY_ORG_NAME, F.SUBINV_BG_CN_NAME, F.SUBINV_BG_EN_NAME, F.SUBINV_TYPE_CN_NAME, F.SUBINV_TYPE_EN_NAME, F.SUBINVENTORY_NAME, F.GRP_ACCOUNT_CODE_EN_NAME, F.GRP_ACCOUNT_CODE_CN_NAME, F.JE_CATEGORY_CODE, F.JE_CATEGORY_EN_NAME, F.JE_CATEGORY_CN_NAME, F.JE_SOURCE_CODE, F.JE_SOURCE_EN_NAME, F.JE_SOURCE_CN_NAME, F.HIS_CN_NAME, F.HIS_EN_NAME, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, F.CONTRACT_KEY, F.COMPANY_KEY, F.subinventory_key, F.business_status_key, F.je_source_id, F.je_category_id, F.prod_key, F.supply_center_key, F.sales_mode_key, F.proj_key, F.BG_CN_NAME, F.CONFIRM_POINT, F.CONFIRM_POINT_DELAY_DAYS, F.STOCK_CONTRACT_FLAG, F.STANDARD_CONTRACT_FLAG, F.SIGNED_REP_OFFICE_EN_NAME, F.SIGNED_REP_OFFICE_CODE, F.SIGNED_REP_OFFICE_CN_NAME, F.SIGNED_REGION_EN_NAME, F.SIGNED_REGION_CODE, F.SIGNED_REGION_CN_NAME, F.RES_CODE, F.INV_AGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, F.A_COUNTRY_FLAG FROM DMCON.DM_CBG_CI_INV_DTL_W_F_TMP_C F ;
3.2 关联更新填充缺失字段
把非表 dm_cbg_ci_inv_dtl_w_f_tmp_c 的字段通过轻量化更新(SET enable_light_colupdate = ON)的方式更新到表 dm_cbg_ci_inv_dtl_w_f
SET enable_light_colupdate = ON; UPDATE dm_cbg_ci_inv_dtl_w_f s SET s.par_proj_cn_name = par.par_proj_cn_name, s.par_proj_num = par.par_proj_num, s.par_proj_en_name = par.par_proj_en_name, s.sub_proj_cn_name = par.sub_proj_cn_name, s.sub_proj_num = par.sub_proj_num, s.sub_proj_en_name = par.sub_proj_en_name, s.product_manager_employee = stk.product_manager_employee, s.saleproj_manager_employee = stk.saleproj_manager_employee, s.inv_age_cn_name = agd.inv_age_cn_name, s.inv_age_en_name = agd.inv_age_en_name, s.begin_day = agd.begin_day, s.end_day = agd.end_day, s.inv_age_type = agd.inv_age_type, s.confirm_point_code = pnt.confirm_point_code, s.confirm_point_cn_name = pnt.confirm_point_cn_name, s.confirm_point_en_name = pnt.confirm_point_en_name, s.recognise_type_l1_code = rec.recognise_type_l1_code, s.recognise_type_l1_cn_name = rec.recognise_type_l1_cn_name, s.recognise_type_l1_en_name = rec.recognise_type_l1_en_name, s.recognise_type_l2_code = rec.recognise_type_l2_code, s.recognise_type_l2_cn_name = rec.recognise_type_l2_cn_name, s.recognise_type_l2_en_name = rec.recognise_type_l2_en_name, s.cbg_area_code = rcd.cbg_area_code, s.cbg_area_cn_name = rcd.cbg_area_cn_name, s.cbg_area_en_name = rcd.cbg_area_en_name, s.cbg_region_code = rcd.cbg_region_code, s.cbg_region_cn_name = rcd.cbg_region_cn_name, s.cbg_region_en_name = rcd.cbg_region_en_name, s.cbg_repoffice_code = rcd.cbg_repoffice_code, s.cbg_repoffice_cn_name = rcd.cbg_repoffice_cn_name, s.cbg_repoffice_en_name = rcd.cbg_repoffice_en_name, s.cbg_office_code = rcd.cbg_office_code, s.cbg_office_cn_name = rcd.cbg_office_cn_name, s.cbg_office_en_name = rcd.cbg_office_en_name, s.cbg_country_cn_name = rcd.cbg_country_cn_name, s.cbg_country_en_name = rcd.cbg_country_en_name, s.cbg_country_code = rcd.country_code, s.honor_area_code = hor.cbg_area_code, s.honor_area_cn_name = hor.cbg_area_cn_name, s.honor_area_en_name = hor.cbg_area_en_name, s.honor_region_code = hor.cbg_region_code, s.honor_region_cn_name = hor.cbg_region_cn_name, s.honor_region_en_name = hor.cbg_region_en_name, s.honor_repoffice_code = hor.cbg_repoffice_code, s.honor_repoffice_cn_name = hor.cbg_repoffice_cn_name, s.honor_repoffice_en_name = hor.cbg_repoffice_en_name, s.honor_office_code = hor.cbg_office_code, s.honor_office_cn_name = hor.cbg_office_cn_name, s.honor_office_en_name = hor.cbg_office_en_name, s.honor_country_cn_name = hor.cbg_country_cn_name, s.honor_country_en_name = hor.cbg_country_en_name, s.honor_country_code = hor.country_code FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c f INNER JOIN (SELECT par.par_proj_cn_name, par.par_proj_num, par.par_proj_en_name, par.sub_proj_cn_name, par.sub_proj_num, par.sub_proj_en_name, par.proj_key FROM (SELECT DISTINCT proj_key FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c WHERE period_id = 202304 ) t, dmdim.dwr_inv_dim_par_proj_d par WHERE T.PROJ_KEY = PAR.PROJ_KEY ) par ON f.proj_key = par.proj_key LEFT JOIN dmdim.dm_dim_inv_contract_stkhold_v stk ON f.contract_key = stk.contract_key LEFT JOIN dmdim.dm_dim_inv_aging_d agd ON f.inv_age BETWEEN agd.begin_day AND agd.end_day AND agd.inv_age_type = 2 INNER JOIN dmdim.dm_dim_inv_conf_point_d pnt ON f.confirm_point_id = pnt.confirm_point_id LEFT JOIN dmdim.dm_inv_recognise_type_d rec ON f.recognise_type_id = rec.recognise_type_id LEFT JOIN (SELECT emp.employee_name, emp.employee_key FROM (SELECT DISTINCT proj_manager_last_key FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c WHERE period_id = 202304 ) t, dmdim.dm_dim_employee_d emp WHERE T.PROJ_MANAGER_LAST_KEY = EMP.EMPLOYEE_KEY ) emp ON f.proj_manager_last_key = emp.employee_key LEFT JOIN dmdim.dm_dim_region_rc_cbg_d rcd ON f.geo_pc_key = rcd.geo_pc_key AND rcd.region_tree_code = 'huawei_tree' LEFT JOIN dmdim.dm_dim_region_rc_cbg_d hor ON f.geo_pc_key = hor.geo_pc_key AND hor.region_tree_code = 'honor_tree' ; SET enable_light_colupdate = ON;
4.扩展优化
上述step2的更新操作涉及主表dm_cbg_ci_inv_dtl_w_f和多个维表关联操作后进行更新,如果这一步耗时比较长的话,可以对这一步分拆成2个并发执行的语句进行性能加速。
--part1
SET enable_light_colupdate = ON; UPDATE dm_cbg_ci_inv_dtl_w_f s SET s.par_proj_cn_name = par.par_proj_cn_name, s.par_proj_num = par.par_proj_num, s.par_proj_en_name = par.par_proj_en_name, s.sub_proj_cn_name = par.sub_proj_cn_name, s.sub_proj_num = par.sub_proj_num, s.sub_proj_en_name = par.sub_proj_en_name, s.product_manager_employee = stk.product_manager_employee, s.saleproj_manager_employee = stk.saleproj_manager_employee, s.inv_age_cn_name = agd.inv_age_cn_name, s.inv_age_en_name = agd.inv_age_en_name, s.begin_day = agd.begin_day, s.end_day = agd.end_day, s.inv_age_type = agd.inv_age_type, s.cbg_area_code = rcd.cbg_area_code, s.cbg_area_cn_name = rcd.cbg_area_cn_name, s.cbg_area_en_name = rcd.cbg_area_en_name, s.cbg_region_code = rcd.cbg_region_code, s.cbg_region_cn_name = rcd.cbg_region_cn_name, s.cbg_region_en_name = rcd.cbg_region_en_name, s.cbg_repoffice_code = rcd.cbg_repoffice_code, s.cbg_repoffice_cn_name = rcd.cbg_repoffice_cn_name, s.cbg_repoffice_en_name = rcd.cbg_repoffice_en_name, s.cbg_office_code = rcd.cbg_office_code, s.cbg_office_cn_name = rcd.cbg_office_cn_name, s.cbg_office_en_name = rcd.cbg_office_en_name, s.cbg_country_cn_name = rcd.cbg_country_cn_name, s.cbg_country_en_name = rcd.cbg_country_en_name, s.cbg_country_code = rcd.country_code FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c f INNER JOIN (SELECT par.par_proj_cn_name, par.par_proj_num, par.par_proj_en_name, par.sub_proj_cn_name, par.sub_proj_num, par.sub_proj_en_name, par.proj_key FROM (SELECT DISTINCT proj_key FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c WHERE period_id = 202304 ) t, dmdim.dwr_inv_dim_par_proj_d par WHERE T.PROJ_KEY = PAR.PROJ_KEY ) par ON f.proj_key = par.proj_key LEFT JOIN dmdim.dm_dim_inv_contract_stkhold_v stk ON f.contract_key = stk.contract_key LEFT JOIN dmdim.dm_dim_inv_aging_d agd ON f.inv_age BETWEEN agd.begin_day AND agd.end_day AND agd.inv_age_type = 2 LEFT JOIN dmdim.dm_dim_region_rc_cbg_d rcd ON f.geo_pc_key = rcd.geo_pc_key AND rcd.region_tree_code = 'huawei_tree'; SET enable_light_colupdate = ON;
--part2
SET enable_light_colupdate = ON; UPDATE dm_cbg_ci_inv_dtl_w_f s SET s.confirm_point_code = pnt.confirm_point_code, s.confirm_point_cn_name = pnt.confirm_point_cn_name, s.confirm_point_en_name = pnt.confirm_point_en_name, s.recognise_type_l1_code = rec.recognise_type_l1_code, s.recognise_type_l1_cn_name = rec.recognise_type_l1_cn_name, s.recognise_type_l1_en_name = rec.recognise_type_l1_en_name, s.recognise_type_l2_code = rec.recognise_type_l2_code, s.recognise_type_l2_cn_name = rec.recognise_type_l2_cn_name, s.recognise_type_l2_en_name = rec.recognise_type_l2_en_name, s.honor_area_code = hor.cbg_area_code, s.honor_area_cn_name = hor.cbg_area_cn_name, s.honor_area_en_name = hor.cbg_area_en_name, s.honor_region_code = hor.cbg_region_code, s.honor_region_cn_name = hor.cbg_region_cn_name, s.honor_region_en_name = hor.cbg_region_en_name, s.honor_repoffice_code = hor.cbg_repoffice_code, s.honor_repoffice_cn_name = hor.cbg_repoffice_cn_name, s.honor_repoffice_en_name = hor.cbg_repoffice_en_name, s.honor_office_code = hor.cbg_office_code, s.honor_office_cn_name = hor.cbg_office_cn_name, s.honor_office_en_name = hor.cbg_office_en_name, s.honor_country_cn_name = hor.cbg_country_cn_name, s.honor_country_en_name = hor.cbg_country_en_name, s.honor_country_code = hor.country_code FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c f INNER JOIN dmdim.dm_dim_inv_conf_point_d pnt ON f.confirm_point_id = pnt.confirm_point_id LEFT JOIN dmdim.dm_inv_recognise_type_d rec ON f.recognise_type_id = rec.recognise_type_id LEFT JOIN (SELECT emp.employee_name, emp.employee_key FROM (SELECT DISTINCT proj_manager_last_key FROM dmcon.dm_cbg_ci_inv_dtl_w_f_tmp_c WHERE period_id = 202304 ) t, dmdim.dm_dim_employee_d emp WHERE T.PROJ_MANAGER_LAST_KEY = EMP.EMPLOYEE_KEY ) emp ON f.proj_manager_last_key = emp.employee_key LEFT JOIN dmdim.dm_dim_region_rc_cbg_d hor ON f.geo_pc_key = hor.geo_pc_key AND hor.region_tree_code = 'honor_tree'; SET enable_light_colupdate = ON;
DWS轻量化更新黑科技:宽表加工优化的更多相关文章
- 【企业流行新数仓】Day02:DWS层(按日分区的宽表)、DWT层(全量累计表)、ADS层、总结
一.DWS层 1.概括 dwd层的数据,每日轻度聚合,建宽表 表名 粒度 dws_uv_detail_daycount 一个设备是一行 dws_user_action_daycount(只统计今天登录 ...
- 【实时数仓】Day04-DWS层业务:DWS设计、访客宽表、商品主题宽表、流合并、地区主题表、FlinkSQL、关键词主题表、分词
一.DWS层与DWM设计 1.思路 之前已经进行分流 但只需要一些指标进行实时计算,将这些指标以主题宽表的形式输出 2.需求 访客.商品.地区.关键词四层的需求(可视化大屏展示.多维分析) 3.DWS ...
- “体检医生”黑科技|让AI开发更精准,ModelArts更新模型诊断功能
摘要:华为云AI开发平台ModelArts黑科技加持AI研发,让模型开发更高效.更简单,降低AI在行业的落地门槛.全面的可视化评估以及智能诊断功能,使得开发者可以直观了解模型各方面性能,从而进行针对性 ...
- localStorage的黑科技-js和css缓存机制
一.发现黑科技的起因 今天在微信公众号看到一篇技术博文,想用印象笔记收藏,所以发送了文章链接到pc上.然后习惯性地打开控制台,看看源码,想了解下最近微信用了什么新技术. 呵呵,以下勾起了我侦探的欲 ...
- 【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技
[导读]TensorFlow 在 2015 年年底一出现就受到了极大的关注,经过一年多的发展,已经成为了在机器学习.深度学习项目中最受欢迎的框架之一.自发布以来,TensorFlow 不断在完善并增加 ...
- 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的极简美化指南
目录 安装python 安装git 安装powerline字体 主题定制 安装oh-my-posh 查看策略组的执行权限 使用choco 安装终端模拟器 - ConEmu 优化 PowerShell ...
- 黑科技抢先尝(续) - Windows terminal中WSL Linux 终端的极简美化指南
目录 修改默认源,为apt-get安装提速 安装python 和 python pip 安装 zsh 安装powerline-font中的特定字体 安装powerline-shell 修改~目录下的配 ...
- 一文带你了解 HTTP 黑科技
这是 HTTP 系列的第三篇文章,此篇文章为 HTTP 的进阶文章. 在前面两篇文章中我们讲述了 HTTP 的入门,HTTP 所有常用标头的概述,这篇文章我们来聊一下 HTTP 的一些 黑科技. HT ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- 深度学习与CV教程(10) | 轻量化CNN架构 (SqueezeNet,ShuffleNet,MobileNet等)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- Linux内存管理 | 一、内存管理的由来及思想
1.前言 <中庸>有:"九层之台,起于垒土" 之说,那么对于我们搞技术的人,同样如此! 对于Linux内存管理,你可以说没有留意过,但是它存在于我们日常开发的方方面面, ...
- 游戏客户端开发中对MVC模式的思考
话说在前头,我分析MVC模式是为了确定自己要做的独立游戏的结构出来,并不适用于大型商业游戏的开发. MVC模式的概述 关于MVC模式,Model用于存储数据,View层用于显示数据,Controlle ...
- Python使用pymysql和xlrd2将Excel数据导入MySQL数据库
在数据处理和管理中,有时候需要将Excel文件中的数据导入到MySQL数据库中进行进一步的分析和操作.本文将介绍如何使用Python编程语言实现这个过程. 导入所需库 import xlrd2 # 导 ...
- Django admin 注册自己的路由
通过 admin.py 在 Django 后台注册自己的路由(对应自己的视图) 要在一个 app 里面的 admin.py 添加如下代码 # django2\apps\business\admin.p ...
- k8s-服务网格实战-入门Istio
背景 终于进入大家都比较感兴趣的服务网格系列了,在前面已经讲解了: 如何部署应用到 kubernetes 服务之间如何调用 如何通过域名访问我们的服务 如何使用 kubernetes 自带的配置 Co ...
- 21. 从零用Rust编写正反向代理,tokio竟然这样对待socket!
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...
- Flask解决跨域问题
什么是跨域问题 跨域问题指的是浏览器限制了从一个源(协议.域名.端口)访问另一个源的资源的行为,这个限制是浏览器的一个安全机制.如果一个网页从一个源加载了另一种类型的资源(例如 HTML.CSS.脚本 ...
- 题解 SP15454
前言 数学符号约定 \(\operatorname{lowbit}(x)\):表示 \(x\) 的二进制最低位. \([a,b]\):表示区间 \(a\sim b\),其中包含 \(a,\,b\) 端 ...
- srm-50
刚开始拿到题目没有思路,看了字符串发现也没什么特别的,也没有提示输入什么什么,然后找到main函数,f5进去以后也没什么特别的 然后就看了wp发现得从程序本身出发去解决问题 点开程序,随便输入点什么 ...
- Util应用框架基础(七) - 缓存
本节介绍Util应用框架如何操作缓存. 概述 缓存是提升性能的关键手段之一. 除了提升性能,缓存对系统健壮性和安全性也有影响. 不同类型的系统对缓存的依赖程度不同. 对于后台管理系统,由于是给管理人员 ...