def drop_metric_data_mode(model): try: drop_sql = 'drop table t_tracking_metric_{}'.format(model) DB.execute_sql(drop_sql) stat_logger.info(drop_sql) return drop_sql except Exception as e: stat_logger.exception(e) raise e
def delete_metric_data_from_db(metric_info): try: job_id = metric_info['job_id'] metric_info.pop('job_id') delete_sql = 'delete from t_tracking_metric_{} where f_job_id="{}"'.format( job_id[:8], job_id) for k, v in metric_info.items(): if hasattr(TrackingMetric, "f_" + k): connect_str = " and f_" delete_sql = delete_sql + connect_str + k + '="{}"'.format(v) DB.execute_sql(delete_sql) stat_logger.info(delete_sql) return delete_sql except Exception as e: stat_logger.exception(e) raise e
def get_metric_list(self, job_level: bool = False): with DB.connection_context(): metrics = dict() query_sql = 'select distinct f_metric_namespace, f_metric_name from t_tracking_metric_{} where ' \ 'f_job_id = "{}" and f_component_name = "{}" and f_role = "{}" and f_party_id = "{}" ' \ 'and f_task_id = "{}"'.format( self.get_table_index(), self.job_id, self.component_name if not job_level else 'dag', self.role, self.party_id, self.task_id) cursor = DB.execute_sql(query_sql) for row in cursor.fetchall(): metrics[row[0]] = metrics.get(row[0], []) metrics[row[0]].append(row[1]) return metrics
def read_data_from_db(self, metric_namespace: str, metric_name: str, data_type, job_level=False): with DB.connection_context(): metrics = [] try: query_sql = 'select f_key, f_value from t_tracking_metric_{} where ' \ 'f_job_id = "{}" and f_component_name = "{}" and f_role = "{}" and f_party_id = "{}"' \ 'and f_task_id = "{}" and f_metric_namespace = "{}" and f_metric_name= "{}" and f_type="{}" order by f_id'.format( self.get_table_index(), self.job_id, self.component_name if not job_level else 'dag', self.role, self.party_id, self.task_id, metric_namespace, metric_name, data_type) cursor = DB.execute_sql(query_sql) for row in cursor.fetchall(): yield deserialize_b64(row[0]), deserialize_b64(row[1]) except Exception as e: schedule_logger(self.job_id).exception(e) return metrics