odl_ad_television.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. """ad_television表数据处理
  4. """
  5. import sys
  6. from fty_util.common import Mysql
  7. reload(sys)
  8. sys.setdefaultencoding('utf8')
  9. """
  10. 从yxb.ad_television_(2010,2011,2012,2013,2014,2015,2016)
  11. yxb.ad_rating_(2010,2011,2012,2013,2014,2015,2016)
  12. 提取数据插入到odl.ad_television表中,作为数据分析来源数据
  13. """
  14. conn = Mysql.createOfflineConn()
  15. sql_comment = """
  16. truncate table odl.ad_television
  17. """
  18. sql = """
  19. truncate table odl.ad_television
  20. """
  21. try:
  22. Mysql.execute(sql, conn=conn)
  23. print '清空odl.ad_television表成功'
  24. except Exception, e:
  25. print '清空odl.ad_television表出错'
  26. for year in range(2010, 2017):
  27. m = 0
  28. n = 50000
  29. sql_count = """
  30. select count(id) from yxb.ad_television_%s
  31. """
  32. sql_count = sql_count % (year)
  33. count = 0
  34. try:
  35. count = Mysql.getOne(sql_count, conn=conn)[0]
  36. except Exception, e:
  37. print e
  38. pass
  39. # 每年数据循环导入
  40. while m <= count + n:
  41. sql = """
  42. insert into odl.ad_television (television_id, tv_id, tv_name, epi_num, host, channel, tv_date, weekday, start_time, end_time, \
  43. theater_attribute, property, is_repeat, city, year, area, audience_num, audience_rating, avg_num, avg_rating, \
  44. market_rating, avg_fans, avg_view_time) \
  45. select aty.id, atl.id, aty.tv_name, aty.epi_num, aty.host, aty.channel, aty.tv_date, aty.weekday, aty.start_time, aty.end_time, aty.theater_attribute, \
  46. aty.property, aty.is_repeat, aty.city, %s, \
  47. ary.area, ary.audience_num, ary.audience_rating, ary.avg_num, ary.avg_rating, ary.market_rating, ary.avg_fans, ary.avg_view_time \
  48. from yxb.ad_television_%s aty \
  49. left join yxb.ad_rating_%s ary on ary.tv_id = aty.id and ary.area like 'CSM5%%'
  50. left join yxb.ad_tv_lib atl on atl.tv_name = aty.tv_name
  51. limit %s, %s
  52. """
  53. sql = sql % (year, year, year, m, n)
  54. print sql
  55. Mysql.execute(sql, conn=conn)
  56. m += n
  57. Mysql.close(conn)