def is_runing(tb_nm, conn=None, batch_id=''): """ :param batch_id: :param tb_nm: :param conn: :return: """ if conn is None: conn = Conn() sql = """select batch_id from {log_tb_nm} where tb_nm='{tb_nm}' and start_dt>= current_timestamp-interval '3 hour' and batch_stat=0""" sql = sql.format(log_tb_nm=tb_task_log, tb_nm=tb_nm) flag = conn.query_one(sql) # pd.read_sql(sql, conn) times = 0 while flag: logger.warning("%s在执行中本次执行开始等待,等待第%s次" % (tb_nm, times)) send_error_msg("batch_id:%s的作业%s一直在执行中本批次%s等待,请确认是否有执行故障" % (flag, batch_id, tb_nm), tb_nm, if_to_wx=False) time.sleep(300) # 等待5分钟 times += 1 flag = conn.query_one(sql) if flag and times > 3: logger.error("%s一直在执行中,请确认是否产生故障。此次执行报错" % tb_nm) raise Exception("%s一直在执行中,请确认是否产生故障。此次执行报错" % tb_nm) return False
def get_from_dim_date(batch_dt, col_nm): """ 返回清算的时间 仅对海银清算时间 :param batch_dt:日期 :param col_nm: 指定的字段 :return: """ sql = """ SELECT {col_nm} from dw.dim_date where dt_id='{batch_dt}' """.format(batch_dt=batch_dt, col_nm=col_nm) dps = Conn("DPS") try: rs = dps.query_one(sql) return rs except Exception as e: str(e) return None
def get_rpt_dtm(batch_dt, dtm_type): """ 返回清算的时间 仅对海银清算时间 :param batch_dt:日期 :param dtm_type: -- 取上次报表结束时间 cvrt_typ: last_rpt_end_dtm -- 取今天报表结束时间 cvrt_typ: tdy_rpt_end_dtm -- 取下一个工作日 cvrt_typ: nxt_workday -- 取季度的第一天 cvrt_typ: quar_start -- 取下个季度的第一天 cvrt_typ: quar_end :return: """ if dtm_type in [ 'last_rpt_end_dtm', 'tdy_rpt_end_dtm', 'nxt_workday', 'quar_start', 'quar_end' ]: sql = """ SELECT dw.cvrt_dt('{batch_dt}', '{dtm_type}') AS dt -- 上个工作日报表结束时间 """.format(batch_dt=batch_dt, dtm_type=dtm_type) dps = Conn("DPS") return dps.query_one(sql) else: return None