Controle de transformações
Construção das agregações a partir das fontes.
- A construção de uma agregação é a construção de suas métricas e dimensões a partir dos campos de uma fonte.
- Para cada registro na fonte será gerado um único registro na agregação.
- A construção de uma métrica ou dimensão é o resultado de uma expressão dos campos da fonte e de constantes
Para resolver o problema será necessário:
- Alteração do arquivo de configuração. Transformações devem estart no arquivo de configuração
- Criação de um parser para verificar a validade das expressões de construção
- Tradução das transformações pelos adaptadores
- Definição de uma técnica de atualização
Sugestões para solucionar os tópicos acima:
- Adição de um campo transformers na definição da agregação. Esse campo será uma lista com identificadores de transformações que são usados para criar essa agregação
-
Adição de uma novo campo no nível 0 do arquivo de configuração chamado transformers. Esse campo contém uma lista de definição de transformações. Uma transformação pode ser definida por:
- name: nome/identificador da transformação (utilizado na definição da agregação)
- source: fonte na qual a transformação é aplicada
-
dimensions: objeto onde cada chave é uma dimenção criada pela transformação
- Uma dimensão é definida como uma lista de condições seguidas de expressões
- A propósta é utilziar essa lista como um CASE/WHEN de SQL
-
metrics: objeto onde cada chave é uma métrica criada pela transformação
- Uma métricas é definida como uma lista de condições seguidas de expressões
- A propósta é utilziar essa lista como um CASE/WHEN de SQL
- Utilização do pacote sintax-cli para criação de um parser de expressões. A principal função do parser é validar as expressões e devolver os tipos (int, float, bool, ...) das expressões para validação
-
Criação de uma nova variável de ambiente para definir a politica de atualização, chamada BLENDB_UPDATE
- Para a primeira versão está sendo considerado que existira uma única política de atualização para o Blendb todo
- Outras alternativas seriam uma politica para cada transformer ou para cada fonte
- Há duas politicas propóstas. Temporal, a cada X tempo é realizada a transformação. Frequência, a cada X inserções é realizada a transformação.
- Adição de uma função no adaptador (abstrato) para aplicação de transformações