|
@@ -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()
|