data_sum.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  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_three_', 'GameDataThreeDbMpPart'),('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_three_', 'GameDataThreeDbMpPart'),('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. prefix, database_name = ('sdk_three_', 'GameDataThreeDbMpPart')
  143. sql = f'''
  144. insert into GameDataSum.h_game_sum
  145. select
  146. concat('{prefix}',toString(id)) id ,
  147. `name` ,
  148. `en_name` ,
  149. `en_abbr` ,
  150. `app_key` ,
  151. `tags` ,
  152. `category` ,
  153. `classify` ,
  154. `icon` ,
  155. `cp_payback_url` ,
  156. `cp_id` ,
  157. concat('{prefix}',toString(parent_id)) parent_id ,
  158. `package_name` ,
  159. `pay_switch` ,
  160. `order_switch` ,
  161. `pay_show` ,
  162. `float_is_show` ,
  163. `status` ,
  164. `is_delete` ,
  165. `delete_time` ,
  166. `is_online` ,
  167. `is_sdk` ,
  168. `list_order` ,
  169. `rise_order` ,
  170. `hot_order` ,
  171. `like_order` ,
  172. `publicity` ,
  173. `language` ,
  174. `description` ,
  175. `image` ,
  176. `run_time` ,
  177. `create_time` ,
  178. `update_time` ,
  179. `fine_order` ,
  180. `promote_switch` ,
  181. `apple_id` ,
  182. `add_cp_time` ,
  183. `is_bt` ,
  184. `is_auth` ,
  185. `single_tag` ,
  186. `ext_info` ,
  187. 0 `jump_switch` ,
  188. 0 `is_push` ,
  189. 0 `is_exp`
  190. from {database_name}.h_game
  191. '''
  192. ck.execute(sql)
  193. def h_mem_game_sum(ymd):
  194. print(f'开始迁移 h_mem_game_sum {ymd}')
  195. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  196. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  197. days=1)).timetuple()
  198. timestamp_ymd = time.mktime(datatime_ymd)
  199. timestamp_tom = time.mktime(datatime_ymd_tom)
  200. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  201. for database_info in database_infos:
  202. prefix, database_name = database_info
  203. sql = f'''
  204. insert into GameDataSum.h_mem_game_sum
  205. select
  206. concat('{prefix}',toString(id)) id ,
  207. concat('{prefix}',toString(mem_id)) mem_id ,
  208. concat('{prefix}',toString(guided_agent_id)) guided_agent_id ,
  209. concat('{prefix}',toString(app_id)) app_id ,
  210. `nickname` ,
  211. `create_time` ,
  212. `update_time` ,
  213. `is_default` ,
  214. `like` ,
  215. `star_cnt` ,
  216. `status` ,
  217. `sum_money`
  218. from {database_name}.h_mem_game
  219. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  220. '''
  221. print(sql)
  222. ck.execute(sql)
  223. def h_log_mem_login_sum(ymd):
  224. def get_tables(database_name):
  225. sql = f'''
  226. select name from `system`.tables t
  227. where database ='{database_name}'
  228. and name like 'h_log_mem_login_%'
  229. '''
  230. pd = ck.getData_pdv2(sql)
  231. res_list = []
  232. for _ in pd:
  233. for name in pd[_]:
  234. res_list.append(name)
  235. return res_list
  236. print(f'开始迁移 h_log_mem_login_sum {ymd}')
  237. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  238. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  239. days=1)).timetuple()
  240. timestamp_ymd = time.mktime(datatime_ymd)
  241. timestamp_tom = time.mktime(datatime_ymd_tom)
  242. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  243. # mp_mp_conf mp_conf_agent
  244. for database_info in database_infos:
  245. prefix, database_name = database_info
  246. table_names = get_tables(database_name)
  247. for table_name in table_names:
  248. sql = f'''
  249. insert into GameDataSum.h_log_mem_login_sum
  250. select
  251. concat('{prefix}','{table_name}',toString(id)) id ,
  252. `date` ,
  253. concat('{prefix}',toString(mem_id)) mem_id ,
  254. concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
  255. concat('{prefix}',toString(agent_id)) agent_id ,
  256. `agent_game` ,
  257. concat('{prefix}',toString(app_id)) app_id ,
  258. `device_id` ,
  259. `idfv` ,
  260. `mac` ,
  261. `ip` ,
  262. `brand` ,
  263. `model` ,
  264. `os` ,
  265. `os_version` ,
  266. `screen` ,
  267. `net` ,
  268. `imsi` ,
  269. `longitude` ,
  270. `latitude` ,
  271. `userua` ,
  272. `from` ,
  273. `reg_time` ,
  274. `create_time` ,
  275. `open_cnt` ,
  276. concat('{prefix}',toString(reg_app_id)) reg_app_id
  277. from {database_name}.{table_name}
  278. where create_time>={timestamp_ymd} and create_time<={timestamp_tom}
  279. '''
  280. print(sql)
  281. ck.execute(sql)
  282. def mp_mp_conf_sum():
  283. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  284. for database_info in database_infos:
  285. prefix, database_name = database_info
  286. sql = f'''
  287. insert into GameDataSum.mp_mp_conf_sum
  288. select
  289. concat('{prefix}',toString(id)) id ,
  290. concat('{prefix}',toString(app_id)) app_id ,
  291. `mp_id` ,
  292. `app_secret` ,
  293. `sand_key` ,
  294. `type` ,
  295. `email` ,
  296. `password` ,
  297. `master` ,
  298. `company` ,
  299. `mobile` ,
  300. `wx_name` ,
  301. `wx_intro` ,
  302. `wx_logo` ,
  303. `source_id` ,
  304. `wx_account`,
  305. `qr_code` ,
  306. `ext_info` ,
  307. `parent_id` ,
  308. `is_delete` ,
  309. `delete_time` ,
  310. `create_time` ,
  311. `update_time`
  312. from {database_name}.mp_mp_conf
  313. '''
  314. ck.execute(sql)
  315. def mp_conf_agent_sum():
  316. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  317. for database_info in database_infos:
  318. prefix, database_name = database_info
  319. sql = f'''
  320. insert into GameDataSum.mp_conf_agent_sum
  321. select
  322. concat('{prefix}',toString(id)) id ,
  323. `conf_id`,
  324. concat('{prefix}',toString(app_id)) app_id ,
  325. concat('{prefix}',toString(agent_id)) agent_id ,
  326. concat('{prefix}',toString(advertiser_conf_id)) advertiser_conf_id ,
  327. `create_time` ,
  328. `update_time`
  329. from {database_name}.mp_conf_agent
  330. '''
  331. ck.execute(sql)
  332. def h_pay_sum(ymd):
  333. print(f'开始迁移 h_pay_sum {ymd}')
  334. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  335. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  336. days=1)).timetuple()
  337. timestamp_ymd = time.mktime(datatime_ymd)
  338. timestamp_tom = time.mktime(datatime_ymd_tom)
  339. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  340. for database_info in database_infos:
  341. prefix, database_name = database_info
  342. sql = f'''
  343. insert into GameDataSum.h_pay_sum
  344. select
  345. concat('{prefix}',toString(id)) id ,
  346. concat('{prefix}',toString(order_id)) order_id ,
  347. concat('{prefix}',toString(cp_order_id)) cp_order_id ,
  348. concat('{prefix}',toString(mem_id)) mem_id ,
  349. concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
  350. concat('{prefix}',toString(agent_id)) agent_id ,
  351. concat('{prefix}',toString(app_id)) app_id ,
  352. `currency` ,
  353. `amount` ,
  354. `real_amount` ,
  355. concat('{prefix}',toString(product_id)) product_id ,
  356. `product_cnt` ,
  357. `product_name` ,
  358. `coupon_amount` ,
  359. `ptb_amount` ,
  360. `gm_amount` ,
  361. `integral` ,
  362. `integral_money` ,
  363. `rebate_amount` ,
  364. `rate` ,
  365. `status` ,
  366. `cp_status` ,
  367. `payway`,
  368. `mobile_prefix` ,
  369. `is_handle` ,
  370. `pay_time` ,
  371. `create_time` ,
  372. `update_time` ,
  373. `is_distribute` ,
  374. `notify_cnt` ,
  375. `last_notify_time` ,
  376. `ext` ,
  377. `mem_note` ,
  378. `admin_note` ,
  379. `remark` ,
  380. `is_switch` ,
  381. `vb_id`
  382. from {database_name}.h_pay
  383. where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
  384. '''
  385. print(sql)
  386. ck.execute(sql)
  387. def h_pay_ext_sum():
  388. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  389. for database_info in database_infos:
  390. prefix, database_name = database_info
  391. sql = f'''
  392. insert into GameDataSum.h_pay_ext_sum
  393. select
  394. concat('{prefix}',toString(pay_id)) pay_id,
  395. `product_id` ,
  396. `product_name` ,
  397. `product_desc` ,
  398. `product_cnt` ,
  399. `device_id` ,
  400. `mac` ,
  401. `ip` ,
  402. `brand` ,
  403. `model` ,
  404. `os` ,
  405. `os_version` ,
  406. `screen` ,
  407. `net` ,
  408. `imsi` ,
  409. `longitude` ,
  410. `latitude` ,
  411. `userua` ,
  412. concat('{prefix}',toString(server_id)) server_id,
  413. `server_name` ,
  414. concat('{prefix}',toString(role_id)) role_id ,
  415. `role_name` ,
  416. `role_level` ,
  417. `money` ,
  418. `role_vip` ,
  419. `online_time` ,
  420. `scene` ,
  421. `axis` ,
  422. `last_operation` ,
  423. `party_name` ,
  424. `role_balance` ,
  425. `experience` ,
  426. `attach` ,
  427. `type` ,
  428. `rolelevel_ctime` ,
  429. `rolelevel_mtime`
  430. from {database_name}.h_pay_ext hpe
  431. '''
  432. print(sql)
  433. ck.execute(sql)
  434. def h_user_sum(ymd):
  435. print(f'开始迁移 h_pay_sum {ymd}')
  436. datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
  437. datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
  438. days=1)).timetuple()
  439. timestamp_ymd = time.mktime(datatime_ymd)
  440. timestamp_tom = time.mktime(datatime_ymd_tom)
  441. database_infos = {('sdk_three_', 'GameDataThreeDbMpPart'),('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
  442. for database_info in database_infos:
  443. prefix, database_name = database_info
  444. sql = f'''
  445. insert into GameDataSum.h_user_sum
  446. select
  447. concat('{prefix}',toString(id)) id ,
  448. `user_login` ,
  449. `user_pass` ,
  450. `pay_pwd` ,
  451. `user_nicename` ,
  452. `user_email` ,
  453. `site_name` ,
  454. `user_url` ,
  455. `logo` ,
  456. `avatar` ,
  457. `sex` ,
  458. `birthday` ,
  459. `signature` ,
  460. `last_login_ip` ,
  461. `last_login_time` ,
  462. `create_time` ,
  463. `user_activation_key` ,
  464. `user_status` ,
  465. `score` ,
  466. concat('{prefix}',toString(role_id)) role_id ,
  467. `coin` ,
  468. `mobile` ,
  469. `qq` ,
  470. `linkman` ,
  471. concat('{prefix}',toString(parent_id)) parent_id ,
  472. concat('{prefix}',toString(mem_id)) mem_id ,
  473. `cp_id` ,
  474. `wx_qr` ,
  475. `float_icon` ,
  476. `is_switch` ,
  477. `switch_rate` ,
  478. `ext_info` ,
  479. `account_id` ,
  480. `parent_account_id`
  481. from {database_name}.h_user hu
  482. where last_login_time>={timestamp_ymd} and last_login_time<={timestamp_tom}
  483. '''
  484. print(sql)
  485. ck.execute(sql)
  486. def optimize_sql():
  487. final_sql_h_pay_sum = '''
  488. optimize table GameDataSum.h_pay_sum final
  489. '''
  490. ck.execute(final_sql_h_pay_sum)
  491. final_sql_mp_conf_agent_sum = '''
  492. optimize table GameDataSum.mp_conf_agent_sum final
  493. '''
  494. ck.execute(final_sql_mp_conf_agent_sum)
  495. final_sql_mp_mp_conf_sum = '''
  496. optimize table GameDataSum.mp_mp_conf_sum final
  497. '''
  498. ck.execute(final_sql_mp_mp_conf_sum)
  499. final_sql_h_log_mem_login_sum = '''
  500. optimize table GameDataSum.h_log_mem_login_sum final
  501. '''
  502. ck.execute(final_sql_h_log_mem_login_sum)
  503. final_sql_h_mem_game_sum = '''
  504. optimize table GameDataSum.h_mem_game_sum final
  505. '''
  506. ck.execute(final_sql_h_mem_game_sum)
  507. final_sql_h_game_sum = '''
  508. optimize table GameDataSum.h_game_sum final
  509. '''
  510. ck.execute(final_sql_h_game_sum)
  511. final_sql_h_mg_role_sum = '''
  512. optimize table GameDataSum.h_mg_role_sum final
  513. '''
  514. ck.execute(final_sql_h_mg_role_sum)
  515. final_sql_h_member_sum = '''
  516. optimize table GameDataSum.h_member_sum final
  517. '''
  518. ck.execute(final_sql_h_member_sum)
  519. final_sql_h_pay_ext_sum = '''
  520. optimize table GameDataSum.h_pay_ext_sum final
  521. '''
  522. ck.execute(final_sql_h_pay_ext_sum)
  523. final_sql_h_user_sum = '''
  524. optimize table GameDataSum.h_user_sum final
  525. '''
  526. ck.execute(final_sql_h_user_sum)
  527. def change_data_style(ymd):
  528. h_member_sum(ymd)
  529. h_mg_role_sum(ymd)
  530. h_mem_game_sum(ymd)
  531. h_log_mem_login_sum(ymd)
  532. h_pay_sum(ymd)
  533. mp_mp_conf_sum()
  534. mp_conf_agent_sum()
  535. h_game_sum()
  536. h_user_sum(ymd)
  537. h_pay_ext_sum()
  538. def change_data_style_hourly():
  539. ymd = du.getNow()
  540. change_data_style(ymd)
  541. optimize_sql()
  542. def change_data_style_daily():
  543. for i in du.getDateLists(du.get_n_days(-10), du.get_n_days(0)):
  544. print(i)
  545. change_data_style(i)
  546. optimize_sql()
  547. def change_data_style_choice(st, et):
  548. for i in du.getDateLists(st, et):
  549. print(i)
  550. change_data_style(i)
  551. optimize_sql()
  552. ck = CkUtils()
  553. du = DateUtils()
  554. if __name__ == '__main__':
  555. dt = DateUtils()
  556. st = du.get_n_days(-90)
  557. et = du.getNow()
  558. # change_data_style_daily()
  559. change_data_style_choice(st, et)
  560. # h_user_sum()
  561. # h_member_sum('')