|
@@ -0,0 +1,56 @@
|
|
|
|
+# Author renyupeng
|
|
|
|
+# coding=utf-8
|
|
|
|
+# @Time : 2021/11/17 3:40 下午
|
|
|
|
+# @Site :
|
|
|
|
+# @File : MaterialFristCostTime.py
|
|
|
|
+# @Software: PyCharm
|
|
|
|
+# @contact: renyupeng@c-top.com.cn
|
|
|
|
+# @Tel 1501435553
|
|
|
|
+import logging
|
|
|
|
+from math import ceil
|
|
|
|
+from Apietl.conn.TidbProConn import TidbProConn
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class MaterialFristCostTime:
|
|
|
|
+ def __init__(self):
|
|
|
|
+ self.conn = TidbProConn.get_connection()
|
|
|
|
+
|
|
|
|
+ def TaskHandler(self):
|
|
|
|
+ try:
|
|
|
|
+ sql = """
|
|
|
|
+ select count(1) from (
|
|
|
|
+select signature,stat_date
|
|
|
|
+from (
|
|
|
|
+ select signature, stat_date, row_number() over (partition by signature order by stat_date) as rn
|
|
|
|
+ from application.kuaishou_material_video_report_daily_dw
|
|
|
|
+ )t
|
|
|
|
+where t.rn=1)t
|
|
|
|
+ """
|
|
|
|
+ totalNum = TidbProConn.quary(self.conn, sql)[0][0]
|
|
|
|
+ pageCount = ceil(totalNum / 20000)
|
|
|
|
+ for i in range(pageCount):
|
|
|
|
+ try:
|
|
|
|
+ sql = """
|
|
|
|
+ replace into application.material_farst_cost_time
|
|
|
|
+ select signature,stat_date
|
|
|
|
+from (
|
|
|
|
+ select signature, stat_date, row_number() over (partition by signature order by stat_date) as rn
|
|
|
|
+ from application.kuaishou_material_video_report_daily_dw where signature is not null
|
|
|
|
+ )t
|
|
|
|
+where t.rn=1
|
|
|
|
+order by signature,stat_date limit {num},20000
|
|
|
|
+ """.format(num=i * 20000)
|
|
|
|
+ print(sql)
|
|
|
|
+ TidbProConn.upsert(conn=self.conn, sql_buff=sql)
|
|
|
|
+ self.conn.commit()
|
|
|
|
+ except Exception as e:
|
|
|
|
+ logging.error(e)
|
|
|
|
+ return -1
|
|
|
|
+ TidbProConn.conn_close(conn=self.conn)
|
|
|
|
+ return 0
|
|
|
|
+ except Exception as e:
|
|
|
|
+ logging.error(e)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ MaterialFristCostTime().TaskHandler()
|