def test_rank_count(self): ''' Verifica se retorna corretamente uma agregação RANK_COUNT ''' vlr = 'vl_indicador' agr = 'rank_count' result = QueryBuilder.get_agr_string(agr, vlr) expected = 'RANK() OVER(ORDER BY COUNT(vl_indicador) DESC) AS agr_rank_count_vl_indicador' self.assertEqual(result, expected)
def test_bypass(self): ''' Verifica se retorna None quando a agregação está na lista de ignore ''' vlr = 'vl_indicador' agr = 'DISTINCT' result = QueryBuilder.get_agr_string(agr, vlr) self.assertEqual(result, None)
def test_rank_dense_sum(self): ''' Verifica se retorna corretamente uma agregação RANK_DENSE_SUM ''' vlr = 'vl_indicador' agr = 'rank_dense_sum' result = QueryBuilder.get_agr_string(agr, vlr) expected = ('DENSE_RANK() OVER(ORDER BY SUM(vl_indicador) DESC) AS ' 'agr_rank_dense_sum_vl_indicador') self.assertEqual(result, expected)
def test_as_is(self): ''' Verifica se retorna corretamente uma agregação que está na lista as_is ''' vlr = 'vl_indicador' agr = 'sum' expected = 'sum(vl_indicador) AS agr_sum_vl_indicador' result = QueryBuilder.get_agr_string(agr, vlr) self.assertEqual(result, expected)
def test_custom(self): ''' Verifica se retorna corretamente uma agregação que não está na lista as_is ''' vlr = 'vl_indicador' agr = 'pct_count' result = QueryBuilder.get_agr_string(agr, vlr) expected = ('COUNT(vl_indicador) * 100 / SUM(COUNT(vl_indicador)) ' 'OVER() AS agr_pct_count_vl_indicador') self.assertEqual(result, expected)
def build_generic_agr_array(agregacao=None): ''' Prepara agregação sem campo definido ''' if agregacao is None or not agregacao: return [] result = [] for each_aggr in agregacao: agr_string = QueryBuilder.get_agr_string(each_aggr, '*') if agr_string is not None: result.append(agr_string) return result
def build_agr_array(valor=None, agregacao=None): ''' Combina a agregação com o campo de valor, para juntar nos campos da query ''' if agregacao is None or not agregacao: return [] result = [] for each_aggr in agregacao: agr_string = QueryBuilder.get_agr_string(each_aggr, valor) if agr_string is not None: result.append(agr_string) return result
def get_agr_string(agregacao, valor): ''' Proxy for Query Builder function call ''' return QueryBuilder.get_agr_string(agregacao, valor)
def get_agr_string(agregacao, valor): """ Proxy for Query Builder function call """ return QueryBuilder.get_agr_string(agregacao, valor)