1. #!/usr/bin/env bash
    2. #--------------------#
    3. # Author:
    4. # Date:
    5. # Desc: 添加数据到 会员信息拉链表fdl.fdl_center_meb_Main_chain
    6. # Source_table: bdl.bdl_center_meb_Main
    7. #--------------------#
    8. export warehouse_base_dir=/data/warehouse
    9. ##装载config文件
    10. . /opt/dw/yaduo-warehouse/etl/config/hive_config.conf
    11. ##表名
    12. bdltb=bdl_center_meb_main
    13. fdltb=fdl_center_meb_Main_chain
    14. baktb=meb_Main_active_bak
    15. ##获取ETL运行日期
    16. if [ ! -n "$1" ] ;then
    17. run_date
    18. else
    19. run_date $1
    20. fi
    21. #昨天
    22. echo $etl_date
    23. #前天
    24. echo $yes_date
    25. info "$fdltb" "$etl_date" "etl数据加工开始"
    26. impala-shell -i 192.168.2.52:21000 -q "
    27. select 'meb_main拉链表';
    28. select '-------------------------------------------------------------------';
    29. INVALIDATE METADATA bdl.$bdltb;
    30. select '插入过期数据';
    31. INSERT OVERWRITE TABLE fdl.$fdltb PARTITION (dp='expired', dt='$etl_date', chain_end_date='$etl_date')
    32. SELECT
    33. H.mebid,
    34. H.MebName,
    35. H.DocType,
    36. H.DocNo,
    37. H.Sex,
    38. H.Birthday,
    39. H.BirthPlaceID,
    40. H.StayPlaceID,
    41. H.Mobile,
    42. H.EMail,
    43. H.Address,
    44. H.CardNo,
    45. H.MebType,
    46. H.SellerID,
    47. H.SellerDepID,
    48. H.CreateUserID,
    49. H.CreateTime,
    50. H.Remark,
    51. H.State,
    52. H.IsOnCredit,
    53. H.Password,
    54. H.PayPassword,
    55. H.Nick,
    56. H.CustomImageID,
    57. H.ActiveCode,
    58. H.ModyfyUserID,
    59. H.ModifyTime,
    60. H.OnCreditTotalLimit,
    61. H.OnCreditEachLimit,
    62. H.IsExclusive,
    63. H.RegistSource,
    64. H.RegistType,
    65. H.HistoryMobile,
    66. H.IsNeverLost,
    67. H.Tag,
    68. H.TotalUgNight,
    69. H.ChannelID,
    70. H.DeviceID,
    71. H.ActivitySource,
    72. H.ActiveID,
    73. H.ActTotalUgNight,
    74. H.InactiveID,
    75. H.chain_start_date,
    76. H.chain_change_code
    77. FROM
    78. (select * from bakactive.$baktb where dt ='$yes_date') H
    79. FULL OUTER JOIN
    80. (select * from bdl.$bdltb where dt = '$etl_date') C
    81. ON
    82. (H.mebid = C.mebid)
    83. WHERE H.mebid IS NOT NULL
    84. AND (
    85. COALESCE(H.mebid,'-979.090708') <> COALESCE(C.mebid,'-979.090708') OR
    86. COALESCE(H.MebName,'-979.090708') <> COALESCE(C.MebName,'-979.090708') OR
    87. COALESCE(H.DocType,'-979.090708') <> COALESCE(C.DocType,'-979.090708') OR
    88. COALESCE(H.DocNo,'-979.090708') <> COALESCE(C.DocNo,'-979.090708') OR
    89. COALESCE(H.Sex,'-979.090708') <> COALESCE(C.Sex,'-979.090708') OR
    90. COALESCE(H.Birthday,'-979.090708') <> COALESCE(C.Birthday,'-979.090708') OR
    91. COALESCE(H.BirthPlaceID,'-979.090708') <> COALESCE(C.BirthPlaceID,'-979.090708') OR
    92. COALESCE(H.StayPlaceID,'-979.090708') <> COALESCE(C.StayPlaceID,'-979.090708') OR
    93. COALESCE(H.Mobile,'-979.090708') <> COALESCE(C.Mobile,'-979.090708') OR
    94. COALESCE(H.EMail,'-979.090708') <> COALESCE(C.EMail,'-979.090708') OR
    95. COALESCE(H.Address,'-979.090708') <> COALESCE(C.Address,'-979.090708') OR
    96. COALESCE(H.CardNo,'-979.090708') <> COALESCE(C.CardNo,'-979.090708') OR
    97. COALESCE(H.MebType,'-979.090708') <> COALESCE(C.MebType,'-979.090708') OR
    98. COALESCE(H.SellerID,'-979.090708') <> COALESCE(C.SellerID,'-979.090708') OR
    99. COALESCE(H.SellerDepID,'-979.090708') <> COALESCE(C.SellerDepID,'-979.090708') OR
    100. COALESCE(H.CreateUserID,'-979.090708') <> COALESCE(C.CreateUserID,'-979.090708') OR
    101. COALESCE(H.CreateTime,'-979.090708') <> COALESCE(C.CreateTime,'-979.090708') OR
    102. COALESCE(H.Remark,'-979.090708') <> COALESCE(C.Remark,'-979.090708') OR
    103. COALESCE(H.State,'-979.090708') <> COALESCE(C.State,'-979.090708') OR
    104. COALESCE(H.IsOnCredit,'-979.090708') <> COALESCE(C.IsOnCredit,'-979.090708') OR
    105. COALESCE(H.Password,'-979.090708') <> COALESCE(C.Password,'-979.090708') OR
    106. COALESCE(H.PayPassword,'-979.090708') <> COALESCE(C.PayPassword,'-979.090708') OR
    107. COALESCE(H.Nick,'-979.090708') <> COALESCE(C.Nick,'-979.090708') OR
    108. COALESCE(H.CustomImageID,'-979.090708') <> COALESCE(C.CustomImageID,'-979.090708') OR
    109. COALESCE(H.ActiveCode,'-979.090708') <> COALESCE(C.ActiveCode,'-979.090708') OR
    110. COALESCE(H.ModyfyUserID,'-979.090708') <> COALESCE(C.ModyfyUserID,'-979.090708') OR
    111. COALESCE(H.ModifyTime,'-979.090708') <> COALESCE(C.ModifyTime,'-979.090708') OR
    112. COALESCE(H.OnCreditTotalLimit,'-979.090708') <> COALESCE(C.OnCreditTotalLimit,'-979.090708') OR
    113. COALESCE(H.OnCreditEachLimit,'-979.090708') <> COALESCE(C.OnCreditEachLimit,'-979.090708') OR
    114. COALESCE(H.IsExclusive,'-979.090708') <> COALESCE(C.IsExclusive,'-979.090708') OR
    115. COALESCE(H.RegistSource,'-979.090708') <> COALESCE(C.RegistSource,'-979.090708') OR
    116. COALESCE(H.RegistType,'-979.090708') <> COALESCE(C.RegistType,'-979.090708') OR
    117. COALESCE(H.HistoryMobile,'-979.090708') <> COALESCE(C.HistoryMobile,'-979.090708') OR
    118. COALESCE(H.IsNeverLost,'-979.090708') <> COALESCE(C.IsNeverLost,'-979.090708') OR
    119. COALESCE(H.Tag,'-979.090708') <> COALESCE(C.Tag,'-979.090708') OR
    120. COALESCE(H.TotalUgNight,'-979.090708') <> COALESCE(C.TotalUgNight,'-979.090708') OR
    121. COALESCE(H.ChannelID,'-979.090708') <> COALESCE(C.ChannelID,'-979.090708') OR
    122. COALESCE(H.DeviceID,'-979.090708') <> COALESCE(C.DeviceID,'-979.090708') OR
    123. COALESCE(H.ActivitySource,'-979.090708') <> COALESCE(C.ActivitySource,'-979.090708') OR
    124. COALESCE(H.ActiveID,'-979.090708') <> COALESCE(C.ActiveID,'-979.090708') OR
    125. COALESCE(H.ActTotalUgNight,'-979.090708') <> COALESCE(C.ActTotalUgNight,'-979.090708') OR
    126. COALESCE(H.InactiveID,'-979.090708') <> COALESCE(C.InactiveID,'-979.090708')
    127. );
    128. select '插入新数据';
    129. INSERT OVERWRITE TABLE fdl.$fdltb PARTITION (dp='active',dt='9999-12-31', chain_end_date='9999-12-31')
    130. SELECT
    131. C.mebid,
    132. C.MebName,
    133. C.DocType,
    134. C.DocNo,
    135. C.Sex,
    136. C.Birthday,
    137. C.BirthPlaceID,
    138. C.StayPlaceID,
    139. C.Mobile,
    140. C.EMail,
    141. C.Address,
    142. C.CardNo,
    143. C.MebType,
    144. C.SellerID,
    145. C.SellerDepID,
    146. C.CreateUserID,
    147. C.CreateTime,
    148. C.Remark,
    149. C.State,
    150. C.IsOnCredit,
    151. C.Password,
    152. C.PayPassword,
    153. C.Nick,
    154. C.CustomImageID,
    155. C.ActiveCode,
    156. C.ModyfyUserID,
    157. C.ModifyTime,
    158. C.OnCreditTotalLimit,
    159. C.OnCreditEachLimit,
    160. C.IsExclusive,
    161. C.RegistSource,
    162. C.RegistType,
    163. C.HistoryMobile,
    164. C.IsNeverLost,
    165. C.Tag,
    166. C.TotalUgNight,
    167. C.ChannelID,
    168. C.DeviceID,
    169. C.ActivitySource,
    170. C.ActiveID,
    171. C.ActTotalUgNight,
    172. C.InactiveID,
    173. IF(H.mebid IS NULL OR (
    174. COALESCE(H.mebid,'-979.090708') <> COALESCE(C.mebid,'-979.090708') OR
    175. COALESCE(H.MebName,'-979.090708') <> COALESCE(C.MebName,'-979.090708') OR
    176. COALESCE(H.DocType,'-979.090708') <> COALESCE(C.DocType,'-979.090708') OR
    177. COALESCE(H.DocNo,'-979.090708') <> COALESCE(C.DocNo,'-979.090708') OR
    178. COALESCE(H.Sex,'-979.090708') <> COALESCE(C.Sex,'-979.090708') OR
    179. COALESCE(H.Birthday,'-979.090708') <> COALESCE(C.Birthday,'-979.090708') OR
    180. COALESCE(H.BirthPlaceID,'-979.090708') <> COALESCE(C.BirthPlaceID,'-979.090708') OR
    181. COALESCE(H.StayPlaceID,'-979.090708') <> COALESCE(C.StayPlaceID,'-979.090708') OR
    182. COALESCE(H.Mobile,'-979.090708') <> COALESCE(C.Mobile,'-979.090708') OR
    183. COALESCE(H.EMail,'-979.090708') <> COALESCE(C.EMail,'-979.090708') OR
    184. COALESCE(H.Address,'-979.090708') <> COALESCE(C.Address,'-979.090708') OR
    185. COALESCE(H.CardNo,'-979.090708') <> COALESCE(C.CardNo,'-979.090708') OR
    186. COALESCE(H.MebType,'-979.090708') <> COALESCE(C.MebType,'-979.090708') OR
    187. COALESCE(H.SellerID,'-979.090708') <> COALESCE(C.SellerID,'-979.090708') OR
    188. COALESCE(H.SellerDepID,'-979.090708') <> COALESCE(C.SellerDepID,'-979.090708') OR
    189. COALESCE(H.CreateUserID,'-979.090708') <> COALESCE(C.CreateUserID,'-979.090708') OR
    190. COALESCE(H.CreateTime,'-979.090708') <> COALESCE(C.CreateTime,'-979.090708') OR
    191. COALESCE(H.Remark,'-979.090708') <> COALESCE(C.Remark,'-979.090708') OR
    192. COALESCE(H.State,'-979.090708') <> COALESCE(C.State,'-979.090708') OR
    193. COALESCE(H.IsOnCredit,'-979.090708') <> COALESCE(C.IsOnCredit,'-979.090708') OR
    194. COALESCE(H.Password,'-979.090708') <> COALESCE(C.Password,'-979.090708') OR
    195. COALESCE(H.PayPassword,'-979.090708') <> COALESCE(C.PayPassword,'-979.090708') OR
    196. COALESCE(H.Nick,'-979.090708') <> COALESCE(C.Nick,'-979.090708') OR
    197. COALESCE(H.CustomImageID,'-979.090708') <> COALESCE(C.CustomImageID,'-979.090708') OR
    198. COALESCE(H.ActiveCode,'-979.090708') <> COALESCE(C.ActiveCode,'-979.090708') OR
    199. COALESCE(H.ModyfyUserID,'-979.090708') <> COALESCE(C.ModyfyUserID,'-979.090708') OR
    200. COALESCE(H.ModifyTime,'-979.090708') <> COALESCE(C.ModifyTime,'-979.090708') OR
    201. COALESCE(H.OnCreditTotalLimit,'-979.090708') <> COALESCE(C.OnCreditTotalLimit,'-979.090708') OR
    202. COALESCE(H.OnCreditEachLimit,'-979.090708') <> COALESCE(C.OnCreditEachLimit,'-979.090708') OR
    203. COALESCE(H.IsExclusive,'-979.090708') <> COALESCE(C.IsExclusive,'-979.090708') OR
    204. COALESCE(H.RegistSource,'-979.090708') <> COALESCE(C.RegistSource,'-979.090708') OR
    205. COALESCE(H.RegistType,'-979.090708') <> COALESCE(C.RegistType,'-979.090708') OR
    206. COALESCE(H.HistoryMobile,'-979.090708') <> COALESCE(C.HistoryMobile,'-979.090708') OR
    207. COALESCE(H.IsNeverLost,'-979.090708') <> COALESCE(C.IsNeverLost,'-979.090708') OR
    208. COALESCE(H.Tag,'-979.090708') <> COALESCE(C.Tag,'-979.090708') OR
    209. COALESCE(H.TotalUgNight,'-979.090708') <> COALESCE(C.TotalUgNight,'-979.090708') OR
    210. COALESCE(H.ChannelID,'-979.090708') <> COALESCE(C.ChannelID,'-979.090708') OR
    211. COALESCE(H.DeviceID,'-979.090708') <> COALESCE(C.DeviceID,'-979.090708') OR
    212. COALESCE(H.ActivitySource,'-979.090708') <> COALESCE(C.ActivitySource,'-979.090708') OR
    213. COALESCE(H.ActiveID,'-979.090708') <> COALESCE(C.ActiveID,'-979.090708') OR
    214. COALESCE(H.ActTotalUgNight,'-979.090708') <> COALESCE(C.ActTotalUgNight,'-979.090708') OR
    215. COALESCE(H.InactiveID,'-979.090708') <> COALESCE(C.InactiveID,'-979.090708')
    216. ), '$etl_date', H.chain_start_date) AS chain_start_date,
    217. CASE
    218. WHEN H.mebid IS NULL THEN
    219. 1
    220. WHEN
    221. COALESCE(H.mebid,'-979.090708') <> COALESCE(C.mebid,'-979.090708') OR
    222. COALESCE(H.MebName,'-979.090708') <> COALESCE(C.MebName,'-979.090708') OR
    223. COALESCE(H.DocType,'-979.090708') <> COALESCE(C.DocType,'-979.090708') OR
    224. COALESCE(H.DocNo,'-979.090708') <> COALESCE(C.DocNo,'-979.090708') OR
    225. COALESCE(H.Sex,'-979.090708') <> COALESCE(C.Sex,'-979.090708') OR
    226. COALESCE(H.Birthday,'-979.090708') <> COALESCE(C.Birthday,'-979.090708') OR
    227. COALESCE(H.BirthPlaceID,'-979.090708') <> COALESCE(C.BirthPlaceID,'-979.090708') OR
    228. COALESCE(H.StayPlaceID,'-979.090708') <> COALESCE(C.StayPlaceID,'-979.090708') OR
    229. COALESCE(H.Mobile,'-979.090708') <> COALESCE(C.Mobile,'-979.090708') OR
    230. COALESCE(H.EMail,'-979.090708') <> COALESCE(C.EMail,'-979.090708') OR
    231. COALESCE(H.Address,'-979.090708') <> COALESCE(C.Address,'-979.090708') OR
    232. COALESCE(H.CardNo,'-979.090708') <> COALESCE(C.CardNo,'-979.090708') OR
    233. COALESCE(H.MebType,'-979.090708') <> COALESCE(C.MebType,'-979.090708') OR
    234. COALESCE(H.SellerID,'-979.090708') <> COALESCE(C.SellerID,'-979.090708') OR
    235. COALESCE(H.SellerDepID,'-979.090708') <> COALESCE(C.SellerDepID,'-979.090708') OR
    236. COALESCE(H.CreateUserID,'-979.090708') <> COALESCE(C.CreateUserID,'-979.090708') OR
    237. COALESCE(H.CreateTime,'-979.090708') <> COALESCE(C.CreateTime,'-979.090708') OR
    238. COALESCE(H.Remark,'-979.090708') <> COALESCE(C.Remark,'-979.090708') OR
    239. COALESCE(H.State,'-979.090708') <> COALESCE(C.State,'-979.090708') OR
    240. COALESCE(H.IsOnCredit,'-979.090708') <> COALESCE(C.IsOnCredit,'-979.090708') OR
    241. COALESCE(H.Password,'-979.090708') <> COALESCE(C.Password,'-979.090708') OR
    242. COALESCE(H.PayPassword,'-979.090708') <> COALESCE(C.PayPassword,'-979.090708') OR
    243. COALESCE(H.Nick,'-979.090708') <> COALESCE(C.Nick,'-979.090708') OR
    244. COALESCE(H.CustomImageID,'-979.090708') <> COALESCE(C.CustomImageID,'-979.090708') OR
    245. COALESCE(H.ActiveCode,'-979.090708') <> COALESCE(C.ActiveCode,'-979.090708') OR
    246. COALESCE(H.ModyfyUserID,'-979.090708') <> COALESCE(C.ModyfyUserID,'-979.090708') OR
    247. COALESCE(H.ModifyTime,'-979.090708') <> COALESCE(C.ModifyTime,'-979.090708') OR
    248. COALESCE(H.OnCreditTotalLimit,'-979.090708') <> COALESCE(C.OnCreditTotalLimit,'-979.090708') OR
    249. COALESCE(H.OnCreditEachLimit,'-979.090708') <> COALESCE(C.OnCreditEachLimit,'-979.090708') OR
    250. COALESCE(H.IsExclusive,'-979.090708') <> COALESCE(C.IsExclusive,'-979.090708') OR
    251. COALESCE(H.RegistSource,'-979.090708') <> COALESCE(C.RegistSource,'-979.090708') OR
    252. COALESCE(H.RegistType,'-979.090708') <> COALESCE(C.RegistType,'-979.090708') OR
    253. COALESCE(H.HistoryMobile,'-979.090708') <> COALESCE(C.HistoryMobile,'-979.090708') OR
    254. COALESCE(H.IsNeverLost,'-979.090708') <> COALESCE(C.IsNeverLost,'-979.090708') OR
    255. COALESCE(H.Tag,'-979.090708') <> COALESCE(C.Tag,'-979.090708') OR
    256. COALESCE(H.TotalUgNight,'-979.090708') <> COALESCE(C.TotalUgNight,'-979.090708') OR
    257. COALESCE(H.ChannelID,'-979.090708') <> COALESCE(C.ChannelID,'-979.090708') OR
    258. COALESCE(H.DeviceID,'-979.090708') <> COALESCE(C.DeviceID,'-979.090708') OR
    259. COALESCE(H.ActivitySource,'-979.090708') <> COALESCE(C.ActivitySource,'-979.090708') OR
    260. COALESCE(H.ActiveID,'-979.090708') <> COALESCE(C.ActiveID,'-979.090708') OR
    261. COALESCE(H.ActTotalUgNight,'-979.090708') <> COALESCE(C.ActTotalUgNight,'-979.090708') OR
    262. COALESCE(H.InactiveID,'-979.090708') <> COALESCE(C.InactiveID,'-979.090708')
    263. THEN
    264. 2
    265. ELSE
    266. H.chain_change_code
    267. END AS chain_change_code
    268. FROM
    269. (select * from bakactive.$baktb where dt ='$yes_date') H
    270. FULL OUTER JOIN
    271. (select * from bdl.$bdltb where dt = '$etl_date') C
    272. ON
    273. (H.mebid = C.mebid)
    274. WHERE C.mebid IS NOT NULL;
    275. INVALIDATE METADATA fdl.$fdltb;
    276. select '备份今天数据';
    277. INSERT OVERWRITE TABLE bakactive.$baktb PARTITION (dt='$etl_date')
    278. select mebid,
    279. MebName,
    280. DocType,
    281. DocNo,
    282. Sex,
    283. Birthday,
    284. BirthPlaceID,
    285. StayPlaceID,
    286. Mobile,
    287. EMail,
    288. Address,
    289. CardNo,
    290. MebType,
    291. SellerID,
    292. SellerDepID,
    293. CreateUserID,
    294. CreateTime,
    295. Remark,
    296. State,
    297. IsOnCredit,
    298. Password,
    299. PayPassword,
    300. Nick,
    301. CustomImageID,
    302. ActiveCode,
    303. ModyfyUserID,
    304. ModifyTime,
    305. OnCreditTotalLimit,
    306. OnCreditEachLimit,
    307. IsExclusive,
    308. RegistSource,
    309. RegistType,
    310. HistoryMobile,
    311. IsNeverLost,
    312. Tag,
    313. TotalUgNight,
    314. ChannelID,
    315. DeviceID,
    316. ActivitySource,
    317. ActiveID,
    318. ActTotalUgNight,
    319. InactiveID,
    320. chain_start_date,
    321. chain_change_code
    322. from fdl.$fdltb
    323. where dp='active';
    324. INVALIDATE METADATA bakactive.$baktb;
    325. exit;
    326. " >> `get_log_path $fdltb` 2>&1
    327. info "$fdltb" "delete_7day" "删除一周前的bakactive数据"
    328. ##delete data of a week ago
    329. impala-shell -i 192.168.2.52:21000 -q "
    330. ALTER TABLE bakactive.$baktb DROP IF EXISTS PARTITION (dt='$etl_date_w');
    331. exit;
    332. "
    333. seven_day_ago_dataDir=$warehouse_base_dir/bakactive/$baktb/$etl_date_w
    334. #hadoop fs -test -e "$seven_day_ago_dataDir"
    335. #if [[ $? -eq 0 ]]; then
    336. # hadoop fs -rm -r $seven_day_ago_dataDir
    337. #fi
    338. hadoop fs -rm -r $seven_day_ago_dataDir
    339. info "$fdltb" "etl_end" "$etl_date" "etl数据加工完成"