Pela pela IBM:
Determinant é um modo de prover controle sobre granularidade.
Quando utilizar:
- Joins in multiplos níveis de granularidade em uma única query.
Um exemplo bastante comum é o de uma Dimensão de Tempo. As vezes precisamos fazer joins com fatos em nível dia e outras em nível mês. Joins em níveis multiplos podem gerar informações duplicada, pois no caso de dia e mês a informações de mês se repetirá para cada dia deste. - Campos BLOB em query.
Consultas sobre campos BLOB necessitam de informações que pode ser adicionadas nos determinants.
Exemplo:
Ano | Mes | Dia | Data |
2011 | 05 | 2011-05-01 | 1 de Maio de 2011 |
2011 | 05 | 2011-05-02 | 2 de Maio de 2011 |
Vamos supor que preciso trazer informações da Fato Notas Fiscal, que é diária, nesse caso meu join seria pela própria data ou ID da dimensão.
Numa segunda consulta preciso trazer informações da Fato de Orçamento, está é mensal, logo esse join seria por Ano + Mes.
Agora vamos imaginar o caso real, preciso ver se minhas vendas estão atingindo as metas de orçamento, logo vou juntar duas fatos numa consulta, mas cada uma tem uma nivel de granulariade diferente, como impedir a duplicação dos dados?
Podemos criar os seguintes determinants.
Name | Key | Attributes | Uniquely Identified | Group By |
Ano | Ano | Nenhum | Não | Sim |
Mes | Ano, Mes | Nenhum | Não | Sim |
Dia | Dia | Data | Sim | Não |
*É importante lembrar que para os determinantes funcionarem é preciso ter um join nos campos deste.
Então temos 3 determinants, um para cada nível da dimensão. Não é necessário criar um determinante para cada nível das dimensões, apenas para os que fazem joins.
Repare que no nível mês, não temos um campo que identifica os registros unicamente, então temos que colocar o Ano e Mês como chave.
Na prática o determinante criará um uma sub-consulta na dimensão agrupando os dados pelos campos chave e utilizando a função MIN nos campos atributos.
Isso reolve o problema.
Como sempre, em caso de dúvidas, e-mail.!!
Repare que no nível mês, não temos um campo que identifica os registros unicamente, então temos que colocar o Ano e Mês como chave.
Na prática o determinante criará um uma sub-consulta na dimensão agrupando os dados pelos campos chave e utilizando a função MIN nos campos atributos.
Isso reolve o problema.
Como sempre, em caso de dúvidas, e-mail.!!
Nenhum comentário:
Postar um comentário