Browse Source

v1——test-version上线

罗俊辉 1 year ago
parent
commit
34f0cc56ea
4 changed files with 37 additions and 69 deletions
  1. 37 16
      app.py
  2. 0 19
      create_map.py
  3. 0 28
      feishu_insert.py
  4. 0 6
      functions/config.py

+ 37 - 16
app.py

@@ -1,16 +1,20 @@
+import time
+import schedule
+import datetime
+
 from functions.odps_function import OdpsFunction
 from functions.feishu import Feishu
-from config import column_map, alg_map, yesterday_columns
+from functions.config import column_map, alg_map, yesterday_columns
 from functions.get_yesterday_data import find_yesterday_data
 
 
-def read_odps_data():
+def read_odps_data(date_info):
     """
     从 odps 读取数据
     :return:
     """
     o = OdpsFunction()
-    sql = """select * from loghubods.okr_kd where dt = '20240225';"""
+    sql = f"""select * from loghubods.okr_kd where dt = '{date_info}';"""
     data = o.select(sql)
     return data
 
@@ -25,15 +29,16 @@ def process_data(data_obj):
     temp = {}
     for key in keys:
         try:
-            temp[key] = int(data_obj[key])
+            temp[key] = round(float(data_obj[key]))
         except:
             temp[key] = data_obj[key]
     # 获取昨天的数据并且更新到 temp 中
     for column in yesterday_columns:
-        if temp[column_map[column]] != "-" or temp[column_map[column]] != "--":
-            yes_d = find_yesterday_data(column)
-            if type(yes_d) != str:
-                temp[column_map[column]] = yes_d
+        yes_d = find_yesterday_data(column)
+        if type(yes_d) != str:
+            temp[column_map[column]] = yes_d
+        # if temp[column_map[column]] != "-" or temp[column_map[column]] != "--":
+
     result = []
     for key in temp:
         if alg_map.get(key):
@@ -48,13 +53,27 @@ def process_data(data_obj):
     return result
 
 
-def insert_into_feishu(data_list):
+def main():
     """
-    插入飞书表
-    :param data_list:
-    :return:
+    main函数
+    0. 插入一行空行,用于写入数据
+    1. 先从大数据 BI 表读取数据,
+    2. 从需要读取前一天的数据中把数据读取出来,更新到 data_list 中
+    3. 把数据插入飞书表,并且把数据备份到MySQL数据表中
+    4. 定时任务更新 MySQL 表
+    :return:  None
     """
-    F = Feishu("C1Qrsa4HWh6bzEtv7aocrFlAnad")
+    F = Feishu(document_token="C1Qrsa4HWh6bzEtv7aocrFlAnad")
+    F.prepend_value(sheet_id="Zi7oYW", values=[[0]], ranges="A5:A5")
+
+    # 读数据
+    date_info = datetime.date.today().__str__().replace("-", "")
+    ori_data = read_odps_data(date_info)
+
+    # 处理元数据
+    data_list = process_data(ori_data)
+
+    # 插入飞书表
     F.insert_value(sheet_id="Zi7oYW", values=[data_list[:100]], ranges="A5:CV5")
     F.insert_value(sheet_id="Zi7oYW", values=[data_list[100:200]], ranges="CW5:GR5")
     F.insert_value(sheet_id="Zi7oYW", values=[data_list[200:300]], ranges="GS5:KN5")
@@ -62,6 +81,8 @@ def insert_into_feishu(data_list):
 
 
 if __name__ == "__main__":
-    data = read_odps_data()
-    result_list = process_data(data)
-    insert_into_feishu(result_list)
+    schedule.every().day.at("10:00").do(main)
+    while True:
+        schedule.run_pending()
+        time.sleep(1)
+    # main()

+ 0 - 19
create_map.py

@@ -1,19 +0,0 @@
-# 循环从 65 到 90(包含 90)
-import json
-
-c = []
-for i in range(65, 91):
-    # 将 ASCII 值转换为字符并打印
-    c.append(chr(i))
-w = [i for i in c]
-for i in c:
-    for j in c:
-        w.append("{}{}".format(i, j))
-
-X = w[:349]
-
-obj = {}
-for index, ite in enumerate(X, 1):
-    obj[ite] = "c{}".format(index)
-
-print(json.dumps(obj, ensure_ascii=False, indent=4))

+ 0 - 28
feishu_insert.py

@@ -1,28 +0,0 @@
-import json
-
-from functions.feishu import Feishu
-from config import alg_map
-
-if __name__ == "__main__":
-    F = Feishu("C1Qrsa4HWh6bzEtv7aocrFlAnad")
-    w = F.search_value(sheet_id="jbEcaz", ab="A6:MK6")
-    values = w["data"]["valueRange"]["values"]
-    value_list = values[0]
-    new_list = []
-    for index, item in enumerate(value_list):
-        if alg_map.get("c{}".format(index)):
-            obj = {
-                "type": "formula",
-                "text": alg_map["c{}".format(index)],
-                "number_setting": {"format": "percentage", "decimal_count": 2},
-            }
-            new_list.append(obj)
-        else:
-            new_list.append(item)
-
-    print(json.dumps(new_list, ensure_ascii=False, indent=4))
-    print(len(new_list))
-    F.insert_value(sheet_id="Zi7oYW", values=[new_list[:100]], ranges="A6:CV6")
-    F.insert_value(sheet_id="Zi7oYW", values=[new_list[100:200]], ranges="CW6:GR6")
-    F.insert_value(sheet_id="Zi7oYW", values=[new_list[200:300]], ranges="GS6:KN6")
-    F.insert_value(sheet_id="Zi7oYW", values=[new_list[300:]], ranges="KO6:MK6")

+ 0 - 6
config.py → functions/config.py

@@ -457,9 +457,3 @@ alg_map = {
     "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",
 }
-
-
-# r = {}
-# for i in alg_map:
-#     r[i] = alg_map[i].replace("6", "5")
-# print(json.dumps(r, ensure_ascii=False, indent=4))