(self, counter_name)
return sql_type, base_name
Return the type of the performance counter so that we can report it to
        Datadog correctly
        If the sql_type is one that needs a base (PERF_RAW_LARGE_FRACTION and
        PERF_AVERAGE_BULK), the name of the base counter will also be returned
Return the type of the performance counter so that we can report it to
        Datadog correctly
        If the sql_type is one that needs a base (PERF_RAW_LARGE_FRACTION and
        PERF_AVERAGE_BULK), the name of the base counter will also be returned
Return the type of the performance counter so that we can report it to Datadog correctly If the sql_type is one that needs a base ( PERF_RAW_LARGE_FRACTION and PERF_AVERAGE_BULK ) the name of the base counter will also be returned
def get_sql_type(self, counter_name):
        """
        Return the type of the performance counter so that we can report it to
        Datadog correctly
        If the sql_type is one that needs a base (PERF_RAW_LARGE_FRACTION and
        PERF_AVERAGE_BULK), the name of the base counter will also be returned
        """
        with self.connection.get_managed_cursor() as cursor:
            cursor.execute(COUNTER_TYPE_QUERY, (counter_name,))
            (sql_type,) = cursor.fetchone()
            if sql_type == PERF_LARGE_RAW_BASE:
                self.log.warning("Metric %s is of type Base and shouldn't be reported this way", counter_name)
            base_name = None
            if sql_type in [PERF_AVERAGE_BULK, PERF_RAW_LARGE_FRACTION]:
                # This is an ugly hack. For certains type of metric (PERF_RAW_LARGE_FRACTION
                # and PERF_AVERAGE_BULK), we need two metrics: the metrics specified and
                # a base metrics to get the ratio. There is no unique schema so we generate
                # the possible candidates and we look at which ones exist in the db.
                candidates = (
                    counter_name + " base",
                    counter_name.replace("(ms)", "base"),
                    counter_name.replace("Avg ", "") + " base",
                )
                try:
                    cursor.execute(BASE_NAME_QUERY, candidates)
                    base_name = cursor.fetchone().counter_name.strip()
                    self.log.debug("Got base metric: %s for metric: %s", base_name, counter_name)
                except Exception as e:
                    self.log.warning("Could not get counter_name of base for metric: %s", e)

        return sql_type, base_name
def get_sql_type ( self , counter_name ) : with self . connection . get_managed_cursor ( ) as cursor : cursor . execute ( COUNTER_TYPE_QUERY , ( counter_name , ) ) ( sql_type , ) = cursor . fetchone ( ) if sql_type == PERF_LARGE_RAW_BASE : self . log . warning ( "Metric %s is of type Base and shouldn't be reported this way" , counter_name ) base_name = None if sql_type in [ PERF_AVERAGE_BULK , PERF_RAW_LARGE_FRACTION ] : # This is an ugly hack. For certains type of metric (PERF_RAW_LARGE_FRACTION # and PERF_AVERAGE_BULK), we need two metrics: the metrics specified and # a base metrics to get the ratio. There is no unique schema so we generate # the possible candidates and we look at which ones exist in the db. candidates = ( counter_name + " base" , counter_name . replace ( "(ms)" , "base" ) , counter_name . replace ( "Avg " , "" ) + " base" , ) try : cursor . execute ( BASE_NAME_QUERY , candidates ) base_name = cursor . fetchone ( ) . counter_name . strip ( ) self . log . debug ( "Got base metric: %s for metric: %s" , base_name , counter_name ) except Exception as e : self . log . warning ( "Could not get counter_name of base for metric: %s" , e ) return sql_type , base_name