def query_cross_month_site_data(self, site_id_list, starttime, endtime): if starttime[5:7] == endtime[5:7]: site_data = self.query_site_data_within_one_month(site_id_list, starttime, endtime) return site_data else: month_endtime = tu.datetime_to_string( tu.time_str_to_datetime( tu.last_day_of_a_month( tu.time_str_to_datetime(starttime))[0])) month_starttime = tu.datetime_to_string( tu.time_str_to_datetime( tu.first_day_of_a_month( tu.time_str_to_datetime(endtime))[0])) # 获取上个月子站数据 site_data_last_month = self.query_site_data_within_one_month( site_id_list, starttime, month_endtime) # 获取当月子站数据 site_data_this_month = self.query_site_data_within_one_month( site_id_list, month_starttime, endtime) # 数据合并 # 数据合并 if site_data_last_month is not None: site_data = site_data_last_month.append(site_data_this_month) else: site_data = site_data_this_month if site_data is None: raise NoneDfError('未返回df数据,可能数据库连接有异常') elif site_data.empty: raise EmptyDfError('查询数据库获取的df数据为空') return site_data
def merge_adj_data_cross_month(self, device_list, start_time, end_time): # 跨月取数时,对不同月份的数据进行合并 # 判断是否时同一个月的数据 if start_time[5:7] == end_time[5:7]: adj_data = self.query_adj_data_within_one_month( device_list, start_time, end_time) return adj_data else: # 获取上月的月末时间 month_endtime = tu.datetime_to_string( tu.time_str_to_datetime( tu.last_day_of_a_month( tu.time_str_to_datetime(start_time))[0])) month_starttime = tu.datetime_to_string( tu.time_str_to_datetime( tu.first_day_of_a_month( tu.time_str_to_datetime(end_time))[0])) # 获取上个月的adj数据 adj_data_last_month = self.query_adj_data_within_one_month( device_list, start_time, month_endtime) # 获取当月的adj数据 adj_data_this_month = self.query_adj_data_within_one_month( device_list, month_starttime, end_time) # 合并org数据 if adj_data_last_month is not None: adj_data = adj_data_last_month.append(adj_data_this_month) return adj_data else: adj_data_this_month
def merge_org_data_by_month(self, org_x, device_list, endtime, starttime=None): # 跨月取数时,对不同月份的数据进行合并,同一个org_x # 判断是否时同一个月的数据 if starttime is None or starttime[5:7] == endtime[5:7]: org_data = self.query_org_data_by_org_x( org_x, device_list, endtime, starttime) return org_data else: # 获取上月的月末时间 month_endtime = tu.datetime_to_string( tu.time_str_to_datetime( tu.last_day_of_a_month( tu.time_str_to_datetime(starttime))[0])) # 获取当月的月初时间 month_starttime = tu.datetime_to_string( tu.time_str_to_datetime( tu.first_day_of_a_month( tu.time_str_to_datetime(endtime))[0])) # 获取上个月的org数据 org_data_last_month = self.query_org_data_by_org_x( org_x, device_list, month_endtime, starttime) # 获取当月的org数据 org_data_this_month = self.query_org_data_by_org_x( org_x, device_list, endtime, month_starttime) # 合并org数据 org_data = org_data_last_month.append(org_data_this_month) return org_data