app.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from functions.odps_function import OdpsFunction
  2. from functions.feishu import Feishu
  3. from config import column_map, alg_map, yesterday_columns
  4. from functions.get_yesterday_data import find_yesterday_data
  5. def read_odps_data():
  6. """
  7. 从 odps 读取数据
  8. :return:
  9. """
  10. o = OdpsFunction()
  11. sql = """select * from loghubods.okr_kd where dt = '20240225';"""
  12. data = o.select(sql)
  13. return data
  14. def process_data(data_obj):
  15. """
  16. 把对象数据转化为 list
  17. :param data_obj:
  18. :return:
  19. """
  20. keys = ["c{}".format(i) for i in range(1, 350)]
  21. temp = {}
  22. for key in keys:
  23. try:
  24. temp[key] = int(data_obj[key])
  25. except:
  26. temp[key] = data_obj[key]
  27. # 获取昨天的数据并且更新到 temp 中
  28. for column in yesterday_columns:
  29. if temp[column_map[column]] != "-" or temp[column_map[column]] != "--":
  30. yes_d = find_yesterday_data(column)
  31. if type(yes_d) != str:
  32. temp[column_map[column]] = yes_d
  33. result = []
  34. for key in temp:
  35. if alg_map.get(key):
  36. obj = {
  37. "type": "formula",
  38. "text": alg_map[key],
  39. "number_setting": {"format": "percentage", "decimal_count": 2},
  40. }
  41. result.append(obj)
  42. else:
  43. result.append(temp[key])
  44. return result
  45. def insert_into_feishu(data_list):
  46. """
  47. 插入飞书表
  48. :param data_list:
  49. :return:
  50. """
  51. F = Feishu("C1Qrsa4HWh6bzEtv7aocrFlAnad")
  52. F.insert_value(sheet_id="Zi7oYW", values=[data_list[:100]], ranges="A5:CV5")
  53. F.insert_value(sheet_id="Zi7oYW", values=[data_list[100:200]], ranges="CW5:GR5")
  54. F.insert_value(sheet_id="Zi7oYW", values=[data_list[200:300]], ranges="GS5:KN5")
  55. F.insert_value(sheet_id="Zi7oYW", values=[data_list[300:]], ranges="KO5:MK5")
  56. if __name__ == "__main__":
  57. data = read_odps_data()
  58. result_list = process_data(data)
  59. insert_into_feishu(result_list)