使用大表(9亿条记录)的Presto完全连接比Hive慢得多

使用大表(9亿条记录)的Presto完全连接比Hive慢得多,hive,presto,Hive,Presto,我正在做Hive和Presto的基准性能测试。以下是条件和事实: 大表(ecu_数据)和小临时表的完全联接。这两个表都是以OSS作为存储的配置单元外部表。文件格式为拼花地板 数据大小:ecu_数据-9亿条记录,临时表-约100万条记录 Presto集群:3个节点。每个节点的内存池:常规池-15GB,保留池-禁用,净空池-2GB 性能:蜂箱-148分钟;普雷斯托-240分钟 3个presto群集的CPU/内存利用率级别听起来很低。(CPU利用率为17%) ecu_数据/温度表的预完全联接 #!

我正在做Hive和Presto的基准性能测试。以下是条件和事实:

  • 大表(ecu_数据)和小临时表的完全联接。这两个表都是以OSS作为存储的配置单元外部表。文件格式为拼花地板
  • 数据大小:ecu_数据-9亿条记录,临时表-约100万条记录
  • Presto集群:3个节点。每个节点的内存池:常规池-15GB,保留池-禁用,净空池-2GB
  • 性能:蜂箱-148分钟;普雷斯托-240分钟
3个presto群集的CPU/内存利用率级别听起来很低。(CPU利用率为17%)

ecu_数据/温度表的预完全联接

#!/bin/bash

echo "
INSERT INTO ${PST_HIVE_DEST_DB}.${PST_GWM_TOTAL_TBL}
SELECT CASE 
WHEN tb1.vin IS NOT NULL THEN tb1.vin 
WHEN tb2.vin IS NOT NULL THEN tb2.vin 
ELSE NULL END AS vin,
CASE 
WHEN tb1.ts IS NOT NULL THEN tb1.ts 
WHEN tb2.ts IS NOT NULL THEN tb2.ts 
ELSE NULL END AS ts,
CASE 
WHEN tb1.oem IS NOT NULL THEN tb1.oem 
WHEN tb2.oem IS NOT NULL THEN tb2.oem 
ELSE NULL END AS oem, 
CASE 
WHEN tb1.cartype IS NOT NULL THEN tb1.cartype 
WHEN tb2.cartype IS NOT NULL THEN tb2.cartype 
ELSE NULL END AS cartype,  
CASE 
WHEN tb1.brand IS NOT NULL THEN tb1.brand 
WHEN tb2.brand IS NOT NULL THEN tb2.brand 
ELSE NULL END AS brand,   
CASE 
WHEN tb1.createtime IS NOT NULL THEN tb1.createtime 
WHEN tb2.createtime IS NOT NULL THEN tb2.createtime 
ELSE NULL END AS createtime, 
CASE 
WHEN tb1.rollingcounter IS NOT NULL THEN tb1.rollingcounter 
WHEN tb2.rollingcounter IS NOT NULL THEN tb2.rollingcounter 
ELSE NULL END AS rollingcounter,  
c_abnorflam, 
c_brkeopera, 
tcuquery, 
synchrosiglextc, 
cvoflg, 
cvorelease, 
intkmanifpres, 
intkmanifpresphyslimit, 
airmass, 
tolegrrate, 
engoiltemp, 
inneegrrate, 
accepedalangle, 
ignadvanangle, 
innetoqtargval, 
igntoqtargval, 
relaircharge, 
canispurgvolm, 
throttvlvposi, 
engspd,
engreverseflg, 
engrohsig0, 
engrohsig1, 
engrohsig2, 
engrohsig3, 
uegolam, 
resetapplienvit, 
resetid, 
resetval, 
resetnum, 
resetidlastim, 
altudcorcfactor,
intkvvtposi, 
intkvvttargposi, 
exhautvvtposi, 
exhautvvttargposi, 
oilinjtpulwidth, 
hegooxysensv, 
railpres_ctrl, 
CASE 
WHEN tb1.engtemp IS NOT NULL THEN tb1.engtemp 
WHEN tb2.engtemp IS NOT NULL THEN tb2.engtemp 
ELSE NULL END AS engtemp, 
gpfcarbload,
flgdrvbehavr, 
tolnum_shrpacc, 
avgacc_shrpacc, 
avgv_shrpacc, 
avgengspd_shrpacc, 
avgairchrg_shrpacc, 
time_shrpacc, 
tolnum_shrpdec, 
avgdec_shrpdec, 
avgv_shrpdec, 
avgengspd_shrpdec, 
avgairchrg_shrpdec, 
time_shrpdec, 
tolnum_shrptrn, 
avgtrn_shrptrn, 
avgv_shrptrn, 
time_shrptrn, 
drvmode, 
engineworkconareanum1, 
oilcorrectfactornum, 
oilcorrectfactorreliability, 
flg_shrpacc, 
flg_shrpdec, 
flg_shrptrn, 
flg_drvhabt, 
CASE 
WHEN tb1.engmodeltemp IS NOT NULL THEN tb1.engmodeltemp 
WHEN tb2.engmodeltemp IS NOT NULL THEN tb2.engmodeltemp 
ELSE NULL END AS engmodeltemp, 
CASE 
WHEN tb1.engmodelreftemp IS NOT NULL THEN tb1.engmodelreftemp 
WHEN tb2.engmodelreftemp IS NOT NULL THEN tb2.engmodelreftemp 
ELSE NULL END AS engmodelreftemp,  
normaldrivingpetrolwear, 
intensedrivingpetrolwear, 
airconditionerpetrolwear, 
idlepetrolwear, 
cycletotaloilwear, 
pasttotaloilwear10sec, 
remainingoillevel, 
dtcmalfunctioninfo, 
ccf, 
CASE 
WHEN tb1.regedemandmax IS NOT NULL THEN tb1.regedemandmax 
WHEN tb2.regedemandmax IS NOT NULL THEN tb2.regedemandmax 
ELSE NULL END AS regedemandmax,  
engineworkconareanum2, 
oiltemp_coolwatertemp_areanum, 
CASE 
WHEN tb1.regedemandmaxid IS NOT NULL THEN tb1.regedemandmaxid 
WHEN tb2.regedemandmaxid IS NOT NULL THEN tb2.regedemandmaxid 
ELSE NULL END AS regedemandmaxid, 
gpfstate, 
CASE 
WHEN tb1.ambienttemp IS NOT NULL THEN tb1.ambienttemp 
WHEN tb2.ambienttemp IS NOT NULL THEN tb2.ambienttemp 
ELSE NULL END AS ambienttemp,  
CASE 
WHEN tb1.ashinflu IS NOT NULL THEN tb1.ashinflu 
WHEN tb2.ashinflu IS NOT NULL THEN tb2.ashinflu 
ELSE NULL END AS ashinflu, 
gpftemp, 
oxymass, 
gpfcarbloadmeas, 
CASE 
WHEN tb1.gpfcarbloadmodel IS NOT NULL THEN tb1.gpfcarbloadmodel 
WHEN tb2.gpfcarbloadmodel IS NOT NULL THEN tb2.gpfcarbloadmodel 
ELSE NULL END AS gpfcarbloadmodel, 
CASE 
WHEN tb1.drivingmileage IS NOT NULL THEN tb1.drivingmileage 
WHEN tb2.drivingmileage IS NOT NULL THEN tb2.drivingmileage 
ELSE NULL END AS drivingmileage, 
dsmready1, 
lamcontlfactor1, 
timnormstate, 
lamcontlfactor2, 
distacmilactvat, 
locatoxysens, 
distacdiagcodclear, 
obdrequrt, 
dsmready2, 
numwamup, 
coolwatertempdst_snsr, 
engspd_raw, 
intkairtemp_snsr, 
airmass_snsr, 
absotdveposi1, 
evapvaporpres, 
oxygsenslsu, 
oxygsensorv, 
vesysv, 
accepedalposid, 
relfuellvl, 
accepedalposie, 
secoxysensfueltrim, 
reldveposi, 
coolwatertempdst, 
coolwatertempust,
lamcontlfactor3, 
logtrmfueltrim, 
absotdveposi2, 
manifpres, 
railpres_raw, 
desirddveposi, 
commddtycyclfuelprgcontl, 
ambientpres, 
coolwatertempust2, 
airfuelratio, 
catalsttemp, 
relairmass, 
relaircharge_absladval, 
airfuelcommdratio, 
ingangle_cyl1, 
shrtrmfueltrim, 
carspd,
posstatus, 
lat, 
lon, 
londir, 
speedkn, 
tracktrue, 
magvar, 
modeind, 
tirprsfl, 
tirtempfl, 
tirprsfr, 
tirtempfr, 
tirprsrl, 
tirtemprl, 
tirprsrr, 
tirtemprr, 
iuprnumavltr, 
iuprnumasnsrmnt, 
caucoderltim, 
caucodetwc, 
iuprnumadiagtwc, 
iuprdenodiagtwc, 
iuprnumadyndiaglsu, 
iuprnumapladiaglsu, 
caucodedyndiaglsu, 
iuprnumarltim, 
iuprnumavltl, 
caucodepladiaglsu, 
iuprnumadtesk1, 
iuprdenodtesk1, 
caucodevltl, 
iuprnumarohdtesk, 
iuprdenorohdtesk, 
caucodevltr, 
caucodesnsrmnt, 
caucodedtesk1, 
caucoderohdtesk, 
genldeno, 
battvolt, 
tolengstrtnum, 
tolengstrtsuccnum, 
drivingmileagecycl, 
tolruntim, 
runtimidl, 
dvefd, 
runtimaccelow, 
runtimaccehigh, 
faltlvlthrottzeroslv, 
runtimdecehigh, 
runtimdecelow, 
airmasslv, 
fairmasslv, 
faltlvlthrottairmasslv, 
throttvsens1zeroslv, 
throttvsens1fzeroslv, 
throttvsens2zeroslv, 
throttvsens2fzeroslv, 
faltlvlmaxhdr, 
summassflw, 
sumpistnblow, 
faltlvlminhdr, 
sumoilcomsumtcrkcs, 
falllvldskv, 
frmnumlamclose, 
faltlvlad, 
railpres_fild, 
railpres_rel, 
faltlvlinptlogic, 
faltlvlsyn, 
faltnumpedalposd, 
faltnumpedalpose, 
oxysensfd, 
faltlvlclmpswth, 
faltlvlidlspdmin, 
faltlvlidlspdmax, 
faltlvlidlspdnpl, 
t_engstrt, 
t_engstal, 
c_suprknk, 
c_hspsecinjectiondyn, 
c_preigndetct, 
engspdgradt1cycl, 
filtgradtmanifpres, 
preignratio, 
knkratio, 
ignangle, 
relaircharge_cyl, 
\"1stpreignnum\", 
\"2ndpreignnum\", 
\"3rdpreignnum\", 
\"4thpreignnum\", 
intkairtemp, 
reloilpres, 
thermostatdiagflg, 
thermostatdiagena, 
drivingcyclnum_hot, 
airmass1, 
engmodelreftemp_end, 
drivingcyclnum_cold, 
stkchecksen1high, 
stkchecksen1low, 
stkchecksen2high, 
stkchecksen2low, 
toltempsensmeanval, 
tfa1coldstrt, 
tfa2coldstrt, 
cendiagstat, 
intkairtempsensval1, 
intkairtempsensval2, 
airmassfilt, 
engstptim,
CASE 
WHEN tb1.year IS NOT NULL THEN tb1.year 
WHEN tb2.year IS NOT NULL THEN tb2.year 
ELSE NULL END AS year,  
CASE 
WHEN tb1.month IS NOT NULL THEN tb1.month 
WHEN tb2.month IS NOT NULL THEN tb2.month 
ELSE NULL END AS month, 
CASE 
WHEN tb1.day IS NOT NULL THEN tb1.day 
WHEN tb2.day IS NOT NULL THEN tb2.day 
ELSE NULL END AS day 
FROM  
(SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_ECU_DATA} WHERE createtime < to_iso8601(current_date)) AS tb1
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_DEST_DB}.${PST_GWM_TOTAL_TBL_TEMP} WHERE createtime < to_iso8601(current_date)) AS tb2 ON (tb1.vin = tb2.vin AND tb1.ts = tb2.ts) 
;
"
临时表DDL

#!/bin/bash

echo "
INSERT INTO ${PST_HIVE_DEST_DB}.${PST_GWM_TOTAL_TBL_TEMP}
SELECT CASE 
WHEN tb1.vin IS NOT NULL THEN tb1.vin 
WHEN tb2.vin IS NOT NULL THEN tb2.vin 
WHEN tb3.vin IS NOT NULL THEN tb3.vin 
WHEN tb4.vin IS NOT NULL THEN tb4.vin 
WHEN tb5.vin IS NOT NULL THEN tb5.vin 
WHEN tb6.vin IS NOT NULL THEN tb6.vin 
WHEN tb7.vin IS NOT NULL THEN tb7.vin 
WHEN tb8.vin IS NOT NULL THEN tb8.vin 
ELSE NULL END AS vin,
CASE 
WHEN tb1.ts IS NOT NULL THEN tb1.ts 
WHEN tb2.ts IS NOT NULL THEN tb2.ts 
WHEN tb3.ts IS NOT NULL THEN tb3.ts 
WHEN tb4.ts IS NOT NULL THEN tb4.ts 
WHEN tb5.ts IS NOT NULL THEN tb5.ts 
WHEN tb6.ts IS NOT NULL THEN tb6.ts 
WHEN tb7.ts IS NOT NULL THEN tb7.ts 
WHEN tb8.ts IS NOT NULL THEN tb8.ts 
ELSE NULL END AS ts,
CASE 
WHEN tb1.oem IS NOT NULL THEN tb1.oem 
WHEN tb2.oem IS NOT NULL THEN tb2.oem 
WHEN tb3.oem IS NOT NULL THEN tb3.oem 
WHEN tb4.oem IS NOT NULL THEN tb4.oem 
WHEN tb5.oem IS NOT NULL THEN tb5.oem 
WHEN tb6.oem IS NOT NULL THEN tb6.oem 
WHEN tb7.oem IS NOT NULL THEN tb7.oem 
WHEN tb8.oem IS NOT NULL THEN tb8.oem 
ELSE NULL END AS oem, 
CASE 
WHEN tb1.cartype IS NOT NULL THEN tb1.cartype 
WHEN tb2.cartype IS NOT NULL THEN tb2.cartype 
WHEN tb3.cartype IS NOT NULL THEN tb3.cartype 
WHEN tb4.cartype IS NOT NULL THEN tb4.cartype 
WHEN tb5.cartype IS NOT NULL THEN tb5.cartype 
WHEN tb6.cartype IS NOT NULL THEN tb6.cartype 
WHEN tb7.cartype IS NOT NULL THEN tb7.cartype 
WHEN tb8.cartype IS NOT NULL THEN tb8.cartype 
ELSE NULL END AS cartype,  
CASE 
WHEN tb1.brand IS NOT NULL THEN tb1.brand 
WHEN tb2.brand IS NOT NULL THEN tb2.brand 
WHEN tb3.brand IS NOT NULL THEN tb3.brand 
WHEN tb4.brand IS NOT NULL THEN tb4.brand 
WHEN tb5.brand IS NOT NULL THEN tb5.brand 
WHEN tb6.brand IS NOT NULL THEN tb6.brand 
WHEN tb7.brand IS NOT NULL THEN tb7.brand 
WHEN tb8.brand IS NOT NULL THEN tb8.brand 
ELSE NULL END AS brand,   
CASE 
WHEN tb1.createtime IS NOT NULL THEN tb1.createtime 
WHEN tb2.createtime IS NOT NULL THEN tb2.createtime 
WHEN tb3.createtime IS NOT NULL THEN tb3.createtime 
WHEN tb4.createtime IS NOT NULL THEN tb4.createtime 
WHEN tb5.createtime IS NOT NULL THEN tb5.createtime 
WHEN tb6.createtime IS NOT NULL THEN tb6.createtime 
WHEN tb7.createtime IS NOT NULL THEN tb7.createtime 
WHEN tb8.createtime IS NOT NULL THEN tb8.createtime 
ELSE NULL END AS createtime, 
CASE 
WHEN tb2.rollingcounter IS NOT NULL THEN tb2.rollingcounter 
WHEN tb3.rollingcounter IS NOT NULL THEN tb3.rollingcounter 
WHEN tb4.rollingcounter IS NOT NULL THEN tb4.rollingcounter 
WHEN tb5.rollingcounter IS NOT NULL THEN tb5.rollingcounter 
WHEN tb6.rollingcounter IS NOT NULL THEN tb6.rollingcounter 
WHEN tb7.rollingcounter IS NOT NULL THEN tb7.rollingcounter 
WHEN tb8.rollingcounter IS NOT NULL THEN tb8.rollingcounter 
ELSE NULL END AS rollingcounter,  
c_abnorflam, 
c_brkeopera, 
tcuquery, 
synchrosiglextc, 
cvoflg, 
cvorelease, 
intkmanifpres, 
intkmanifpresphyslimit, 
airmass, 
tolegrrate, 
engoiltemp, 
inneegrrate, 
accepedalangle, 
ignadvanangle, 
innetoqtargval, 
igntoqtargval, 
relaircharge, 
canispurgvolm, 
throttvlvposi, 
CASE 
WHEN tb3.engspd IS NOT NULL THEN tb3.engspd 
WHEN tb7.engspd IS NOT NULL THEN tb7.engspd 
ELSE NULL END AS engspd, 
engreverseflg, 
engrohsig0, 
engrohsig1, 
engrohsig2, 
engrohsig3, 
uegolam, 
resetapplienvit, 
resetid, 
resetval, 
resetnum, 
resetidlastim, 
CASE 
WHEN tb3.altudcorcfactor IS NOT NULL THEN tb3.altudcorcfactor 
WHEN tb6.altudcorcfactor IS NOT NULL THEN tb6.altudcorcfactor 
WHEN tb7.altudcorcfactor IS NOT NULL THEN tb7.altudcorcfactor 
ELSE NULL END AS altudcorcfactor, 
intkvvtposi, 
intkvvttargposi, 
exhautvvtposi, 
exhautvvttargposi, 
oilinjtpulwidth, 
hegooxysensv, 
railpres_ctrl, 
CASE 
WHEN tb3.engtemp IS NOT NULL THEN tb3.engtemp 
WHEN tb7.engtemp IS NOT NULL THEN tb7.engtemp 
WHEN tb8.engtemp IS NOT NULL THEN tb8.engtemp 
ELSE NULL END AS engtemp, 
CASE 
WHEN tb3.gpfcarbload IS NOT NULL THEN tb3.gpfcarbload 
WHEN tb6.gpfcarbload IS NOT NULL THEN tb6.gpfcarbload 
ELSE NULL END AS gpfcarbload,  
flgdrvbehavr, 
tolnum_shrpacc, 
avgacc_shrpacc, 
avgv_shrpacc, 
avgengspd_shrpacc, 
avgairchrg_shrpacc, 
time_shrpacc, 
tolnum_shrpdec, 
avgdec_shrpdec, 
avgv_shrpdec, 
avgengspd_shrpdec, 
avgairchrg_shrpdec, 
time_shrpdec, 
tolnum_shrptrn, 
avgtrn_shrptrn, 
avgv_shrptrn, 
time_shrptrn, 
drvmode, 
CASE 
WHEN tb8.engmodeltemp IS NOT NULL THEN tb8.engmodeltemp 
ELSE NULL END AS engmodeltemp, 
CASE 
WHEN tb8.engmodelreftemp IS NOT NULL THEN tb8.engmodelreftemp 
ELSE NULL END AS engmodelreftemp,  
CASE 
WHEN tb6.regedemandmax IS NOT NULL THEN tb6.regedemandmax 
ELSE NULL END AS regedemandmax,  
CASE 
WHEN tb6.regedemandmaxid IS NOT NULL THEN tb6.regedemandmaxid 
ELSE NULL END AS regedemandmaxid, 
CASE 
WHEN tb4.ambienttemp IS NOT NULL THEN tb4.ambienttemp 
WHEN tb6.ambienttemp IS NOT NULL THEN tb6.ambienttemp 
WHEN tb7.ambienttemp IS NOT NULL THEN tb7.ambienttemp 
WHEN tb8.ambienttemp IS NOT NULL THEN tb8.ambienttemp 
ELSE NULL END AS ambienttemp,  
CASE 
WHEN tb6.ashinflu IS NOT NULL THEN tb6.ashinflu 
ELSE NULL END AS ashinflu, 
CASE 
WHEN tb6.gpfcarbloadmodel IS NOT NULL THEN tb6.gpfcarbloadmodel 
ELSE NULL END AS gpfcarbloadmodel, 
CASE 
WHEN tb4.drivingmileage IS NOT NULL THEN tb4.drivingmileage 
WHEN tb6.drivingmileage IS NOT NULL THEN tb6.drivingmileage 
WHEN tb7.drivingmileage IS NOT NULL THEN tb7.drivingmileage 
ELSE NULL END AS drivingmileage, 
dsmready1, 
lamcontlfactor1, 
timnormstate, 
lamcontlfactor2, 
distacmilactvat, 
locatoxysens, 
distacdiagcodclear, 
obdrequrt, 
dsmready2, 
numwamup, 
coolwatertempdst_snsr, 
engspd_raw, 
intkairtemp_snsr, 
airmass_snsr, 
absotdveposi1, 
evapvaporpres, 
oxygsenslsu, 
oxygsensorv, 
vesysv, 
accepedalposid, 
relfuellvl, 
accepedalposie, 
secoxysensfueltrim, 
reldveposi, 
coolwatertempdst, 
CASE 
WHEN tb4.coolwatertempust IS NOT NULL THEN tb4.coolwatertempust 
WHEN tb8.coolwatertempust IS NOT NULL THEN tb8.coolwatertempust 
ELSE NULL END AS coolwatertempust,
lamcontlfactor3, 
logtrmfueltrim, 
absotdveposi2, 
manifpres, 
railpres_raw, 
desirddveposi, 
commddtycyclfuelprgcontl, 
ambientpres, 
coolwatertempust2, 
airfuelratio, 
catalsttemp, 
relairmass, 
relaircharge_absladval, 
airfuelcommdratio, 
ingangle_cyl1, 
shrtrmfueltrim, 
CASE 
WHEN tb4.carspd IS NOT NULL THEN tb4.carspd 
WHEN tb7.carspd IS NOT NULL THEN tb7.carspd 
WHEN tb8.carspd IS NOT NULL THEN tb8.carspd 
ELSE NULL END AS carspd, 
posstatus, 
lat, 
lon, 
londir, 
speedkn, 
tracktrue, 
magvar, 
modeind, 
tirprsfl, 
tirtempfl, 
tirprsfr, 
tirtempfr, 
tirprsrl, 
tirtemprl, 
tirprsrr, 
tirtemprr, 
iuprnumavltr, 
iuprnumasnsrmnt, 
caucoderltim, 
caucodetwc, 
iuprnumadiagtwc, 
iuprdenodiagtwc, 
iuprnumadyndiaglsu, 
iuprnumapladiaglsu, 
caucodedyndiaglsu, 
iuprnumarltim, 
iuprnumavltl, 
caucodepladiaglsu, 
iuprnumadtesk1, 
iuprdenodtesk1, 
caucodevltl, 
iuprnumarohdtesk, 
iuprdenorohdtesk, 
caucodevltr, 
caucodesnsrmnt, 
caucodedtesk1, 
caucoderohdtesk, 
genldeno, 
battvolt, 
tolengstrtnum, 
tolengstrtsuccnum, 
drivingmileagecycl, 
tolruntim, 
runtimidl, 
dvefd, 
runtimaccelow, 
runtimaccehigh, 
faltlvlthrottzeroslv, 
runtimdecehigh, 
runtimdecelow, 
airmasslv, 
fairmasslv, 
faltlvlthrottairmasslv, 
throttvsens1zeroslv, 
throttvsens1fzeroslv, 
throttvsens2zeroslv, 
throttvsens2fzeroslv, 
faltlvlmaxhdr, 
summassflw, 
sumpistnblow, 
faltlvlminhdr, 
sumoilcomsumtcrkcs, 
falllvldskv, 
frmnumlamclose, 
faltlvlad, 
railpres_fild, 
railpres_rel, 
faltlvlinptlogic, 
faltlvlsyn, 
faltnumpedalposd, 
faltnumpedalpose, 
oxysensfd, 
faltlvlclmpswth, 
faltlvlidlspdmin, 
faltlvlidlspdmax, 
faltlvlidlspdnpl, 
t_engstrt, 
t_engstal, 
c_suprknk, 
c_hspsecinjectiondyn, 
c_preigndetct, 
engspdgradt1cycl, 
filtgradtmanifpres, 
preignratio, 
knkratio, 
ignangle, 
relaircharge_cyl, 
\"1stpreignnum\", 
\"2ndpreignnum\", 
\"3rdpreignnum\", 
\"4thpreignnum\", 
intkairtemp, 
reloilpres, 
thermostatdiagflg, 
thermostatdiagena, 
drivingcyclnum_hot, 
airmass1, 
engmodelreftemp_end, 
drivingcyclnum_cold, 
stkchecksen1high, 
stkchecksen1low, 
stkchecksen2high, 
stkchecksen2low, 
toltempsensmeanval, 
tfa1coldstrt, 
tfa2coldstrt, 
cendiagstat, 
intkairtempsensval1, 
intkairtempsensval2, 
airmassfilt, 
engstptim,
CASE 
WHEN tb1.year IS NOT NULL THEN tb1.year 
WHEN tb2.year IS NOT NULL THEN tb2.year 
WHEN tb3.year IS NOT NULL THEN tb3.year 
WHEN tb4.year IS NOT NULL THEN tb4.year 
WHEN tb5.year IS NOT NULL THEN tb5.year 
WHEN tb6.year IS NOT NULL THEN tb6.year 
WHEN tb7.year IS NOT NULL THEN tb7.year 
WHEN tb8.year IS NOT NULL THEN tb8.year 
ELSE NULL END AS year,  
CASE 
WHEN tb1.month IS NOT NULL THEN tb1.month 
WHEN tb2.month IS NOT NULL THEN tb2.month 
WHEN tb3.month IS NOT NULL THEN tb3.month 
WHEN tb4.month IS NOT NULL THEN tb4.month 
WHEN tb5.month IS NOT NULL THEN tb5.month 
WHEN tb6.month IS NOT NULL THEN tb6.month 
WHEN tb7.month IS NOT NULL THEN tb7.month 
WHEN tb8.month IS NOT NULL THEN tb8.month 
ELSE NULL END AS month, 
CASE 
WHEN tb1.day IS NOT NULL THEN tb1.day 
WHEN tb2.day IS NOT NULL THEN tb2.day 
WHEN tb3.day IS NOT NULL THEN tb3.day 
WHEN tb4.day IS NOT NULL THEN tb4.day 
WHEN tb5.day IS NOT NULL THEN tb5.day 
WHEN tb6.day IS NOT NULL THEN tb6.day 
WHEN tb7.day IS NOT NULL THEN tb7.day 
WHEN tb8.day IS NOT NULL THEN tb8.day 
ELSE NULL END AS day 
FROM  
(SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_GPS} WHERE createtime < to_iso8601(current_date)) AS tb1
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_DRVHABT} WHERE createtime < to_iso8601(current_date)) AS tb2 ON (tb1.vin = tb2.vin AND tb1.ts = tb2.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_ABNORMALFLAMEOUT} WHERE createtime < to_iso8601(current_date)) AS tb3 ON (tb1.vin = tb3.vin AND tb1.ts = tb3.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_FAULTOUTPUT} WHERE createtime < to_iso8601(current_date)) AS tb4 ON (tb1.vin = tb4.vin AND tb1.ts = tb4.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_PERIOD30S} WHERE createtime < to_iso8601(current_date)) AS tb5 ON (tb1.vin = tb5.vin AND tb1.ts = tb5.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_POWERON} WHERE createtime < to_iso8601(current_date)) AS tb6 ON (tb1.vin = tb6.vin AND tb1.ts = tb6.ts)
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_SUPERKNOCK} WHERE createtime < to_iso8601(current_date)) AS tb7 ON (tb1.vin = tb7.vin AND tb1.ts = tb7.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_WTDIAGNOSISMODEL} WHERE createtime < to_iso8601(current_date)) AS tb8 ON (tb1.vin = tb8.vin AND tb1.ts = tb8.ts)
;
"
#/bin/bash
回声“
插入${PST\u HIVE\u DEST\u DB}.${PST\u GWM\u TOTAL\u TBL\u TEMP}
选择案例
当tb1.vin不为空时,则tb1.vin
当tb2.vin不为空时,则tb2.vin
当tb3.vin不为空时,则tb3.vin
当tb4.vin不为空时,则tb4.vin
当tb5.vin不为空时,则tb5.vin
当tb6.vin不为空时,则tb6.vin
当tb7.vin不为空时,则tb7.vin
当tb8.vin不为空时,则tb8.vin
否则以vin结尾为空,
案例
当tb1.ts不为空时,则tb1.ts
当tb2.ts不为空时,则tb2.ts
当tb3.ts不为空时,则tb3.ts
当tb4.ts不为空时,则tb4.ts
当tb5.ts不为空时,则tb5.ts
当tb6.ts不为空时,则tb6.ts
当tb7.ts不为空时,则tb7.ts
当tb8.ts不为空时,则tb8.ts
否则NULL结束为ts,
案例
当tb1.oem不为空时,则tb1.oem
当tb2.oem不为空时,则tb2.oem
当tb3.oem不为空时,则tb3.oem
当tb4.oem不为空时,则tb4.oem
当tb5.oem不为空时,则tb5.oem
当tb6.oem不为空时,则tb6.oem
当tb7.oem不为空时,则tb7.oem
当tb8.oem不为空时,则tb8.oem
否则,作为原始设备制造商结束,
案例
当tb1.cartype不为NULL时,则为tb1.cartype
当tb2.cartype不为NULL时,则为tb2.cartype
当tb3.cartype不为NULL时,则为tb3.cartype
当tb4.cartype不为NULL时,则为tb4.cartype
当tb5.cartype不为NULL时,则为tb5.cartype
当tb6.cartype不为NULL时,则为tb6.cartype
当tb7.cartype不为NULL时,则为tb7.cartype
当tb8.cartype不为NULL时,则为tb8.cartype
ELSE NULL结束为cartype,
案例
当tb1.brand不为空时,则tb1.brand
当tb2.brand不为空时,则tb2.brand
当tb3.brand不为空时,则tb3.brand
当tb4.brand不为空时,则tb4.brand
当tb5.brand不为空时,则tb5.brand
当tb6.brand不为空时,则tb6.brand
当tb7.brand不为空时,则tb7.brand
当tb8.brand不为空时,则tb8.brand
否则,作为品牌,
案例
当tb1.createtime不为NULL时,则tb1.createtime
当tb2.createtime不为NULL时,则tb2.createtime
当tb3.createtime不为NULL时,则tb3.createtime
当tb4.createtime不为NULL时,则tb4.createtime
当tb5.createtime不为NULL时,则tb5.createtime
当tb6.createtime不为NULL时,则tb6.createtime
当tb7.createtime不为NULL时,则tb7.createtime
当tb8.createtime不为NULL时,则tb8.createtime
否则以createtime结尾为NULL,
案例
当tb2.rollingcounter不为空时,则tb2.rollingcounter
当tb3.rollingcounter不为空时,则tb3.rollingcounter
当tb4.rollingcounter不为空时,则tb4.rollingcounter
当tb5.rollingcounter不为空时,则tb5.rollingcounter
当tb6.rollingcounter不为空时,则tb6.rollingcounter
当tb7.rollingcounter不为空时,则tb7.rollingcounter
当tb8.rollingcounter不为空时,则tb8.rollingcounter
ELSE NULL结束为rollingcounter,
c_abnorflam,
c_brkeopera,
tcuquery,
同步信号,
cvoflg,
cvorelease,
INTKmanifpress,
intkmanifpresphyslimit,
气团,
托勒格拉特,
英国温度,
毫无疑问,
阿克佩达兰格尔,
伊格纳角,
因内托克塔格瓦尔酒店,
igntoqtargval,
重新充电,
卡尼斯普格沃尔姆,
throttvlvposi,
案例
当tb3.engspd不为空时,则为tb3.engspd
当tb7.engspd不为空时,则tb7.engspd
否则以engspd结尾为空,
英译汉,
英语,
英语1,
英语2,
英语3,
尤格拉姆,
阿普利恩维特,
重置ID,
resetval,
resetnum,
重设自由度,
案例
当tb3.altudcorcfactor不为NULL时,则tb3.altudcorcfactor
当tb6.altudcorcfactor不为NULL时,则tb6.altudcorcfactor
当tb7.altudcorcfactor不为NULL时,则tb7.altudcorcfactor
否则以altudcorcfactor结尾为空,
intkvvtposi,
INTKVVTargposi,
呼气vvtposi,
呼出vvttargposi,
喷油嘴宽度,
hegooxysensv,
railpres_ctrl,
案例
当tb3.engtemp不为空时,则tb3.engtemp
当tb7.engtemp不为空时,则tb7.engtemp
当tb8.engtemp不为空时,则tb8.engtemp
否则以engtemp结尾为空,
案例
当tb3.gpfcarbload不为空时,则tb3.gpfcarbload
当tb6.gpfcarbload不为空时,则tb6.gpfcarbload
ELSE NULL结束为gpfcarbload,
flgdrvbehavr,
托尔努姆·什帕奇,
avgacc_shrpacc,
avgv_shrpacc,
avgengspd_shrpacc,
avgairchrg_shrpacc,
时间(星期五),
tolnum_shrpdec,
avgdec_shrpdec,
avgv_shrpdec,
avgengspd_shrpdec,
avgairchrg_shrpdec,
时间(新加坡),
托尔努姆·什普特恩,
avgtrn_shrptrn,
avgv_shrptrn,
时间,
drvmode,
案例
当tb8.engmodeltemp不为空时,则tb8.engmodeltemp
否则以engmodeltemp结束,
案例
当tb8.engmodelreftemp不为空时,则tb8.engmodelreftemp
ELSE NULL结束为engmodelreftemp,
案例
当tb6.regedemandmax不为NULL时,则tb6.regedemandmax
ELSE NULL结束为regedemandmax,
案例
当tb6.regedemandmaxid不为NULL时,则tb6.regedemandmaxid
ELSE NULL结束为regedemandmaxid,
案例
当tb4.ambienttemp不为空时,则tb4.ambienttemp
当tb6.ambienttemp不为空时,则tb6.ambienttemp
当tb7.ambienttemp不为空时,则tb7.ambienttemp
当tb8.ambienttemp不为空时,则tb8.ambienttemp
ELSE NULL结束为ambienttemp,
案例
当tb6.ashinflu不为空时,则tb6.ashinflu
否则以ashinflu结尾,
案例
当tb6.gpfcarbloadmodel不为空时,则tb6.gpfcarbloadmodel
ELSE NULL结束为gpfcarbloadmodel,
案例
当tb4.DrivingMiles不为空时,则
#!/bin/bash

echo "
INSERT INTO ${PST_HIVE_DEST_DB}.${PST_GWM_TOTAL_TBL_TEMP}
SELECT CASE 
WHEN tb1.vin IS NOT NULL THEN tb1.vin 
WHEN tb2.vin IS NOT NULL THEN tb2.vin 
WHEN tb3.vin IS NOT NULL THEN tb3.vin 
WHEN tb4.vin IS NOT NULL THEN tb4.vin 
WHEN tb5.vin IS NOT NULL THEN tb5.vin 
WHEN tb6.vin IS NOT NULL THEN tb6.vin 
WHEN tb7.vin IS NOT NULL THEN tb7.vin 
WHEN tb8.vin IS NOT NULL THEN tb8.vin 
ELSE NULL END AS vin,
CASE 
WHEN tb1.ts IS NOT NULL THEN tb1.ts 
WHEN tb2.ts IS NOT NULL THEN tb2.ts 
WHEN tb3.ts IS NOT NULL THEN tb3.ts 
WHEN tb4.ts IS NOT NULL THEN tb4.ts 
WHEN tb5.ts IS NOT NULL THEN tb5.ts 
WHEN tb6.ts IS NOT NULL THEN tb6.ts 
WHEN tb7.ts IS NOT NULL THEN tb7.ts 
WHEN tb8.ts IS NOT NULL THEN tb8.ts 
ELSE NULL END AS ts,
CASE 
WHEN tb1.oem IS NOT NULL THEN tb1.oem 
WHEN tb2.oem IS NOT NULL THEN tb2.oem 
WHEN tb3.oem IS NOT NULL THEN tb3.oem 
WHEN tb4.oem IS NOT NULL THEN tb4.oem 
WHEN tb5.oem IS NOT NULL THEN tb5.oem 
WHEN tb6.oem IS NOT NULL THEN tb6.oem 
WHEN tb7.oem IS NOT NULL THEN tb7.oem 
WHEN tb8.oem IS NOT NULL THEN tb8.oem 
ELSE NULL END AS oem, 
CASE 
WHEN tb1.cartype IS NOT NULL THEN tb1.cartype 
WHEN tb2.cartype IS NOT NULL THEN tb2.cartype 
WHEN tb3.cartype IS NOT NULL THEN tb3.cartype 
WHEN tb4.cartype IS NOT NULL THEN tb4.cartype 
WHEN tb5.cartype IS NOT NULL THEN tb5.cartype 
WHEN tb6.cartype IS NOT NULL THEN tb6.cartype 
WHEN tb7.cartype IS NOT NULL THEN tb7.cartype 
WHEN tb8.cartype IS NOT NULL THEN tb8.cartype 
ELSE NULL END AS cartype,  
CASE 
WHEN tb1.brand IS NOT NULL THEN tb1.brand 
WHEN tb2.brand IS NOT NULL THEN tb2.brand 
WHEN tb3.brand IS NOT NULL THEN tb3.brand 
WHEN tb4.brand IS NOT NULL THEN tb4.brand 
WHEN tb5.brand IS NOT NULL THEN tb5.brand 
WHEN tb6.brand IS NOT NULL THEN tb6.brand 
WHEN tb7.brand IS NOT NULL THEN tb7.brand 
WHEN tb8.brand IS NOT NULL THEN tb8.brand 
ELSE NULL END AS brand,   
CASE 
WHEN tb1.createtime IS NOT NULL THEN tb1.createtime 
WHEN tb2.createtime IS NOT NULL THEN tb2.createtime 
WHEN tb3.createtime IS NOT NULL THEN tb3.createtime 
WHEN tb4.createtime IS NOT NULL THEN tb4.createtime 
WHEN tb5.createtime IS NOT NULL THEN tb5.createtime 
WHEN tb6.createtime IS NOT NULL THEN tb6.createtime 
WHEN tb7.createtime IS NOT NULL THEN tb7.createtime 
WHEN tb8.createtime IS NOT NULL THEN tb8.createtime 
ELSE NULL END AS createtime, 
CASE 
WHEN tb2.rollingcounter IS NOT NULL THEN tb2.rollingcounter 
WHEN tb3.rollingcounter IS NOT NULL THEN tb3.rollingcounter 
WHEN tb4.rollingcounter IS NOT NULL THEN tb4.rollingcounter 
WHEN tb5.rollingcounter IS NOT NULL THEN tb5.rollingcounter 
WHEN tb6.rollingcounter IS NOT NULL THEN tb6.rollingcounter 
WHEN tb7.rollingcounter IS NOT NULL THEN tb7.rollingcounter 
WHEN tb8.rollingcounter IS NOT NULL THEN tb8.rollingcounter 
ELSE NULL END AS rollingcounter,  
c_abnorflam, 
c_brkeopera, 
tcuquery, 
synchrosiglextc, 
cvoflg, 
cvorelease, 
intkmanifpres, 
intkmanifpresphyslimit, 
airmass, 
tolegrrate, 
engoiltemp, 
inneegrrate, 
accepedalangle, 
ignadvanangle, 
innetoqtargval, 
igntoqtargval, 
relaircharge, 
canispurgvolm, 
throttvlvposi, 
CASE 
WHEN tb3.engspd IS NOT NULL THEN tb3.engspd 
WHEN tb7.engspd IS NOT NULL THEN tb7.engspd 
ELSE NULL END AS engspd, 
engreverseflg, 
engrohsig0, 
engrohsig1, 
engrohsig2, 
engrohsig3, 
uegolam, 
resetapplienvit, 
resetid, 
resetval, 
resetnum, 
resetidlastim, 
CASE 
WHEN tb3.altudcorcfactor IS NOT NULL THEN tb3.altudcorcfactor 
WHEN tb6.altudcorcfactor IS NOT NULL THEN tb6.altudcorcfactor 
WHEN tb7.altudcorcfactor IS NOT NULL THEN tb7.altudcorcfactor 
ELSE NULL END AS altudcorcfactor, 
intkvvtposi, 
intkvvttargposi, 
exhautvvtposi, 
exhautvvttargposi, 
oilinjtpulwidth, 
hegooxysensv, 
railpres_ctrl, 
CASE 
WHEN tb3.engtemp IS NOT NULL THEN tb3.engtemp 
WHEN tb7.engtemp IS NOT NULL THEN tb7.engtemp 
WHEN tb8.engtemp IS NOT NULL THEN tb8.engtemp 
ELSE NULL END AS engtemp, 
CASE 
WHEN tb3.gpfcarbload IS NOT NULL THEN tb3.gpfcarbload 
WHEN tb6.gpfcarbload IS NOT NULL THEN tb6.gpfcarbload 
ELSE NULL END AS gpfcarbload,  
flgdrvbehavr, 
tolnum_shrpacc, 
avgacc_shrpacc, 
avgv_shrpacc, 
avgengspd_shrpacc, 
avgairchrg_shrpacc, 
time_shrpacc, 
tolnum_shrpdec, 
avgdec_shrpdec, 
avgv_shrpdec, 
avgengspd_shrpdec, 
avgairchrg_shrpdec, 
time_shrpdec, 
tolnum_shrptrn, 
avgtrn_shrptrn, 
avgv_shrptrn, 
time_shrptrn, 
drvmode, 
CASE 
WHEN tb8.engmodeltemp IS NOT NULL THEN tb8.engmodeltemp 
ELSE NULL END AS engmodeltemp, 
CASE 
WHEN tb8.engmodelreftemp IS NOT NULL THEN tb8.engmodelreftemp 
ELSE NULL END AS engmodelreftemp,  
CASE 
WHEN tb6.regedemandmax IS NOT NULL THEN tb6.regedemandmax 
ELSE NULL END AS regedemandmax,  
CASE 
WHEN tb6.regedemandmaxid IS NOT NULL THEN tb6.regedemandmaxid 
ELSE NULL END AS regedemandmaxid, 
CASE 
WHEN tb4.ambienttemp IS NOT NULL THEN tb4.ambienttemp 
WHEN tb6.ambienttemp IS NOT NULL THEN tb6.ambienttemp 
WHEN tb7.ambienttemp IS NOT NULL THEN tb7.ambienttemp 
WHEN tb8.ambienttemp IS NOT NULL THEN tb8.ambienttemp 
ELSE NULL END AS ambienttemp,  
CASE 
WHEN tb6.ashinflu IS NOT NULL THEN tb6.ashinflu 
ELSE NULL END AS ashinflu, 
CASE 
WHEN tb6.gpfcarbloadmodel IS NOT NULL THEN tb6.gpfcarbloadmodel 
ELSE NULL END AS gpfcarbloadmodel, 
CASE 
WHEN tb4.drivingmileage IS NOT NULL THEN tb4.drivingmileage 
WHEN tb6.drivingmileage IS NOT NULL THEN tb6.drivingmileage 
WHEN tb7.drivingmileage IS NOT NULL THEN tb7.drivingmileage 
ELSE NULL END AS drivingmileage, 
dsmready1, 
lamcontlfactor1, 
timnormstate, 
lamcontlfactor2, 
distacmilactvat, 
locatoxysens, 
distacdiagcodclear, 
obdrequrt, 
dsmready2, 
numwamup, 
coolwatertempdst_snsr, 
engspd_raw, 
intkairtemp_snsr, 
airmass_snsr, 
absotdveposi1, 
evapvaporpres, 
oxygsenslsu, 
oxygsensorv, 
vesysv, 
accepedalposid, 
relfuellvl, 
accepedalposie, 
secoxysensfueltrim, 
reldveposi, 
coolwatertempdst, 
CASE 
WHEN tb4.coolwatertempust IS NOT NULL THEN tb4.coolwatertempust 
WHEN tb8.coolwatertempust IS NOT NULL THEN tb8.coolwatertempust 
ELSE NULL END AS coolwatertempust,
lamcontlfactor3, 
logtrmfueltrim, 
absotdveposi2, 
manifpres, 
railpres_raw, 
desirddveposi, 
commddtycyclfuelprgcontl, 
ambientpres, 
coolwatertempust2, 
airfuelratio, 
catalsttemp, 
relairmass, 
relaircharge_absladval, 
airfuelcommdratio, 
ingangle_cyl1, 
shrtrmfueltrim, 
CASE 
WHEN tb4.carspd IS NOT NULL THEN tb4.carspd 
WHEN tb7.carspd IS NOT NULL THEN tb7.carspd 
WHEN tb8.carspd IS NOT NULL THEN tb8.carspd 
ELSE NULL END AS carspd, 
posstatus, 
lat, 
lon, 
londir, 
speedkn, 
tracktrue, 
magvar, 
modeind, 
tirprsfl, 
tirtempfl, 
tirprsfr, 
tirtempfr, 
tirprsrl, 
tirtemprl, 
tirprsrr, 
tirtemprr, 
iuprnumavltr, 
iuprnumasnsrmnt, 
caucoderltim, 
caucodetwc, 
iuprnumadiagtwc, 
iuprdenodiagtwc, 
iuprnumadyndiaglsu, 
iuprnumapladiaglsu, 
caucodedyndiaglsu, 
iuprnumarltim, 
iuprnumavltl, 
caucodepladiaglsu, 
iuprnumadtesk1, 
iuprdenodtesk1, 
caucodevltl, 
iuprnumarohdtesk, 
iuprdenorohdtesk, 
caucodevltr, 
caucodesnsrmnt, 
caucodedtesk1, 
caucoderohdtesk, 
genldeno, 
battvolt, 
tolengstrtnum, 
tolengstrtsuccnum, 
drivingmileagecycl, 
tolruntim, 
runtimidl, 
dvefd, 
runtimaccelow, 
runtimaccehigh, 
faltlvlthrottzeroslv, 
runtimdecehigh, 
runtimdecelow, 
airmasslv, 
fairmasslv, 
faltlvlthrottairmasslv, 
throttvsens1zeroslv, 
throttvsens1fzeroslv, 
throttvsens2zeroslv, 
throttvsens2fzeroslv, 
faltlvlmaxhdr, 
summassflw, 
sumpistnblow, 
faltlvlminhdr, 
sumoilcomsumtcrkcs, 
falllvldskv, 
frmnumlamclose, 
faltlvlad, 
railpres_fild, 
railpres_rel, 
faltlvlinptlogic, 
faltlvlsyn, 
faltnumpedalposd, 
faltnumpedalpose, 
oxysensfd, 
faltlvlclmpswth, 
faltlvlidlspdmin, 
faltlvlidlspdmax, 
faltlvlidlspdnpl, 
t_engstrt, 
t_engstal, 
c_suprknk, 
c_hspsecinjectiondyn, 
c_preigndetct, 
engspdgradt1cycl, 
filtgradtmanifpres, 
preignratio, 
knkratio, 
ignangle, 
relaircharge_cyl, 
\"1stpreignnum\", 
\"2ndpreignnum\", 
\"3rdpreignnum\", 
\"4thpreignnum\", 
intkairtemp, 
reloilpres, 
thermostatdiagflg, 
thermostatdiagena, 
drivingcyclnum_hot, 
airmass1, 
engmodelreftemp_end, 
drivingcyclnum_cold, 
stkchecksen1high, 
stkchecksen1low, 
stkchecksen2high, 
stkchecksen2low, 
toltempsensmeanval, 
tfa1coldstrt, 
tfa2coldstrt, 
cendiagstat, 
intkairtempsensval1, 
intkairtempsensval2, 
airmassfilt, 
engstptim,
CASE 
WHEN tb1.year IS NOT NULL THEN tb1.year 
WHEN tb2.year IS NOT NULL THEN tb2.year 
WHEN tb3.year IS NOT NULL THEN tb3.year 
WHEN tb4.year IS NOT NULL THEN tb4.year 
WHEN tb5.year IS NOT NULL THEN tb5.year 
WHEN tb6.year IS NOT NULL THEN tb6.year 
WHEN tb7.year IS NOT NULL THEN tb7.year 
WHEN tb8.year IS NOT NULL THEN tb8.year 
ELSE NULL END AS year,  
CASE 
WHEN tb1.month IS NOT NULL THEN tb1.month 
WHEN tb2.month IS NOT NULL THEN tb2.month 
WHEN tb3.month IS NOT NULL THEN tb3.month 
WHEN tb4.month IS NOT NULL THEN tb4.month 
WHEN tb5.month IS NOT NULL THEN tb5.month 
WHEN tb6.month IS NOT NULL THEN tb6.month 
WHEN tb7.month IS NOT NULL THEN tb7.month 
WHEN tb8.month IS NOT NULL THEN tb8.month 
ELSE NULL END AS month, 
CASE 
WHEN tb1.day IS NOT NULL THEN tb1.day 
WHEN tb2.day IS NOT NULL THEN tb2.day 
WHEN tb3.day IS NOT NULL THEN tb3.day 
WHEN tb4.day IS NOT NULL THEN tb4.day 
WHEN tb5.day IS NOT NULL THEN tb5.day 
WHEN tb6.day IS NOT NULL THEN tb6.day 
WHEN tb7.day IS NOT NULL THEN tb7.day 
WHEN tb8.day IS NOT NULL THEN tb8.day 
ELSE NULL END AS day 
FROM  
(SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_GPS} WHERE createtime < to_iso8601(current_date)) AS tb1
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_DRVHABT} WHERE createtime < to_iso8601(current_date)) AS tb2 ON (tb1.vin = tb2.vin AND tb1.ts = tb2.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_ABNORMALFLAMEOUT} WHERE createtime < to_iso8601(current_date)) AS tb3 ON (tb1.vin = tb3.vin AND tb1.ts = tb3.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_FAULTOUTPUT} WHERE createtime < to_iso8601(current_date)) AS tb4 ON (tb1.vin = tb4.vin AND tb1.ts = tb4.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_PERIOD30S} WHERE createtime < to_iso8601(current_date)) AS tb5 ON (tb1.vin = tb5.vin AND tb1.ts = tb5.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_POWERON} WHERE createtime < to_iso8601(current_date)) AS tb6 ON (tb1.vin = tb6.vin AND tb1.ts = tb6.ts)
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_SUPERKNOCK} WHERE createtime < to_iso8601(current_date)) AS tb7 ON (tb1.vin = tb7.vin AND tb1.ts = tb7.ts) 
FULL OUTER JOIN (SELECT * FROM ${PST_HIVE_SRC_DB}.${PST_HIVE_SRC_WTDIAGNOSISMODEL} WHERE createtime < to_iso8601(current_date)) AS tb8 ON (tb1.vin = tb8.vin AND tb1.ts = tb8.ts)
;
"