data_sum.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. from model.DateUtils import DateUtils
  2. from model.DataBaseUtils import MysqlUtils, CkUtils
  3. from datetime import datetime, timedelta, timezone
  4. import time
  5. import logging
  6. def h_member_sum(ymd):
  7. print(f'开始迁移 h_member {ymd}')
  8. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  9. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  10. days=1)).timetuple()
  11. timestamp_ymd = time.mktime(datatime_ymd)
  12. timestamp_tom = time.mktime(datatime_ymd_tom)
  13. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  14. for database_info in database_infos:
  15. prefix, database_name = database_info
  16. sql = f'''
  17. insert into GameDataSum.h_member_sum
  18. select
  19. concat('{prefix}',toString(id)) id ,
  20. `username` ,
  21. `nickname` ,
  22. `mobile_prefix` ,
  23. `reg_mobile` ,
  24. `reg_email` ,
  25. `password` ,
  26. `pay_pwd` ,
  27. `email` ,
  28. `mobile` ,
  29. `from_device` ,
  30. `device_id` ,
  31. concat('{prefix}',toString(app_id)) app_id ,
  32. `op_id`,
  33. concat('{prefix}',toString(agent_id)) agent_id ,
  34. `agent_game` ,
  35. `status`,
  36. `reg_ip` ,
  37. `avatar` ,
  38. concat('{prefix}',toString(parent_mem_id)) parent_mem_id ,
  39. create_time ,
  40. update_time ,
  41. `real_name` ,
  42. `identify_type` ,
  43. `id_card` ,
  44. `is_switch` ,
  45. switch_time,
  46. `switch_money` ,
  47. `alipay_account` ,
  48. concat('{prefix}',toString(vb_id)) vb_id
  49. from {database_name}.h_member hm
  50. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  51. '''
  52. print(sql)
  53. ck.execute(sql)
  54. def h_mg_role_sum(ymd):
  55. print(f'开始迁移 h_mg_role_sum {ymd}')
  56. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  57. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  58. days=1)).timetuple()
  59. timestamp_ymd = time.mktime(datatime_ymd)
  60. timestamp_tom = time.mktime(datatime_ymd_tom)
  61. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  62. for database_info in database_infos:
  63. prefix, database_name = database_info
  64. sql = f'''
  65. insert into GameDataSum.h_mg_role_sum
  66. select
  67. concat('{prefix}',toString(id)) id ,
  68. concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
  69. concat('{prefix}',toString(app_id)) app_id ,
  70. concat('{prefix}',toString(server_id)) server_id ,
  71. `server_name` ,
  72. concat('{prefix}',toString(role_id)) role_id ,
  73. `role_name` ,
  74. `role_level` ,
  75. `role_vip` ,
  76. `money` ,
  77. `combat_num` ,
  78. `ext` ,
  79. `os` ,
  80. `create_time` ,
  81. `update_time`
  82. from {database_name}.h_mg_role
  83. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  84. '''
  85. print(sql)
  86. ck.execute(sql)
  87. def h_game_sum():
  88. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  89. for database_info in database_infos:
  90. prefix, database_name = database_info
  91. sql = f'''
  92. insert into GameDataSum.h_game_sum
  93. select
  94. concat('{prefix}',toString(id)) id ,
  95. `name` ,
  96. `en_name` ,
  97. `en_abbr` ,
  98. `app_key` ,
  99. `tags` ,
  100. `category` ,
  101. `classify` ,
  102. `icon` ,
  103. `cp_payback_url` ,
  104. `cp_id` ,
  105. concat('{prefix}',toString(parent_id)) parent_id ,
  106. `package_name` ,
  107. `pay_switch` ,
  108. `order_switch` ,
  109. `pay_show` ,
  110. `float_is_show` ,
  111. `status` ,
  112. `is_delete` ,
  113. `delete_time` ,
  114. `is_online` ,
  115. `is_sdk` ,
  116. `list_order` ,
  117. `rise_order` ,
  118. `hot_order` ,
  119. `like_order` ,
  120. `publicity` ,
  121. `language` ,
  122. `description` ,
  123. `image` ,
  124. `run_time` ,
  125. `create_time` ,
  126. `update_time` ,
  127. `fine_order` ,
  128. `promote_switch` ,
  129. `apple_id` ,
  130. `add_cp_time` ,
  131. `is_bt` ,
  132. `is_auth` ,
  133. `single_tag` ,
  134. `ext_info` ,
  135. `jump_switch` ,
  136. `is_push` ,
  137. `is_exp`
  138. from {database_name}.h_game
  139. '''
  140. print(sql)
  141. ck.execute(sql)
  142. def h_mem_game_sum(ymd):
  143. print(f'开始迁移 h_mem_game_sum {ymd}')
  144. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  145. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  146. days=1)).timetuple()
  147. timestamp_ymd = time.mktime(datatime_ymd)
  148. timestamp_tom = time.mktime(datatime_ymd_tom)
  149. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  150. for database_info in database_infos:
  151. prefix, database_name = database_info
  152. sql = f'''
  153. insert into GameDataSum.h_mem_game_sum
  154. select
  155. concat('{prefix}',toString(id)) id ,
  156. concat('{prefix}',toString(mem_id)) mem_id ,
  157. concat('{prefix}',toString(guided_agent_id)) guided_agent_id ,
  158. concat('{prefix}',toString(app_id)) app_id ,
  159. `nickname` ,
  160. `create_time` ,
  161. `update_time` ,
  162. `is_default` ,
  163. `like` ,
  164. `star_cnt` ,
  165. `status` ,
  166. `sum_money`
  167. from {database_name}.h_mem_game
  168. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  169. '''
  170. print(sql)
  171. ck.execute(sql)
  172. def h_log_mem_login_sum(ymd):
  173. def get_tables(database_name):
  174. sql = f'''
  175. select name from `system`.tables t
  176. where database ='{database_name}'
  177. and name like 'h_log_mem_login_%'
  178. '''
  179. pd = ck.getData_pdv2(sql)
  180. res_list = []
  181. for _ in pd:
  182. for name in pd[_]:
  183. res_list.append(name)
  184. return res_list
  185. print(f'开始迁移 h_log_mem_login_sum {ymd}')
  186. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  187. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  188. days=1)).timetuple()
  189. timestamp_ymd = time.mktime(datatime_ymd)
  190. timestamp_tom = time.mktime(datatime_ymd_tom)
  191. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  192. # mp_mp_conf mp_conf_agent
  193. for database_info in database_infos:
  194. prefix, database_name = database_info
  195. table_names = get_tables(database_name)
  196. for table_name in table_names:
  197. sql = f'''
  198. insert into GameDataSum.h_log_mem_login_sum
  199. select
  200. concat('{prefix}','{table_name}',toString(id)) id ,
  201. `date` ,
  202. concat('{prefix}',toString(mem_id)) mem_id ,
  203. concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
  204. concat('{prefix}',toString(agent_id)) agent_id ,
  205. `agent_game` ,
  206. concat('{prefix}',toString(app_id)) app_id ,
  207. `device_id` ,
  208. `idfv` ,
  209. `mac` ,
  210. `ip` ,
  211. `brand` ,
  212. `model` ,
  213. `os` ,
  214. `os_version` ,
  215. `screen` ,
  216. `net` ,
  217. `imsi` ,
  218. `longitude` ,
  219. `latitude` ,
  220. `userua` ,
  221. `from` ,
  222. `reg_time` ,
  223. `create_time` ,
  224. `open_cnt` ,
  225. concat('{prefix}',toString(reg_app_id)) reg_app_id
  226. from {database_name}.{table_name}
  227. where create_time>={timestamp_ymd} and create_time<={timestamp_tom}
  228. '''
  229. print(sql)
  230. ck.execute(sql)
  231. def mp_mp_conf_sum():
  232. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  233. for database_info in database_infos:
  234. prefix, database_name = database_info
  235. sql = f'''
  236. insert into GameDataSum.mp_mp_conf_sum
  237. select
  238. concat('{prefix}',toString(id)) id ,
  239. concat('{prefix}',toString(app_id)) app_id ,
  240. `mp_id` ,
  241. `app_secret` ,
  242. `sand_key` ,
  243. `type` ,
  244. `email` ,
  245. `password` ,
  246. `master` ,
  247. `company` ,
  248. `mobile` ,
  249. `wx_name` ,
  250. `wx_intro` ,
  251. `wx_logo` ,
  252. `source_id` ,
  253. `wx_account`,
  254. `qr_code` ,
  255. `ext_info` ,
  256. `parent_id` ,
  257. `is_delete` ,
  258. `delete_time` ,
  259. `create_time` ,
  260. `update_time`
  261. from {database_name}.mp_mp_conf
  262. '''
  263. ck.execute(sql)
  264. def mp_conf_agent_sum():
  265. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  266. for database_info in database_infos:
  267. prefix, database_name = database_info
  268. sql = f'''
  269. insert into GameDataSum.mp_conf_agent_sum
  270. select
  271. concat('{prefix}',toString(id)) id ,
  272. `conf_id`,
  273. concat('{prefix}',toString(app_id)) app_id ,
  274. concat('{prefix}',toString(agent_id)) agent_id ,
  275. concat('{prefix}',toString(advertiser_conf_id)) advertiser_conf_id ,
  276. `create_time` ,
  277. `update_time`
  278. from {database_name}.mp_conf_agent
  279. '''
  280. ck.execute(sql)
  281. def h_pay_sum(ymd):
  282. print(f'开始迁移 h_pay_sum {ymd}')
  283. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  284. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  285. days=1)).timetuple()
  286. timestamp_ymd = time.mktime(datatime_ymd)
  287. timestamp_tom = time.mktime(datatime_ymd_tom)
  288. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  289. for database_info in database_infos:
  290. prefix, database_name = database_info
  291. sql = f'''
  292. insert into GameDataSum.h_pay_sum
  293. select
  294. concat('{prefix}',toString(id)) id ,
  295. concat('{prefix}',toString(order_id)) order_id ,
  296. concat('{prefix}',toString(cp_order_id)) cp_order_id ,
  297. concat('{prefix}',toString(mem_id)) mem_id ,
  298. concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
  299. concat('{prefix}',toString(agent_id)) agent_id ,
  300. concat('{prefix}',toString(app_id)) app_id ,
  301. `currency` ,
  302. `amount` ,
  303. `real_amount` ,
  304. concat('{prefix}',toString(product_id)) product_id ,
  305. `product_cnt` ,
  306. `product_name` ,
  307. `coupon_amount` ,
  308. `ptb_amount` ,
  309. `gm_amount` ,
  310. `integral` ,
  311. `integral_money` ,
  312. `rebate_amount` ,
  313. `rate` ,
  314. `status` ,
  315. `cp_status` ,
  316. `payway`,
  317. `mobile_prefix` ,
  318. `is_handle` ,
  319. `pay_time` ,
  320. `create_time` ,
  321. `update_time` ,
  322. `is_distribute` ,
  323. `notify_cnt` ,
  324. `last_notify_time` ,
  325. `ext` ,
  326. `mem_note` ,
  327. `admin_note` ,
  328. `remark` ,
  329. `is_switch` ,
  330. `vb_id`
  331. from {database_name}.h_pay
  332. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  333. '''
  334. print(sql)
  335. ck.execute(sql)
  336. def optimize_sql():
  337. final_sql_h_pay_sum = '''
  338. optimize table GameDataSum.h_pay_sum final
  339. '''
  340. ck.execute(final_sql_h_pay_sum)
  341. final_sql_mp_conf_agent_sum = '''
  342. optimize table GameDataSum.mp_conf_agent_sum final
  343. '''
  344. ck.execute(final_sql_mp_conf_agent_sum)
  345. final_sql_mp_mp_conf_sum = '''
  346. optimize table GameDataSum.mp_mp_conf_sum final
  347. '''
  348. ck.execute(final_sql_mp_mp_conf_sum)
  349. final_sql_h_log_mem_login_sum = '''
  350. optimize table GameDataSum.h_log_mem_login_sum final
  351. '''
  352. ck.execute(final_sql_h_log_mem_login_sum)
  353. final_sql_h_mem_game_sum = '''
  354. optimize table GameDataSum.h_mem_game_sum final
  355. '''
  356. ck.execute(final_sql_h_mem_game_sum)
  357. final_sql_h_game_sum = '''
  358. optimize table GameDataSum.h_game_sum final
  359. '''
  360. ck.execute(final_sql_h_game_sum)
  361. final_sql_h_mg_role_sum = '''
  362. optimize table GameDataSum.h_mg_role_sum final
  363. '''
  364. ck.execute(final_sql_h_mg_role_sum)
  365. final_sql_h_member_sum = '''
  366. optimize table GameDataSum.h_member_sum final
  367. '''
  368. ck.execute(final_sql_h_member_sum)
  369. def change_data_style(ymd):
  370. h_member_sum(ymd)
  371. h_mg_role_sum(ymd)
  372. h_mem_game_sum(ymd)
  373. h_log_mem_login_sum(ymd)
  374. h_pay_sum(ymd)
  375. mp_mp_conf_sum()
  376. mp_conf_agent_sum()
  377. h_game_sum()
  378. def change_data_style_hourly():
  379. ymd = du.getNow()
  380. change_data_style(ymd)
  381. optimize_sql()
  382. def change_data_style_daily():
  383. for i in du.getDateLists(du.get_n_days(-10), du.get_n_days(0)):
  384. print(i)
  385. change_data_style(i)
  386. optimize_sql()
  387. def change_data_style_choice(st, et):
  388. for i in du.getDateLists(st, et):
  389. print(i)
  390. change_data_style(i)
  391. optimize_sql()
  392. ck = CkUtils()
  393. du = DateUtils()
  394. if __name__ == '__main__':
  395. dt = DateUtils()
  396. st = du.get_n_days(-30)
  397. et = du.getNow()
  398. change_data_style_choice(st, et)