ICMC ALLAN
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT DISTINCT conta.banco_cod, periodo.ano, sum(saldos.Saldo)
FROM
conta, periodo, saldos
WHERE
( conta.conta_cod=saldos.conta_cod ) AND ( saldos.periodo_cod=periodo.periodo_cod ) AND ( periodo.dia_ultimo_mes=1 ) AND ( periodo.mes_ultimo_ano=1 )
GROUP BY conta.banco_cod, periodo.ano
Voltando para o universo, não gostaríamos que os usuários das ferramentas do BO precisassem implementar essas regras nas suas consultas sobre universo. O cenário ideal é que o usuário precisasse simplesmente incluir as dimensões que ele deseja, incluísse a métrica de saldo e o universo se virasse para montar a consulta com as devidas regras. Isso é possível, mas antes temos de chegar ao @aggregate_aware é necessário criar as estruturas necessárias.
Vou abstrair essas regras de saldo ano e saldo mês em 2 views no banco. Elas também poderiam ser tabelas derivadas no universo, porém, para facilitar o entendimento das consultas SQL mais a frente, vou abstrair diretamente no banco. Abaixo segue o SQL das 2 views no banco:
saldos_mes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT DISTINCT conta.conta_cod, periodo.periodo_cod, sum(saldos.Saldo) as Saldo
FROM
conta, periodo, saldos
WHERE
( conta.conta_cod=saldos.conta_cod ) AND ( saldos.periodo_cod=periodo.periodo_cod ) AND ( periodo.dia_ultimo_mes = 1 )
GROUP BY conta.conta_cod, periodo.periodo_cod saldos_ano: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT DISTINCT conta.conta_cod, periodo.periodo_cod, sum(saldos.Saldo) as Saldo
FROM
conta, periodo, saldos
WHERE
( conta.conta_cod=saldos.conta_cod ) AND ( saldos.periodo_cod=periodo.periodo_cod ) AND ( periodo.dia_ultimo_mes = 1 ) AND ( periodo.mes_ultimo_ano = 1 )
GROUP BY conta.conta_cod, periodo.periodo_cod
O universo com as novas tabelas ficaria assim:
Os