data_sum.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  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 h_pay_ext_sum():
  337. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  338. for database_info in database_infos:
  339. prefix, database_name = database_info
  340. sql = f'''
  341. insert into GameDataSum.h_pay_ext_sum
  342. select
  343. concat('{prefix}',toString(pay_id)) pay_id,
  344. `product_id` ,
  345. `product_name` ,
  346. `product_desc` ,
  347. `product_cnt` ,
  348. `device_id` ,
  349. `mac` ,
  350. `ip` ,
  351. `brand` ,
  352. `model` ,
  353. `os` ,
  354. `os_version` ,
  355. `screen` ,
  356. `net` ,
  357. `imsi` ,
  358. `longitude` ,
  359. `latitude` ,
  360. `userua` ,
  361. concat('{prefix}',toString(server_id)) server_id,
  362. `server_name` ,
  363. concat('{prefix}',toString(role_id)) role_id ,
  364. `role_name` ,
  365. `role_level` ,
  366. `money` ,
  367. `role_vip` ,
  368. `online_time` ,
  369. `scene` ,
  370. `axis` ,
  371. `last_operation` ,
  372. `party_name` ,
  373. `role_balance` ,
  374. `experience` ,
  375. `attach` ,
  376. `type` ,
  377. `rolelevel_ctime` ,
  378. `rolelevel_mtime`
  379. from {database_name}.h_pay_ext hpe
  380. '''
  381. print(sql)
  382. ck.execute(sql)
  383. def h_user_sum(ymd):
  384. print(f'开始迁移 h_pay_sum {ymd}')
  385. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  386. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  387. days=1)).timetuple()
  388. timestamp_ymd = time.mktime(datatime_ymd)
  389. timestamp_tom = time.mktime(datatime_ymd_tom)
  390. database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  391. for database_info in database_infos:
  392. prefix, database_name = database_info
  393. sql = f'''
  394. insert into GameDataSum.h_user_sum
  395. select
  396. concat('{prefix}',toString(id)) id ,
  397. `user_login` ,
  398. `user_pass` ,
  399. `pay_pwd` ,
  400. `user_nicename` ,
  401. `user_email` ,
  402. `site_name` ,
  403. `user_url` ,
  404. `logo` ,
  405. `avatar` ,
  406. `sex` ,
  407. `birthday` ,
  408. `signature` ,
  409. `last_login_ip` ,
  410. `last_login_time` ,
  411. `create_time` ,
  412. `user_activation_key` ,
  413. `user_status` ,
  414. `score` ,
  415. concat('{prefix}',toString(role_id)) role_id ,
  416. `coin` ,
  417. `mobile` ,
  418. `qq` ,
  419. `linkman` ,
  420. concat('{prefix}',toString(parent_id)) parent_id ,
  421. concat('{prefix}',toString(mem_id)) mem_id ,
  422. `cp_id` ,
  423. `wx_qr` ,
  424. `float_icon` ,
  425. `is_switch` ,
  426. `switch_rate` ,
  427. `ext_info` ,
  428. `account_id` ,
  429. `parent_account_id`
  430. from {database_name}.h_user hu
  431. where last_login_time>={timestamp_ymd} and last_login_time<={timestamp_tom}
  432. '''
  433. print(sql)
  434. ck.execute(sql)
  435. def optimize_sql():
  436. final_sql_h_pay_sum = '''
  437. optimize table GameDataSum.h_pay_sum final
  438. '''
  439. ck.execute(final_sql_h_pay_sum)
  440. final_sql_mp_conf_agent_sum = '''
  441. optimize table GameDataSum.mp_conf_agent_sum final
  442. '''
  443. ck.execute(final_sql_mp_conf_agent_sum)
  444. final_sql_mp_mp_conf_sum = '''
  445. optimize table GameDataSum.mp_mp_conf_sum final
  446. '''
  447. ck.execute(final_sql_mp_mp_conf_sum)
  448. final_sql_h_log_mem_login_sum = '''
  449. optimize table GameDataSum.h_log_mem_login_sum final
  450. '''
  451. ck.execute(final_sql_h_log_mem_login_sum)
  452. final_sql_h_mem_game_sum = '''
  453. optimize table GameDataSum.h_mem_game_sum final
  454. '''
  455. ck.execute(final_sql_h_mem_game_sum)
  456. final_sql_h_game_sum = '''
  457. optimize table GameDataSum.h_game_sum final
  458. '''
  459. ck.execute(final_sql_h_game_sum)
  460. final_sql_h_mg_role_sum = '''
  461. optimize table GameDataSum.h_mg_role_sum final
  462. '''
  463. ck.execute(final_sql_h_mg_role_sum)
  464. final_sql_h_member_sum = '''
  465. optimize table GameDataSum.h_member_sum final
  466. '''
  467. ck.execute(final_sql_h_member_sum)
  468. final_sql_h_pay_ext_sum = '''
  469. optimize table GameDataSum.h_pay_ext_sum final
  470. '''
  471. ck.execute(final_sql_h_pay_ext_sum)
  472. final_sql_h_user_sum = '''
  473. optimize table GameDataSum.h_user_sum final
  474. '''
  475. ck.execute(final_sql_h_user_sum)
  476. def change_data_style(ymd):
  477. h_member_sum(ymd)
  478. h_mg_role_sum(ymd)
  479. h_mem_game_sum(ymd)
  480. h_log_mem_login_sum(ymd)
  481. h_pay_sum(ymd)
  482. mp_mp_conf_sum()
  483. mp_conf_agent_sum()
  484. h_game_sum()
  485. h_user_sum(ymd)
  486. h_pay_ext_sum()
  487. def change_data_style_hourly():
  488. ymd = du.getNow()
  489. change_data_style(ymd)
  490. optimize_sql()
  491. def change_data_style_daily():
  492. for i in du.getDateLists(du.get_n_days(-10), du.get_n_days(0)):
  493. print(i)
  494. change_data_style(i)
  495. optimize_sql()
  496. def change_data_style_choice(st, et):
  497. for i in du.getDateLists(st, et):
  498. print(i)
  499. change_data_style(i)
  500. optimize_sql()
  501. ck = CkUtils()
  502. du = DateUtils()
  503. if __name__ == '__main__':
  504. dt = DateUtils()
  505. st = du.get_n_days(-30)
  506. et = du.getNow()
  507. # change_data_style_choice(st, et)
  508. # h_user_sum()
  509. start_time=time.time()
  510. print()
  511. h_pay_ext_sum()
  512. print(time.time()-start_time)