blendb issueshttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues2017-08-11T13:01:42Zhttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/34BUG: Filtro não relacionado retorna erro2017-08-11T13:01:42ZLucas Fernandes de OliveiraBUG: Filtro não relacionado retorna erroNa situação na qual o conjunto de views escolhidas é tentado aplicar um filtro sobre uma dimensão que não está nesse conjunto, exemplo uma consulta que só faz menção a dados de rede mas tem uma restrição sobre o inventário que não afeita...Na situação na qual o conjunto de views escolhidas é tentado aplicar um filtro sobre uma dimensão que não está nesse conjunto, exemplo uma consulta que só faz menção a dados de rede mas tem uma restrição sobre o inventário que não afeitaria em nada os dados retornados, com ou sem esse filtro, falha e retorna um erro quando o comportamento esperado é a anulação do filtro.
Identificar esses filtros e remove-los da lista de filtrosLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/32Adicionar mais testes ao adaptador2017-08-11T13:55:07ZLucas Fernandes de OliveiraAdicionar mais testes ao adaptadorO adaptador postgres está com cobertura muito abaixo em relação a outras áreas do BlenDB. Algumas situações deixaram de ser cobertas pelos testes com a refatoração do adaptador, por exemplo a condição na qual a agregação COUNT é feita em...O adaptador postgres está com cobertura muito abaixo em relação a outras áreas do BlenDB. Algumas situações deixaram de ser cobertas pelos testes com a refatoração do adaptador, por exemplo a condição na qual a agregação COUNT é feita em uma View que não é a origem.
Algumas situações que envolvem filtros também não são cobertas.
Criar testes para cobrir essas aréas.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/10Implementar especificação de intervalo2017-08-11T14:09:48ZLucas Fernandes de OliveiraImplementar especificação de intervaloNa API existem 2 parametros begin e end-date que especifiam o intervalo da consulta que não são levados em conta na geração das views nem das consultas.
Implementar as mudanças para que passem a funcionar adequadamente.Na API existem 2 parametros begin e end-date que especifiam o intervalo da consulta que não são levados em conta na geração das views nem das consultas.
Implementar as mudanças para que passem a funcionar adequadamente.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/31Implementar operadores >, < , >=, <= para filtros2017-08-11T14:09:48ZLucas Fernandes de OliveiraImplementar operadores >, < , >=, <= para filtrosAdicionar esses operadores, apenas para os tipos apropriados (datas, inteiros).
Além disso estudar como será feita a cobertura por essas condições.Adicionar esses operadores, apenas para os tipos apropriados (datas, inteiros).
Além disso estudar como será feita a cobertura por essas condições.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/35ConfigParser não le filtros2017-08-15T12:19:26ZLucas Fernandes de OliveiraConfigParser não le filtrosAtualmente, views adicionadas através do arquivo de configuração não podem ter filtros. Tornar isso possívelAtualmente, views adicionadas através do arquivo de configuração não podem ter filtros. Tornar isso possívelLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/37Fazer script para geração das views no banco2017-08-18T11:54:17ZLucas Fernandes de OliveiraFazer script para geração das views no bancoFazer um script que dado o arquivo de configuração do blendb Carregue uma consulta pré-definida para as views origem e utilize a engine e o adapter para criar uma materialized view para as views que não são origem dos dados.Fazer um script que dado o arquivo de configuração do blendb Carregue uma consulta pré-definida para as views origem e utilize a engine e o adapter para criar uma materialized view para as views que não são origem dos dados.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/36BUG: Em alguns casos os filtros não funcionam como o esperado2017-08-18T11:54:51ZLucas Fernandes de OliveiraBUG: Em alguns casos os filtros não funcionam como o esperadoAo tentar testes com uma única métrica, sem dimensões foi identificado um problema.
A primeira consulta, logo após o BlenDB comoçar a rodar funcionava exatamente como o esperado mas a segunda consulta não, ela retornava exatamente o me...Ao tentar testes com uma única métrica, sem dimensões foi identificado um problema.
A primeira consulta, logo após o BlenDB comoçar a rodar funcionava exatamente como o esperado mas a segunda consulta não, ela retornava exatamente o mesmo resultado da primeira, como se o filtro não tivesse sido modificado.
Não importava qual o parametro do filtro ou se havia filtro ou não, o resultado ficava travado.
Descobrir a causa e resolver o problema.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/38BUG: Filtros não relacionados devem ser relacionados2017-08-18T13:13:47ZLucas Fernandes de OliveiraBUG: Filtros não relacionados devem ser relacionadosAtualmente os filtros não relacionados são excluidos da consulta, agora eles devem ser incluidos nos vertices a serem cobertosAtualmente os filtros não relacionados são excluidos da consulta, agora eles devem ser incluidos nos vertices a serem cobertosLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/39Função de agregação MAX e MIN não foram definidas2017-08-25T11:57:51ZLucas Fernandes de OliveiraFunção de agregação MAX e MIN não foram definidasAdicionar MAX e MIN ao tipo AggregationType e adcionar nos respectilos locais necessários (ConfigParser e PostgresAdapter se não me engano)Adicionar MAX e MIN ao tipo AggregationType e adcionar nos respectilos locais necessários (ConfigParser e PostgresAdapter se não me engano)Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/40Atualizar modo como métricas, dimensões e views são referenciadas nos testes.2017-08-25T12:34:29ZLucas Fernandes de OliveiraAtualizar modo como métricas, dimensões e views são referenciadas nos testes.Durante os testes as métricas, dimensões e views são lidas e armazenadas em vetores. Até a Issue #39) isso não foi um problema, mas agora em todos os testes isso deve ser corrigido. A princio uma mudança no arquivo de scenario, que conce...Durante os testes as métricas, dimensões e views são lidas e armazenadas em vetores. Até a Issue #39) isso não foi um problema, mas agora em todos os testes isso deve ser corrigido. A princio uma mudança no arquivo de scenario, que concentra todos os testes e lê do arquivo de configuração grande parte dos dados usados nos testes deve concertar o problema. Mas ainda assim outros locais devem ser conferidos e subtitiuidos.
Encontrar referências a métricas, dimensões e views que utilizam índice e realizar a ordenação apropriada para corrigir o erro de forma mais rápida.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/28Atualizar mensagem de erro na API2017-08-25T13:17:19ZLucas Fernandes de OliveiraAtualizar mensagem de erro na APIQuando uma requisição falha pode ser por vários motivos, métrica não encontrada ou dimensão não encontrada, mas as respostas das requisições pouco informam sobre isso, apenas dizem que deu um erro. Modifica-las para serem mais informativ...Quando uma requisição falha pode ser por vários motivos, métrica não encontrada ou dimensão não encontrada, mas as respostas das requisições pouco informam sobre isso, apenas dizem que deu um erro. Modifica-las para serem mais informativas, apenas acrescentar a causa do erro na maioria dos casos deve ser o suficienteLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/42Remover referencias ao banco de dados do SIMMC2017-08-29T11:44:46ZLucas Fernandes de OliveiraRemover referencias ao banco de dados do SIMMCAs views base não são parte do blendb em si, são mais uma instância de teste, não precisam estar no repositório, remover esses arquivos e se houver outros que fazem referencia direta ao banco do SIMMCAs views base não são parte do blendb em si, são mais uma instância de teste, não precisam estar no repositório, remover esses arquivos e se houver outros que fazem referencia direta ao banco do SIMMCLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/41[BUG]: Metricas retornam resultados incorretos em alguns joins2017-09-12T14:00:54ZLucas Fernandes de Oliveira[BUG]: Metricas retornam resultados incorretos em alguns joinsEmbora o mecanismo funcione corretamente o resultado não é o esperado. O problema ocorre quando a junção das tabelas não é "perfeita". Um exemplo uma view tem os atributos met:count:point e dim:point e outra tem met:sum:download, dim:poi...Embora o mecanismo funcione corretamente o resultado não é o esperado. O problema ocorre quando a junção das tabelas não é "perfeita". Um exemplo uma view tem os atributos met:count:point e dim:point e outra tem met:sum:download, dim:point, dim:macAddr. A consulta seleciona as duas métricas, logo será feita uam junção das duas views pela dimensão dim:point que é comum entre os dois. Porém o resultado da métrica met:count:point possivelmente será incorreto.
Isso ocorre pois é muito provavel que a segunda tabela que tem mais dimensões tenha mais de uma entrada por dim:point, dessa forma ao realizar o join as entradas da primeira serão repeditas e contabilizadas mais de uma vez, resultando em um resultado incorreto.
*Proposta:* para realizar joins as views tem que ter uma relação de um para um, ou seja, as mesmas dimensões antes de fazer um join.
*Problemas:* Em alguns casos é necessário fazer junções com quantidades de dimensões diferentes.
Considere o mesmo exemplo, agora além das métricas a dim:macAddr também é selecionada, a junção com quantidade diferente de dimensões é obrigatória.
*Proposta:* Em certos casos, a partir de um ponto as métricas devem se comportar como dimensões.
A junção com outra view com quantidade de entradas maior é inevitavel, porém se met:count:point fosse uma dimensão o resultado não seria incorreto, em outras palavras se o valor fosse agrupado ao invés de agregado não seriam contabilizadas de forma errada, logo se comportária como uma dimensão.
*Proposta:*
1. Agregamos as views materializadas separadamente, com as respectivas dimensões necessárias
2. Depois da agregação é feito o join, com as dimensões restantes, que seriam as necessárias para realizar o join entre as views e as que foram escolhidas na consulta
3. Remoção das dimensões extras (usadas apenas para propósito de junção) agrupando por todos os parametros que estavam na consulta
*Problemas:*
1. Nem todas as views criadas podem ser reaproveitas para realizar outras consultas, e portanto essas não podem ser materializadas.
2. A partir do momento que um métrica tem que ser tratada como uma dimensão, ela pode ser replicada e não pode ser agregada novamente
Usando esse algoritmo a query 1 (apenas as métricas) não funcionaria, na realidade ela seria equivalente a consulta utilizando também a dim:point, para que o resultado fosse correto, as métricas teriam que ser agregadas novamente, não tratadas como dimensões, isso se deve ao fato de que a junção nesse caso poderia ter sido "perfeita", primeiro agrupando por dim:point seriam criadas views com dimensões iguais, assim elas poderiam ser juntadas normalmente e as metricas poderiam ser agregadas normalmente.
*Solução:*
As junções devem ser feitas 2 a 2, ao invés de todas ao mesmo tempo, em formato de árvore, sempre que uma junção "perfeita" foi feita em um passo, então o resultado deve ser agregado novamente removendo as dimensões de junção, se for o caso. Se a junção não for perfeita a partir desse ponto as métricas devem ser tratadas como dimensões.
1. Escolhe-se 2 views
2. Agregamos as views separadamente, com as respectivas dimensões necessárias, tanto para consulta como para joins (além das duas em questão, mas de todo o conjunto)
3. Faz-se o join das duas views
4. Se a junção foi perfeita, as métricas continuam factíveis e podem continuar sendo agregadas, caso contrário marca as métricas para que sejam tratadas como dimensões agora e a view como não-materializavel
5. Volta para o passo 1 até que reste apenas uma view
6. Se a última junção foi perfeita agrega a view com as métricas restantes (métricas marcadas para o algoritmo não são consideradas métricas)
*Problemas:*
1. Vão existir views não-materializaveis (Elas podem serr materizalizadas mas seu resultado não pode ser aproveitado por outras consultas, então é pouco desejavel materializar uma consulta dessas)
2. Muito provavelmente a consulta construída será muito menos eficiente
3. A partir do momento que um métrica tem que ser tratada como uma dimensão, ela pode ser replicada e não pode ser agregada novamente
*Resolve:*
A junção de views com quantidade de dimensões diferentes se torna possível e retorna o resutlado corretoLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/45BUG: Config Parser não le chaves de forma correta e nome de view é muito comp...2017-09-13T13:26:57ZLucas Fernandes de OliveiraBUG: Config Parser não le chaves de forma correta e nome de view é muito compridoAo invés de ler do vetor de chaves o configParser estava lendo as caves do vetir de dimensões, e a menos que as chaves estivesem na mesma posição nos dois vetores, não irá funcionar corretamente.
Ao concatenar os ids das views ao invés ...Ao invés de ler do vetor de chaves o configParser estava lendo as caves do vetir de dimensões, e a menos que as chaves estivesem na mesma posição nos dois vetores, não irá funcionar corretamente.
Ao concatenar os ids das views ao invés de refazer o hash o nome pode crescer indefinidamente, fazer hash ao invés de concatenarLucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/46Condiderar clausulas na contagem de dimensões2017-09-15T11:23:54ZLucas Fernandes de OliveiraCondiderar clausulas na contagem de dimensõesAs dimensões contidas nas clausulas também devem ser consideradas no cálculo para determinar se uma dimensão deve ser removida nesse momento ou não, também deve-se realizar a propagação das clausulas durante o processo de contrução das v...As dimensões contidas nas clausulas também devem ser consideradas no cálculo para determinar se uma dimensão deve ser removida nesse momento ou não, também deve-se realizar a propagação das clausulas durante o processo de contrução das views. Assim que uma view tem todas as dimensões contidas em uam clausula, a clausula deve ser aplicada e removida do conjunto de clausula restantes.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/16Organizar Objetos do BlenDB em um Namespace2017-09-18T11:52:23ZLucas Fernandes de OliveiraOrganizar Objetos do BlenDB em um NamespaceExistem diversas classes, interfaces organizadas em pastas dentro do BlenDB. Porém é sempre preciso passar um caminho para onde o arquivo está para importar os objetos. Criar um namespace global para o BlenDB e alguma forma de organizaçã...Existem diversas classes, interfaces organizadas em pastas dentro do BlenDB. Porém é sempre preciso passar um caminho para onde o arquivo está para importar os objetos. Criar um namespace global para o BlenDB e alguma forma de organização (provavelmente usando a arquitetura de pastas atuais). Esse namespace também será util para unir os componentes (Core, API, tests) de uma forma organizada.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/47BUG: Propagação de clausulas não considera clausulas pertencentes a view2017-09-18T12:02:29ZLucas Fernandes de OliveiraBUG: Propagação de clausulas não considera clausulas pertencentes a viewNa remoção de clausulas não cobertas, não é considerado que a view já pode conter a clausula, dessa forma dimensões desnecessaŕias podem ser mantidas desnecessáriamente.Na remoção de clausulas não cobertas, não é considerado que a view já pode conter a clausula, dessa forma dimensões desnecessaŕias podem ser mantidas desnecessáriamente.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/48Criar rotas que devolmen métricas e dimensões disponiveis2017-09-18T14:23:49ZLucas Fernandes de OliveiraCriar rotas que devolmen métricas e dimensões disponiveisCriar as rotas que devolvem quais são as métricas e dimensões diponíveis no BlenDB
Perguntas:
1. Essas rotas deverão responder apenas os nomes ou uma breve descrição (nesse caso a descrição deveria ser adicionada)Criar as rotas que devolvem quais são as métricas e dimensões diponíveis no BlenDB
Perguntas:
1. Essas rotas deverão responder apenas os nomes ou uma breve descrição (nesse caso a descrição deveria ser adicionada)Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/50Aumentar tolerancia a JOINS2017-10-04T15:52:21ZLucas Fernandes de OliveiraAumentar tolerancia a JOINSDurate os testes foi detectado qeu alguns joins que são aparentemente ilegais poderiam ser realizados, com um relaxamento das restrições.
Atualmente um join só é perfeito se as chaves de ambos os lados são iguais, pois isso garante que ...Durate os testes foi detectado qeu alguns joins que são aparentemente ilegais poderiam ser realizados, com um relaxamento das restrições.
Atualmente um join só é perfeito se as chaves de ambos os lados são iguais, pois isso garante que não há replicação da informação e aumento de métricas. Entretanto essa restrição pode ser relaxada, pode-se eliminar das chaves os atributos que estão na query. Isso pode ser feito pois esse agrupamento estará na versão "Final" quer dizer que os resultados não serão combinados. A view continua imaterializavel, mas o seu resultado (como uma consulta final) ainda pode ser usado.Lucas Fernandes de OliveiraLucas Fernandes de Oliveirahttps://gitlab.c3sl.ufpr.br/c3sl/blendb/-/issues/33Melhorar função de analise dos filtros2017-10-16T11:49:30ZLucas Fernandes de OliveiraMelhorar função de analise dos filtrosA escolha de views e agregações é limitada pelos filtros aplicados. No momento apenas se o filtro casar perfeitamente (tem que se identico) a view é escolhida. En varios casos é o suficiente (Para operadores == e !=), porém com o operado...A escolha de views e agregações é limitada pelos filtros aplicados. No momento apenas se o filtro casar perfeitamente (tem que se identico) a view é escolhida. En varios casos é o suficiente (Para operadores == e !=), porém com o operador de > por exemplo, se a restrição é de maior que 3 meses, maior que 6 meses também poderia utilizar essa view, mas isso não ocorre.
Operadores individuais parecem simples de resolver, bastaria olhar o operador do filtro e aplicar algumas comparações, entretanto quando combinados com operador OR (maior que 3 meses ou ativo) já não funciona tão bem.
Acredito que o melhor é analizar alguns casos que seriam mais úteis que e que mais ocorrem e tentar abordar esse modelo mais restrito do que acertar 100% dos casos.
Encontrar essa lista de casos e melhorar a escolha dos filtros, a principio modificar a função checkConstranits da classe graph deve ser o suficiente para aplicar as mudanças.Lucas Fernandes de OliveiraLucas Fernandes de Oliveira