Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
blendb
blendb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 23
    • Issues 23
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 1
    • Merge Requests 1
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • C3SL
  • blendbblendb
  • Issues
  • #87

Closed
Open
Opened Aug 21, 2018 by Lucas Fernandes de Oliveira@lfoliveiraDeveloper0 of 5 tasks completed0/5 tasks
  • Report abuse
  • New issue
Report abuse New issue

Implementação de dependecia funcional para definir escopo de métricas

Pode-se ocorrer casos em que uma métrica não pode ser dividida no conjunto de métricas fornecido. Nesse caso ocorre a replicação do valor. Anteriormente acreditava-se que esse era o comportamento desejado, mas existem casos que a resposta é erronêa.

Um exemplo: Supondo que os dados de rede são coletados em nível de cidade, e uma outra métrica de inventário é coletado em nível de escola. O resultado da consulta dados de rede por escola, seria o seguinte: todas as escolas da mesma cidade apresentariam o mesmo valor, que é o total de tráfego da cidade.

Para evitar esse problema deve-se identificar quais dimensões podem ser utilizadas em conjunto com as métricas. Para isso basta utilizar a depêndencia funcional dos atributos.

A métrica deve possuir uma chave (conjunto de dimensões) e todas as dimensões são dependentes funcionais dessa chave (podem ser inferidas a partir da chave) são as dimensões que podem ser utilizadas em conjunto com a métrica.

Especificação

  • Na definição das dimensões (arquivo de configuração), deve existir um novo campo: uma lista de dimensões que podem ser utilizadas para inferir a dimensão atual
    • Se A -> C e B -> C, então em C existe uma lista com os valores [A, B]
  • Métricas devem possuir uma chave
    • A chave pode ser inferida da visão origem da métrica
    • O conjunto de dimensões dessa visão pode ser utilizado como chave
    • Deve-se adicionar a verficação de unicidade da métrica e da visão origem da métrica
  • As métricas devem conter uma lista de dimensões permitidas, para serrem utilizadas em conjunto
    • Essa lista pode ser calculada na leitura do arquivo de configuração
    • Basta criar um grafo com as informações de dependencia funcional e calcular o fecho transitivo (realizar uma busca em largura)
  • Uma vez com a lista basta verificar se a lista de dimensões é um sub-conjunto da lista de dimensões permitidas para cada uma das métricas da consulta

Implementação

  • Adicionar novo campo no arquivo de configuração para as dimensões, contendo a informação de dependencia
  • Adicionar novo campo a classe das métricas, com a lista de dimensões permitidas
  • Criar um grafo a partir das informações de dependência no momento da leitura do arquivo de configuração
  • Calcular o conjunto de dimensões permitidas por métrica, utilizando o grafo, realizando uma busca (provavelmente em, largura)
  • Modificar a API para verificar se o conjunto de dimensões é um sub-conjunto do conjunto de dimensões permitidas. Caso o conjunto seja inválido, informar o erro.
Edited Aug 22, 2018 by Lucas Fernandes de Oliveira
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
1.0
Milestone
1.0
Assign milestone
Time tracking
None
Due date
None
Reference: c3sl/blendb#87