罗俊辉 1 år sedan
förälder
incheckning
58b0b5e431
5 ändrade filer med 148 tillägg och 15 borttagningar
  1. 14 10
      app.py
  2. 83 0
      functions/config.json
  3. 8 5
      functions/config.py
  4. 22 0
      functions/get_alg.py
  5. 21 0
      test.py

+ 14 - 10
app.py

@@ -38,7 +38,7 @@ def process_data(data_obj):
     :param data_obj:
     :return:
     """
-    keys = ["c{}".format(i) for i in range(1, 350)]
+    keys = ["c{}".format(i) for i in range(1, 351)]
     temp = {}
     for key in keys:
         try:
@@ -79,18 +79,19 @@ def get_data(date_info):
     return []
 
 
-def main():
+def main(sheet_id):
     """
     main函数
     0. 插入一行空行,用于写入数据
     1. 先从大数据 BI 表读取数据,
-    2. 从需要读取前一天的数据中把数据读取出来,更新到 data_list 中, 如果没有读取到数据,则重复 3 次, 每次重复间隔为 30mins
+    2. 从需要读取前一天的数据中把数据读取出来,更新到 data_list 中, 如果没有读取到数据,则重复 3 次, 每次重复间隔为 30 mins
     3. 把数据插入飞书表,并且把数据备份到MySQL数据表中
     4. 定时任务更新 MySQL 表
     :return:  None
+    PBaWRy
     """
     F = Feishu(document_token="ZYNBsZ5lPhsKFltb6ghclfJqngb")
-    F.prepend_value(sheet_id="eb6d24", values=[["fail to read data"]], ranges="A5:A5")
+    F.prepend_value(sheet_id=sheet_id, values=[["fail to read data"]], ranges="A5:A5")
 
     # 读数据
     date_info = get_yesterday_str()
@@ -100,19 +101,22 @@ def main():
         return
 
     # 处理元数据
+    print("正在处理数据")
     data_list = process_data(ori_data)
+    print("数据处理完成, 开始插入")
 
     # 插入飞书表
-    F.insert_value(sheet_id="eb6d24", values=[data_list[:100]], ranges="A5:CV5")
-    F.insert_value(sheet_id="eb6d24", values=[data_list[100:200]], ranges="CW5:GR5")
-    F.insert_value(sheet_id="eb6d24", values=[data_list[200:300]], ranges="GS5:KN5")
-    F.insert_value(sheet_id="eb6d24", values=[data_list[300:]], ranges="KO5:MK5")
+    F.insert_value(sheet_id=sheet_id, values=[data_list[:100]], ranges="A5:CV5")
+    F.insert_value(sheet_id=sheet_id, values=[data_list[100:200]], ranges="CW5:GR5")
+    F.insert_value(sheet_id=sheet_id, values=[data_list[200:300]], ranges="GS5:KN5")
+    F.insert_value(sheet_id=sheet_id, values=[data_list[300:]], ranges="KO5:ML5")
 
 
 if __name__ == "__main__":
-    schedule.every().day.at("10:00").do(main)
+    schedule.every().day.at("10:00").do(main(sheet_id="eb6d24"))
     while True:
         schedule.run_pending()
         time.sleep(1)
-    # main()
+    # ii = "PBaWRy"
+    # main(ii)
     # print(get_yesterday_str())

+ 83 - 0
functions/config.json

@@ -0,0 +1,83 @@
+{
+    "c3": "=SUM(AL5,BM5,CN5,DO5,EP5,FQ5,GR5,HS5,IT5,JU5,LJ5,LR5,LS5,MX5,ME5)",
+    "c4": "=C5/B5",
+    "c5": "=(LU5+LB5)/B5",
+    "c6": "=(AC5+BD5+CE5+DF5+EG5+FH5+GI5+HJ5+IK5+JL5)/B5",
+    "c7": "=SUM(AL5,BM5,CN5,DO5,EP5,FQ5,GR5,HS5,IT5,JU5)",
+    "c8": "=LJ5+LS5+ME5",
+    "c9": "=LR5+MX5",
+    "c10": "=MA5",
+    "c11": "=E5+F5",
+    "c14": "=Y5+AL5",
+    "c15": "=N5/L5",
+    "c24": "=Y5/T5",
+    "c25": "=(P5/1000)*MA5",
+    "c30": "=AB5/AC5",
+    "c33": "=AC5/L5",
+    "c41": "=AZ5+BM5",
+    "c42": "=AO5/AM5",
+    "c51": "=AZ5/AU5",
+    "c52": "=(AQ5/1000)*MA5",
+    "c57": "=BC5/BD5",
+    "c60": "=BD5/AM5",
+    "c67": "=(BN5-BN7)/BN7",
+    "c68": "=CA5+CN5",
+    "c69": "=BP5/BN5",
+    "c78": "=CA5/BV5",
+    "c79": "=(BR5/1000)*MA5",
+    "c84": "=CD5/CE5",
+    "c87": "=CE5/BN5",
+    "c90": "=CH5/CD5",
+    "c91": "=CN5/CH5",
+    "c95": "=DB5+DO5",
+    "c96": "=CQ5/CO5",
+    "c105": "=DB5/CW5",
+    "c106": "=(CS5/1000)*MA5",
+    "c111": "=DE5/DF5",
+    "c114": "=DF5/CO5",
+    "c122": "=EC5+EP5",
+    "c123": "=DR5/DP5",
+    "c132": "=EC5/DX5",
+    "c133": "=(DT5/1000)*MA5",
+    "c138": "=EF5/EG5",
+    "c141": "=EG5/DP5",
+    "c149": "=FD5+FQ5",
+    "c150": "=ES5/EQ5",
+    "c165": "=FG5/FH5",
+    "c168": "=FH5/EQ5",
+    "c176": "=GE5+GR5",
+    "c177": "=FT5/FR5",
+    "c186": "=GE5/FZ5",
+    "c187": "=(FV5/1000)*MA5",
+    "c192": "=GH5/GI5",
+    "c195": "=GI5/FR5",
+    "c203": "=HF5+HS5",
+    "c204": "=GU5/GS5",
+    "c213": "=HF5/HA5",
+    "c214": "=(GW5/1000)*MA5",
+    "c219": "=HI5/HJ5",
+    "c222": "=HJ5/GS5",
+    "c230": "=IG5+IT5",
+    "c231": "=HV5/HT5",
+    "c240": "=IG5/IB5",
+    "c241": "=(HX5/1000)*MA5",
+    "c246": "=IJ5/IK5",
+    "c249": "=IK5/HT5",
+    "c257": "=JH5+JU5",
+    "c258": "=IW5/IU5",
+    "c267": "=JH5/JC5",
+    "c268": "=(IY5/1000)*MA5",
+    "c273": "=JK5/JL5",
+    "c276": "=JL5/IU5",
+    "c311": "=LJ5+LR5",
+    "c312": "=KY5/KW5",
+    "c321": "=LJ5/LE5",
+    "c333": "=SUM(Q5,AR5,BS5,CT5,DU5,FW5,GX5,HY5,IZ5)",
+    "c334": "=SUM(P5,AQ5,BR5,CS5,DT5,FV5,GW5,HX5,IY5)",
+    "c335": "=LU5/(LU5+AC5+BD5+CE5+DF5+EG5+FH5+GI5+HJ5+IK5+JL5+LL5)",
+    "c336": "=LS5-(LV5/1000*MC5)",
+    "c337": "=SUM(T5,AU5,BV5,CW5,DX5,FC5,FZ5,HA5,IB5,JC5,LE5)",
+    "c338": "=H5/LY5",
+    "c341": "=(AB5*AI5+BC5*BJ5+CD5*CK5+DE5*DL5+EF5*EM5+FG5*FN5+GH5*GO5+HI5*HP5+IJ5*IQ5+JK5*JR5)/(AB5+BC5+CD5+DE5+EF5+FG5+GH5+HI5+IJ5+JK5)",
+    "c342": "=(MA5-MC5)/MC5"
+}

+ 8 - 5
functions/config.py

@@ -351,6 +351,7 @@ column_map = {
     "MI": "c347",
     "MJ": "c348",
     "MK": "c349",
+    "ML": "c350"
 }
 
 # 需要使用昨天的数据的表
@@ -377,13 +378,13 @@ yesterday_columns = {
 
 # 公式表
 alg_map = {
-    "c3": "=SUM(AL5,BM5,CN5,DO5,EP5,FQ5,GR5,HS5,IT5,JU5,LJ5,LR5,LS5,MW5)",
+    "c3": "=SUM(AL5,BM5,CN5,DO5,EP5,FQ5,GR5,HS5,IT5,JU5,LJ5,LR5,LS5,MX5,ME5)",
     "c4": "=C5/B5",
     "c5": "=(LU5+LB5)/B5",
     "c6": "=(AC5+BD5+CE5+DF5+EG5+FH5+GI5+HJ5+IK5+JL5)/B5",
     "c7": "=SUM(AL5,BM5,CN5,DO5,EP5,FQ5,GR5,HS5,IT5,JU5)",
-    "c8": "=LJ5+LS5",
-    "c9": "=LR5+MW5",
+    "c8": "=LJ5+LS5+ME5",
+    "c9": "=LR5+MX5",
     "c10": "=MA5",
     "c11": "=E5+F5",
     "c14": "=Y5+AL5",
@@ -405,6 +406,8 @@ alg_map = {
     "c79": "=(BR5/1000)*MA5",
     "c84": "=CD5/CE5",
     "c87": "=CE5/BN5",
+    "c90": "=CH5/CD5",
+    "c91": "=CN5/CH5",
     "c95": "=DB5+DO5",
     "c96": "=CQ5/CO5",
     "c105": "=DB5/CW5",
@@ -455,5 +458,5 @@ alg_map = {
     "c337": "=SUM(T5,AU5,BV5,CW5,DX5,FC5,FZ5,HA5,IB5,JC5,LE5)",
     "c338": "=H5/LY5",
     "c341": "=(AB5*AI5+BC5*BJ5+CD5*CK5+DE5*DL5+EF5*EM5+FG5*FN5+GH5*GO5+HI5*HP5+IJ5*IQ5+JK5*JR5)/(AB5+BC5+CD5+DE5+EF5+FG5+GH5+HI5+IJ5+JK5)",
-    "c342": "=(MA5-MC5)/MC5",
-}
+    "c342": "=(MA5-MC5)/MC5"
+}

+ 22 - 0
functions/get_alg.py

@@ -0,0 +1,22 @@
+"""
+@author: luojunhui
+从飞书表读取公式
+"""
+import json
+
+from feishu import Feishu
+
+F = Feishu(document_token="ZYNBsZ5lPhsKFltb6ghclfJqngb")
+
+config_json = {}
+w = F.search_value(sheet_id="TVBdUl", ab="A5:NA5")
+result = w['data']['valueRange']
+for index, i in enumerate(result['values'][0], 1):
+    if type(i) == str and i != "-" and i != "--":
+        print("c{}".format(index), "={}".format(i))
+        key = "c{}".format(index)
+        alg = "={}".format(i)
+        config_json[key] = alg
+
+with open('config.json', 'w') as f:
+    f.write(json.dumps(config_json, ensure_ascii=False, indent=4))

+ 21 - 0
test.py

@@ -0,0 +1,21 @@
+import time
+import schedule
+from datetime import datetime, timedelta
+
+from functions.odps_function import OdpsFunction
+
+
+def read_odps_data(date_info):
+    """
+    从 odps 读取数据
+    :return:
+    """
+    o = OdpsFunction()
+    sql = f"""select * from loghubods.okr_kd where dt = '{date_info}';"""
+    data = o.select(sql)
+    return data
+
+
+w = read_odps_data("20240403")
+print(len(w))
+print(w)