(self, results, _)
Because we need to query the metrics by matching pairs, we can't query
        all of them together without having to perform some matching based on
        the name afterwards so instead we query instance by instance.
        We cache the list of instance so that we don't have to look it up every time
Because we need to query the metrics by matching pairs, we can't query
        all of them together without having to perform some matching based on
        the name afterwards so instead we query instance by instance.
        We cache the list of instance so that we don't have to look it up every time
Because we need to query the metrics by matching pairs we can t query all of them together without having to perform some matching based on the name afterwards so instead we query instance by instance . We cache the list of instance so that we don t have to look it up every time
def fetch_metric(self, results, _):
        """
        Because we need to query the metrics by matching pairs, we can't query
        all of them together without having to perform some matching based on
        the name afterwards so instead we query instance by instance.
        We cache the list of instance so that we don't have to look it up every time
        """
        if self.sql_name not in results:
            self.log.warning("Couldn't find %s in results", self.sql_name)
            return

        results_list = results[self.sql_name]
        done_instances = []
        for ndx, row in enumerate(results_list):
            ctype = row[0]
            cval = row[1]
            inst = row[2]
            object_name = row[3]

            if inst in done_instances:
                continue

            if (self.instance != ALL_INSTANCES and inst != self.instance) or (
                self.object_name and object_name != self.object_name
            ):
                done_instances.append(inst)
                continue

            # find the next row which has the same instance
            cval2 = None
            ctype2 = None
            for second_row in results_list[: ndx + 1]:
                if inst == second_row[2]:
                    cval2 = second_row[1]
                    ctype2 = second_row[0]

            if cval2 is None:
                self.log.warning("Couldn't find second value for %s", self.sql_name)
                continue
            done_instances.append(inst)
            if ctype < ctype2:
                value = cval
                base = cval2
            else:
                value = cval2
                base = cval

            metric_tags = list(self.tags)
            if self.instance == ALL_INSTANCES:
                metric_tags.append('{}:{}'.format(self.tag_by, inst.strip()))
            self.report_fraction(value, base, metric_tags)
def fetch_metric ( self , results , _ ) : if self . sql_name not in results : self . log . warning ( "Couldn't find %s in results" , self . sql_name ) return results_list = results [ self . sql_name ] done_instances = [ ] for ndx , row in enumerate ( results_list ) : ctype = row [ 0 ] cval = row [ 1 ] inst = row [ 2 ] object_name = row [ 3 ] if inst in done_instances : continue if ( self . instance != ALL_INSTANCES and inst != self . instance ) or ( self . object_name and object_name != self . object_name ) : done_instances . append ( inst ) continue # find the next row which has the same instance cval2 = None ctype2 = None for second_row in results_list [ : ndx + 1 ] : if inst == second_row [ 2 ] : cval2 = second_row [ 1 ] ctype2 = second_row [ 0 ] if cval2 is None : self . log . warning ( "Couldn't find second value for %s" , self . sql_name ) continue done_instances . append ( inst ) if ctype < ctype2 : value = cval base = cval2 else : value = cval2 base = cval metric_tags = list ( self . tags ) if self . instance == ALL_INSTANCES : metric_tags . append ( '{}:{}' . format ( self . tag_by , inst . strip ( ) ) ) self . report_fraction ( value , base , metric_tags )