... | ... | @@ -4,29 +4,29 @@ Como requisito o Blendb mantém uma lista de agregações disponíveis, e quais |
|
|
|
|
|
## Representação
|
|
|
* Cria-se um grafo direcionado
|
|
|
* Nesse grafo cada métrica e cada dimensão se transforma em um vertice
|
|
|
* Cria-se um arco de um um vertice para o outro caso eles estejam em uma mesma agregação (nesse caso será criado um arco de ida e de volta)
|
|
|
* Nesse grafo cada métrica e cada dimensão se transforma em um vértice
|
|
|
* Cria-se um arco de um vértice para o outro caso eles estejam em uma mesma agregação (nesse caso será criado um arco de ida e de volta)
|
|
|
* Arcos recebem o nome da agregação e são marcados como arcos de agregação
|
|
|
* Cria-se um arco de um vertice de dimensão para outro se o primeiro é pai do segundo
|
|
|
* Cria-se um arco de um vértice de dimensão para outro se o primeiro é pai do segundo
|
|
|
* Arcos são marcados como arcos de relação
|
|
|
* Se a agregação possui apenas uma métrica/dimensão, cria-se um arco do vertices respectivo para ele mesmo
|
|
|
* Se a agregação possui apenas uma métrica/dimensão, cria-se um arco do vértices respectivo para ele mesmo
|
|
|
* Esse arco recebe o nome da agregação e é marcado como arco de agregação
|
|
|
|
|
|
Novas agregações devem criar as respectivas conexões nesse grafo
|
|
|
|
|
|
A consulta é representada como um conjunto de vertices
|
|
|
A consulta é representada como um conjunto de vértices
|
|
|
|
|
|
## Algoritmo
|
|
|
O algoritmo utiliza o grafo que representa o banco e a consulta (vertices selecionados)
|
|
|
O algoritmo utiliza o grafo que representa o banco e a consulta (vértices selecionados)
|
|
|
|
|
|
1. Utiliza-se uma busca em largura a partir de um vertice qualquer da consulta
|
|
|
* Se a busca cobre todos os vertices da consulta ela é valida devolve a arborecencia (arvore direcionada) gerada
|
|
|
1. Utiliza-se uma busca em largura a partir de um vértice qualquer da consulta
|
|
|
* Se a busca cobre todos os vértices da consulta, ela é valida e devolve a arborescência (arvore direcionada) gerada
|
|
|
* Caso contrário a consulta é impossível, devolve erro
|
|
|
2. Todos os vertices são marcados como não selecionados
|
|
|
2. Todos os vértices são marcados como não selecionados
|
|
|
3. A partir de cada folha percorre-se o caminho até a raiz (utilizando-se o sentido inverso dos arcos)
|
|
|
* Se uma das extremidades do arco ainda não foi selecionado, ambas as extermidades são marcadas como selecionadas e se o arco é um arco de agregação, essa agregação é selecionada. Quando uma agregação é selecionada todos os vertices que ela possuí são marcados como selecionados
|
|
|
* Se uma das extremidades do arco ainda não foi selecionado, ambas as extermidades são marcadas como selecionadas e se o arco é um arco de agregação, essa agregação é selecionada. Quando uma agregação é selecionada todos os vértices que ela possui são marcados como selecionados
|
|
|
* Caso contrário nada acontece
|
|
|
3. Quando todos os vertices da consulta são selecionados, devolve-se as agregações selecionadas
|
|
|
3. Quando todos os vértices da consulta são selecionados, devolve-se as agregações selecionadas
|
|
|
|
|
|
## [Home](/)
|
|
|
* **Seleção de agregações**
|
... | ... | |